当前位置: 首页 > article >正文

CSS 滚动驱动动画与 @keyframes 新语法

CSS 滚动驱动动画与 @keyframes

CSS 滚动驱动动画相关的属性出来之后, @keyframes 也迎来变化.

以前, @keyframes 的值可以是 from, to, 或者百分数. 现在它多了一种属性的值 <timeline-range-name> <percentage>

建议先了解 animation-range 不然你会对 timeline-range-name 感到陌生.

例子

我们先看看在新语法出现之前怎么写的. 我们用 from(也就是 0%) 表示动画开始祯, to(100%) 表示动画结束祯

<div class="scroller">
  Lorem ...
  <div class="box"></div>
  Lorem ....
</div>
.scroller {
  height: 250px;
  overflow: auto;
}
.box {
  animation: grow both;
  animation-timeline: view();
}
@keyframes grow {
  from {
    transform: scaleX(0);
  }
  to {
    transform: scaleX(1);
  }
}

scroll-animation1.gif

如何使用新语法呢? 你会发现 from 其实对应的就是 entry 0% 的位置, to 对应的是 exit 100% 的位置, 于是

@keyframes grow {
  entry 0% {
    transform: scaleX(0);
  }
  exit 100% {
    transform: scaleX(1);
  }
}

📖 <timeline-range-name> 后面的百分比不能省略.

scroll-animation2.gif

另一种 animation-range 的实现

有了新的语法, 我们大胆尝试通过 @keyframes 修改关键帧, 来达到修改 animation-range 的想法. 比如我希望实现 animation-range: entry

.box {
  animation: grow both;
  animation-timeline: view();
}
@keyframes grow {
  entry 0% {
    transform: scaleX(0);
  }
  entry 100% {
    transform: scaleX(1);
  }
}

scroll-animation3.gif

因为 animation-range 是一个简写属性, 包括 animation-range-startanimation-range-end, 所以我们也可以在 @keyframes 中指定两组不同的关键帧, 分别对应 animation-range-startanimation-range-end.

@keyframes grow {
  entry 0% {
    transform: scaleX(0);
  }
  entry 100% {
    transform: scaleX(1);
  }
  exit 0% {
    transform: scaleX(1);
  }
  exit 100% {
    transform: scaleX(2);
  }
}

请大家注意动图右下角的代码

scroll-animation4.gif

谢谢你看到这里😊


http://www.kler.cn/news/106932.html

相关文章:

  • 406. 根据身高重建队列
  • 毅速丨哪些金属材料在3D打印中应用最多
  • 【跟小嘉学 Rust 编程】三十三、Rust的Web开发框架之一: Actix-Web的基础
  • 基于机器视觉的二维码识别检测 - opencv 二维码 识别检测 机器视觉 计算机竞赛
  • Java操作符
  • R语言入门看这一章就够了(上)
  • SQL查询优化---如何查询截取分析
  • C++之特殊类的设计
  • MATLAB中polyvalm函数用法
  • Java零基础入门-关系运算符
  • Splunk 之 filed 恢复
  • unity面试八股文 - 常用工具与算法
  • Map集合 遍历:lambda方式
  • 计算机视觉的相机选型
  • 力扣labuladong——一刷day09
  • 通过阿里云创建accessKeyId和accessKeySecret
  • 线程池的理解
  • 字符串与基本类型之间的相互转换
  • vue2组件库-上传组件
  • 框架安全-CVE 复现SpringStrutsLaravelThinkPHP漏洞复现
  • Peter算法小课堂—归并排序
  • 【Linux】安装与配置虚拟机及虚拟机服务器坏境配置与连接
  • LibreOffice编辑excel文档如何在单元格中输入手动换行符
  • 如何中断一个正在运行的线程?
  • Java关于实例对象调用静态变量和静态方法问题
  • ue5 右击.uproject generator vs project file 错误
  • VM虚拟机的安装与配置及操作系统的安装
  • [RISC-V]verilog
  • DeepSpeed: 大模型训练框架 | 京东云技术团队
  • 【DOCKER】