CSS之变量(三)心形加载条

简介: CSS之变量(三)心形加载条

前言


上一章,我们通过应用css变量而更好了完成了一个条形加载条的效果,更加简化了代码量,并使它变得更好维护了。今天呢,我们在通过css变量实现另一个有意思的东西 -- 心形加载条。


心形加载条


先看效果图:


image.png


观察动画我们分析,


  • 对称的两个直线的动画是相同的,区别在于animation-delay,所以通过变量来动态传入即可。通过两根对角线相加等于10的规律我们可以得出, 对角线公式:对角线 = 10 - index
  • 直线颜色的渐变,可以通过filter的 hue-rotate的实现。


代码实现


<div class="heart-loading">
  <ul style="--line-count: 9">
    <li v-for="v in 9" :key="v" :class="`line-${v}`" :style="`--line-index: ${v}`"></li>
  </ul>
</div>
复制代码


.heart-loading {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 200px;
  height: 200px;
  ul {
    display: flex;
    justify-content: space-between;
    width: 150px;
    height: 10px;
  }
  li {
    $turn: calc(var(--line-index) / var(--line-count) * .5turn);
    $time: calc(var(--line-index) * 40ms);
    border-radius: 5px;
    width: 10px;
    height: 10px;
    background-color: pink;
    filter: hue-rotate($turn);
    animation: 1s $time infinite;
    &.line-1,
    &.line-9 {
      animation-name: beat-1;
    }
    &.line-2,
    &.line-8 {
      animation-name: beat-2;
    }
    &.line-3,
    &.line-7 {
      animation-name: beat-3;
    }
    &.line-4,
    &.line-6 {
      animation-name: beat-4;
    }
    &.line-5 {
      animation-name: beat-5;
    }
  }
}
@keyframes beat-1 {
  0%,
  10%,
  90%,
  100% {
    height: 10px;
  }
  45%,
  55% {
    height: 30px;
    transform: translate3d(0, -15px, 0);
  }
}
@keyframes beat-2 {
  0%,
  10%,
  90%,
  100% {
    height: 10px;
  }
  45%,
  55% {
    height: 60px;
    transform: translate3d(0, -30px, 0);
  }
}
@keyframes beat-3 {
  0%,
  10%,
  90%,
  100% {
    height: 10px;
  }
  45%,
  55% {
    height: 80px;
    transform: translate3d(0, -40px, 0);
  }
}
@keyframes beat-4 {
  0%,
  10%,
  90%,
  100% {
    height: 10px;
  }
  45%,
  55% {
    height: 90px;
    transform: translate3d(0, -30px, 0);
  }
}
@keyframes beat-5 {
  0%,
  10%,
  90%,
  100% {
    height: 10px;
  }
  45%,
  55% {
    height: 90px;
    transform: translate3d(0, -20px, 0);
  }
}
复制代码


好,今天就到这里了,今天努力的你依然是最棒的,Bye Bye!!!

相关文章
|
4月前
|
前端开发 开发者
CSS变量,也被称为CSS自定义属性或级联变量
【4月更文挑战第7天】CSS变量,也被称为CSS自定义属性或级联变量
43 3
|
27天前
|
前端开发 JavaScript Linux
【Azure 应用服务】在Azure App Service for Linux环境中,部署的Django应用,出现加载css、js等静态资源文件失败
【Azure 应用服务】在Azure App Service for Linux环境中,部署的Django应用,出现加载css、js等静态资源文件失败
|
3月前
|
前端开发 JavaScript 开发者
CSS进阶-CSS变量
【6月更文挑战第13天】本文介绍了CSS变量(Custom Properties)的基本概念、应用场景和常见问题。通过声明与使用示例,展示了如何定义和引用变量。文章讨论了兼容性、作用域、错误引用及JavaScript交互等易错点,并提供了相应的解决方案。此外,还分享了实践技巧,如模块化色彩系统、响应式设计和动画制作。通过学习,开发者能更好地利用CSS变量提高样式灵活性和维护性。
38 3
|
2月前
|
前端开发
css特效动画——转圈的加载动画
css特效动画——转圈的加载动画
30 0
|
2月前
|
前端开发 JavaScript 编译器
如何在CSS中写变量?一文带你了解前端样式利器
如何在CSS中写变量?一文带你了解前端样式利器
38 0
|
2月前
|
前端开发
css实用技巧——异步加载图片时,在图片完成加载前,鼠标悬浮到占位图片上时显示图片的alt信息
css实用技巧——异步加载图片时,在图片完成加载前,鼠标悬浮到占位图片上时显示图片的alt信息
18 0
|
4月前
|
存储 前端开发 JavaScript
css的变量和自定义变量概念
css的变量和自定义变量概念
|
4月前
|
前端开发 UED
【专栏:工具与技巧篇】CSS Sprites 与图标字体:优化网页图标加载
【4月更文挑战第30天】本文探讨了网页图标优化的两种方法:CSS Sprites和图标字体。CSS Sprites通过合并图标减少HTTP请求,提高加载速度,但维护复杂;图标字体则提供良好扩展性和定制性,易于调整大小和颜色。两者各有优劣,适用于不同场景。在实际应用中,应结合使用,根据项目需求灵活选择,以实现最佳性能优化和用户体验。
53 1
|
4月前
|
前端开发
【专栏:CSS进阶篇】CSS变量与预处理器(Sass/Less)
【4月更文挑战第30天】本文探讨了CSS变量和预处理器Sass的使用,以提升开发效率和代码可维护性。CSS变量通过--*语法定义,可在文档范围内重用,减少冗余,提高可维护性。Sass预处理器引入了变量、嵌套规则、混合和函数等特性,使CSS编写更简洁、可维护。Sass变量使用$符号定义,支持嵌套规则和混合,如定义border-radius混合以减少重复代码。Sass的高级功能使其成为强大工具。
106 0
|
4月前
|
存储 缓存 前端开发
link 与 @import:CSS 样式表的加载策略(下)
link 与 @import:CSS 样式表的加载策略(下)