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

CSS 滚动驱动动画 view-timeline-inset

  • view-timeline-inset
    • 语法
    • 例子🌰
        • scroll-padding 为正
        • 正的 length
        • 正的 percentage
        • scroll-padding 为负
        • 负的 length
        • 负的 percentage
    • 兼容性

view-timeline-inset

在使用 view() 时说过, 元素在滚动容器的可见性推动了 view progress timeline 的进展. 默认情况是元素即将出现在滚动容器时, timeline0%, 当 A 完全离开滚动元素时, timeline100%.

有时我们想调整过程, 比如让时间线早点开始或者早点结束, 换句话就是元素从什么位置开始是可见的, 从什么位置之后是不可见的, 这时就是 view-timeline-inset 大放异彩的时候了.

语法

可以是一个值或两个值, 值可以是 auto, 长度值或百分比值.

  • auto: (默认值)即偏移量是 0. 有的浏览器可能使用启发式的方法决定默认值. 实际上 auto 使用的是 scroll-padding 的值, 但是 scroll-padding 默认为 0, 所以 auto 就默认为 0.
  • 长度或百分比:
    • 正值: 如果值是正数, 元素可见和不可见的边界就会从默认位置向移动.
    • 负值: 如果值是负数, 元素可见和不可见的边界就会从默认位置向移动.
    • 📖 如果是这种值, 就会覆盖 scroll-padding

如果是两个值, 那么第一个值是元素可见边界的偏移, 第二个值是元素不可见边界的偏移. 如果是一个值, 那么开始和结束位置的偏移都是它.

例子🌰

先来看默认, 也就是 auto 的情况.

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

在这里插入图片描述

scroll-padding 为正
scroll-padding: 2em;

可以看到和前一个例子不同的是, 当元素出现 2em 后才开始动画, 到距离离开位置 2em 时动画就完成了

在这里插入图片描述

正的 length
.box {animation: appear1 linear both;/* animation-timeline: view(); */animation-timeline: --why-is-this;view-timeline: --why-is-this;
}
.positive-inset-length {view-timeline-inset: var(--length);
}

📖 在开始之前, 我发现 view()view-timeline-inset 好像不对付, 两个属性在一块后者死活不生效, 但是我查了一圈也没查出来个所以然.
在这里插入图片描述

我很好奇, 如果高度设置的足够大, 大到开始位置是原来结束的位置, 结束的位置反过来到开始的位置会怎么样?
在这里插入图片描述

结果就是动画反过来了, 之前的情况是消失到出现, 现在是出现到消失.

在这里插入图片描述

正的 percentage

percentage 显然是根据滚动轴来算的, 例子中的情况是 y 轴滚动, 那么就是按高度来算, 200px * 20% = 40px
在这里插入图片描述

scroll-padding 为负

🙅‍♂️🙅‍♂️ 负值没有效果, 相当于 0.

负的 length
view-timeline-inset: -3em;

发现, 当元素开始出现时它已经有了宽度, 当它要消失时, 动画还没有结束. 我截图了它最大宽度作为对比.

在这里插入图片描述

负的 percentage
view-timeline-inset: -40%;

在这里插入图片描述

兼容性

在这里插入图片描述

大家假期快乐~谢谢你看到这里😊

http://www.lryc.cn/news/183775.html

相关文章:

  • ansible部署二进制k8s
  • Nginx限流熔断
  • QQ登录的具体流程
  • 用JMeter对HTTP接口进行压测(一)压测脚本的书写、调试思路
  • 接着聊聊如何从binlog文件恢复误delete的数据,模拟Oracle的闪回功能
  • 计算机竞赛 深度学习机器视觉车道线识别与检测 -自动驾驶
  • pyqt5使用经验总结
  • 【MQTT】mosquitto库中SSL/TLS相关API接口
  • 假期题目整合
  • Redisson—分布式服务
  • volatile使用方法
  • 提升您的 Go 应用性能的 6 种方法
  • 计算摄像技术02 - 颜色空间
  • Pytorch笔记之分类
  • 【目标检测】——PE-YOLO精读
  • Java 数组转集合
  • Elasticsearch:ES|QL 查询语言简介
  • qt qml中listview出现卡顿情况时的常用处理方法
  • Elasticsearch基础操作演示总结
  • Spring 作用域解析器AnnotationScopeMetadataResolver
  • 如何发布一个 NPM 包
  • Flask小项目教程(含MySQL与前端部分)
  • Eureka
  • STM32G070RBT6-MCU温度测量(ADC)
  • 数据结构之带头双向循环链表
  • adb详细教程(四)-使用adb启动应用、关闭应用、清空应用数据、获取设备已安装应用列表
  • 【Spring Boot】日志文件
  • 图像处理与计算机视觉--第五章-图像分割-Canny算子
  • LabVIEW开发教学实验室自动化INL和DNL测试系统
  • 数据结构: 数组与链表