• 记录--CSS 滚动驱动动画 scroll()


    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助

    CSS 滚动驱动动画 scroll()

    animation-timeline 通过 scroll() 指定可滚动元素与滚动轴来为容器动画提供一个匿名的 scroll progress timeline.

    通过元素在顶部和底部(或左边和右边)的滚动推进 scroll progress timeline. 并且元素滚动的位置会被转换为百分比, 滚动开始被转化为 0%, 滚动结束被转化为 100%

    如果 scroll() 指定的滚动轴不包含滚动条, 也就是元素在滚动轴的方向不可滚动, 那么 timeline 的进度为 0%.

    语法

    scroll() 可以接受两个参数

    • 滚动元素: 滚动元素提供 scroll progress timeline. 可以取值
      • nearest: (默认值)设置 animation-timeline 元素最近的、具有滚动条的祖先元素.
      • root: 文档的根元素, 即 元素
      • self: 设置 animation-timeline 的元素自身
    • 滚动轴:
      • y: 垂直滚动轴
      • x: 水平滚动轴
      • block: (默认值)与滚动容器中行内文本方向垂直的轴. 对于从左到右书写的文字, 与 y 相同. 对于从上到下书写的文字, 与 x 相同.
      • inline: 与滚动容器中行内文本方向水平的轴. 对于从左到右书写的文字, 与 x 相同. 对于从上到下书写的文字, 与 y 相同.

    这两个参数的书写顺序没有要求, 但是参数之间没有逗号, 这一点我一定要强调, 因为 translate 这个函数的参数就需要有逗号!!!

    实例

    正常举例

    下面以背景渐变举例, 并且滚动容器就是元素自身.

    1. @keyframes bg-color {
    2. from {
    3. background-color: lightpink;
    4. }
    5. to {
    6. background-color: lightskyblue;
    7. }
    8. }
    9. .box {
    10. width: 200px;
    11. height: 300px;
    12. border: 1px solid #bbb;
    13. overflow: auto;
    14. animation: bg-color linear;
    15. animation-timeline: scroll(self);
    16. }

     如果我们加上下面的代码, 改变文字书写方向, 从上到下, 从左到右

    html { writing-mode: vertical-lr; }
    

    最近滚动祖先?

    来看一个例子, 这个例子出现了问题, 为什么动画没有效果呢? 📖注意这里我们使用了两个非 static 定位的元素.

    1. <div class="relative">
    2. <div class="scroll">
    3. <div class="absolute"></div>
    4. </div>
    5. </div>
    1. .relative {
    2. position: relative;
    3. }
    4. .absolute {
    5. position: absolute;
    6. animation: bg-color linear;
    7. animation-timeline: scroll();
    8. }
    9. .scroll {
    10. height: 200px;
    11. overflow: auto;
    12. }

    为什么元素在滚动时背景没有变化呢? scroll() 不是寻找最近滚动祖先元素吗? 是的, 但是在寻找最近祖先元素时 这个祖先元素必须可以影响其位置和大小. 因为元素是 absolute, 那么可以影响其位置和大小的祖先元素显然不是 .scroll 而是 .relative.

    本文转载于:

    https://juejin.cn/post/7274555781486673977

    如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

     

  • 相关阅读:
    常用的分布式ID解决方案原理解析
    基于锁相环的直流电机控制系统simulink仿真
    17:57:54.359 [main] WARN com.baomidou.mybatisplus.generator.IDatabaseQuery$D
    数论 --- 欧拉函数、筛法求欧拉函数、欧拉定理、费马小定理详细证明
    C++异常处理的优缺点[重要]
    【QT开发笔记-基础篇】| 第四章 事件QEvent | 4.4 鼠标按下、移动、释放事件
    Windows下的Elasticsearch-head安装
    公网服务器磁盘空间不足,怎么将自己闲置的设备利用起来?
    Python中的科学计算和数学建模
    3个轻量级物联网新品实验,带您深度体验IoT开发
  • 原文地址:https://blog.csdn.net/qq_40716795/article/details/132706316