CSS 滚动驱动动画 timeline-scope
- timeline-scope
- 语法
- 兼容性
timeline-scope
看到 scope 就知道这个属性是和
范围有关, 没错,timeline-scope就是用来修改一个具名时间线(named animation timeline)的范围.
我们介绍过的两种时间线 scroll progress timeline 和 view progress timeline, 使用这两种时间线(通过 view(), scroll(), 或者具名时间线)的元素都需要向上查询 DOM 树找到滚动容器, 这就是时间线的默认范围.
可是有时驱动元素 A 动画可能是 A 的兄弟元素 B 的滚动, 我们应该怎么办呢?
- 在
A上使用animation-timeline表示需要一个具名时间线来驱动动画, 比如--whatever-this - 在
B元素上使用scroll-timeline-name: --whatever-this表示由B元素来提供时间线. - 最后, 在
A和B的共同祖先P上使用timeline-scope: --whatever-this表示时间线范围提升到P和P的任何后代元素上.
来看例子
📖 我特意没有在两个 div 之间换行, 为了避免换行的出现
<div class="p"><div class="a"></div><div class="b">Lorem...</div>
</div>
.p {height: 200px;timeline-scope: --i-am-here;
}
.p > div {width: 50%; /** 为了避免渲染换行符导致宽度不够 */height: 100%;display: inline-block;
}
.a {animation: grow both;animation-timeline: --i-am-here;
}
.b {overflow: auto;scroll-timeline-name: --i-am-here;
}
@keyframes grow {from {transform: scale(0);}to {transform: scale(1);}
}
可以看到效果, 驱动左侧动画的不再是其父元素, 而是其兄弟元素, 从而大大提高了设计使用动画的灵活性.

语法
这个属性的值可以是
none: 默认值, 表示时间线范围没有变化.dashed-ident: 和scroll-timeline-name或view-timeline-name值相同. 这会导致时间线范围扩大到设置timeline-scope的元素和其所有后代.
写下来我们看下 view progress timeline 的效果
<div class="p"><div class="a"></div><div class="b">Lorem ...<div class="box"></div>Lorem ...</div>
</div>
/* 大部分都和前面的一样, 不过我们修改了 .b 并增加了 .box */
.b {overflow: auto;/* scroll-timeline-name: --i-am-here; */
}
.b .box {view-timeline-name: --i-am-here;
}
从下图很容易就看出, 这次驱动左侧动画的是右侧的 .box 元素, 当 .box 开始出现时, 左侧动画进行; 当 .box 完全离开时, 动画结束. 📖注意动画结束时, 右侧的还没有滚动到最后, 说明这次的动画不是由 scroll progress timeline 驱动而是由 view progress timeline 驱动. 这当然显而易见, 因为代码中 scroll progress timeline 的部分被注释了.

📖这里需要再强调 view-timeline-name 需要定义在动画元素上, 而不是滚动容器上.
我们可以让右边的元素也动起来吗? 当然
.b .box {view-timeline-name: --i-am-here;animation: grow both;animation-timeline: --i-am-here;
}

兼容性

谢谢你看到这里😊
相关文章:
CSS 滚动驱动动画 timeline-scope
timeline-scope 语法兼容性 timeline-scope 看到 scope 就知道这个属性是和范围有关, 没错, timeline-scope 就是用来修改一个具名时间线(named animation timeline)的范围. 我们介绍过的两种时间线 scroll progress timeline 和 view progress timeline, 使用这两种时间线(通…...
R语言时间序列分析
目录 概述 1、什么是时间序列分析 2、时间序列分析的应用 时间序列的基本操作...
房产中介小程序,二手房小程序带H5公众号,房产门户PC版,房产中介,房产经纪人
套餐一:源码=1500 套餐二:全包服务 包服务器+APP+认证小程序+H5+PC+采集=2000(全包服务三年) 可以封装打包APP 一、付费发布信息 支持付费发布、刷新、置顶房源信息; 二、个人发布信息 支持个人和房产经纪人发布房源信息; 三、新房楼盘模块 支持新房楼盘功能,后台添加…...
Docker 部署
1 完全清除旧版本docker for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; doneImages, containers, volumes, and networks stored in /var/lib/docker/ arent automatically removed when y…...
ffmpeg推流+nginx转发+拉流(RTMP拉流)
参考:https://blog.csdn.net/weixin_43796767/article/details/117307845 1.搭建支持rtmp转发的nginx服务 git clone https://github.com/arut/nginx-rtmp-module wget http://nginx.org/download/nginx-1.8.0.tar.gz tar -xvf nginx-1.8.0.tar.gz cd nginx-1.8.0/ ./confi…...
【Python第三方包】解析和生成二维码(pyqrcode包)
文章目录 前言一、安装pyqrcode包二、生成二维码2.1 二维码生成基础使用2.2 自定义二维码样式颜色设置错误纠正级别尺寸设置三、解析二维码总结前言 在现代信息时代,二维码(QR码)已经成为了快速传递信息的常见方式。Python提供了多种第三方包,用于生成和解析二维码。其中,…...
自适应键盘高度
自适应系统键盘 背景代码demo 背景 键盘高度无法获取,倒是输入框抖动问题 代码 设置 android:windowSoftInputMode“adjustNothing” public class KeyBoardHelper {private static final String TAG "KeyBoardHeightHelper";private PopupWindow po…...
【JavaEE】计算机是如何工作的
计算机是如何工作的 冯诺依曼体系操作系统操作系统的概念与定位进程和任务操作系统对进程的管理PCB 的相关信息 冯诺依曼体系 现代的大多数计算机, 都遵循冯诺依曼体系 CPU 中央处理器: 进行算术运算和逻辑判断存储器: 分为外存和内存, 用于存储数据(使用二进制方式存储)输入…...
12JVM基础
五、JVM 17、JVM基础 说一下堆栈的区别? 功能方面:堆是用来存放对象的,栈是用来执行程序的。 共享性:堆是线程共享的,栈是线程私有的。 空间大小:堆大小远远大于栈。队列和栈是什么?有什么区别…...
07 创建型模式-单例模式
1.单例模式介绍 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,此模式保证 某个类在运行期间,只有一个实例对外提供服务,而这个类被称为单例类。 2.使用单例模式要做的两件事 保证一个类只有一个实例…...
RunnerGo 支持UI自动化的测试平台
RunnerGo提供从API管理到API性能再到可视化的API自动化、UI自动化测试功能模块,覆盖了整个产品测试周期。 RunnerGo UI自动化基于Selenium浏览器自动化方案构建,内嵌高度可复用的测试脚本,测试团队无需复杂的代码编写即可开展低代码的自动化…...
LLM ReAct: 将推理和行为相结合的通用范式 学习记录
LLM ReAct 什么是ReAct? LLM ReAct 是一种将推理和行为相结合的通用范式,可以让大型语言模型(LLM)根据逻辑推理(Reason),构建完整系列行动(Act),从而达成期望目标。LLM ReAct 可以应用于多种语言和决策任务,例如问答、事实验证、交互式决策等,提高了 LLM 的效率、…...
聊聊分布式架构08——SpringBoot开启微服务时代
目录 微服务架构时代 快速入门 入门详解 SpringBoot的自动配置 石器时代:XML配置bean 青铜时代:SpringConfig 铁器时代:AutoConfigurationImportSelector 手写简单Starter SpringApplication启动原理 微服务架构时代 Spring Boot的…...
Vue项目中集成TinyMCE富文本编辑器(图片批量上传等)
TinyMCE富文本在Vue中的使用 关于TinyMCE 实现效果 安装使用TinyMCE 第一步 第二步 1.官网申请Your Tiny API Key,并且配置访问域名: 2.使用css隐藏(这个就不讲了,不推荐使用) 3.全部由本地加载(推荐) 第三步(汉化包) 第四步(封装组…...
前端数据可视化之【title、legend、tooltip、toolbox 】配置项
目录 🌟Echarts配置项🌟Echarts配置项之 title组件🌟Echarts配置项之 legend组件🌟Echarts配置项之 tooltip组件🌟Echarts配置项之 toolbox组件🌟写在最后 🌟Echarts配置项 ECharts开源来自百度…...
microcom串口调试工具使用
microcom串口助手使用介绍 microcom是一个在终端中使用的串口助手,类似平常使用SSCOM一样的东西,不过是在终端中使用而已。 使用的是busybox构建的文件系统 microcom源码路径:busybox/miscutils/microcom.c microcom 参数: [r…...
深入了解Golang:基本语法与核心特性解析
1. 引言 Golang(Go)是谷歌开发的一门开源编程语言,于2007年首次公开亮相,随后在2012年正式发布。Golang以其简洁、高效和可靠的设计而备受开发者青睐。作为一门编译型语言,Golang具有静态类型和垃圾回收功能ÿ…...
短视频矩阵系统源码---php搭建
一、智能剪辑、矩阵分发、无人直播、爆款文案于一体独立应用开发 抖去推----主要针对本地生活的----移动端(小程序软件系统,目前是全国源头独立开发),开发功能大拆解分享,功能大拆解: (1)数据概览&#x…...
mysql 查询表字段名,注释 , 以及sql拼接查询出的内容
#sql查询字段名,注释操作拼接 #查询字段名和注释 select COLUMN_NAME,COLUMN_COMMENT from information_schema.COLUMNS where table_name 表名 and table_schema 库名 order by ordinal_position #查询整个内容 select * from information_schema.COLUMNS wh…...
【JavaEE】_Servlet API
目录 1. HttpServlet 1.1 init方法 1.2 destroy方法 1.3 service方法 1.4 Servlet的生命周期 1.5 代码示例 1.5.1 使用postman构造请求 1.5.2 使用ajax构造请求 2. HttpServletRequest 2.1 核心方法 2.2 代码示例1:打印请求信息 3. 前端给后端传参 3.1…...
Top-K流检测算法TowerSketch与FPGA加速实践
1. 网络流量Top-K流检测的核心价值与挑战在网络流量分析领域,识别流量最大的K个数据流(Top-K流)是一项基础但关键的技术。这项技术就像交通监控系统中的"热点路段识别",能帮助网络管理员快速定位那些消耗大量带宽的关键…...
Arthas增强版athas:Java线上诊断工具的一键部署与生产级实践
1. 项目概述:一个Java诊断工具的深度探索最近在排查一个线上Java应用的性能瓶颈时,我又一次用到了Arthas。这个由阿里巴巴开源的Java诊断工具,几乎成了我们团队解决线上问题的“瑞士军刀”。但今天想聊的,不是Arthas本身ÿ…...
解码AMD处理器底层控制:从硬件黑盒到透明调优的演化之路
解码AMD处理器底层控制:从硬件黑盒到透明调优的演化之路 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://…...
JD-GUI插件开发终极指南:5大扩展点深度解析与实战
JD-GUI插件开发终极指南:5大扩展点深度解析与实战 【免费下载链接】jd-gui A standalone Java Decompiler GUI 项目地址: https://gitcode.com/gh_mirrors/jd/jd-gui JD-GUI作为一款强大的Java反编译工具,其真正的威力在于其可扩展的插件架构。本…...
R3nzSkin国服换肤工具:三步实现英雄联盟全皮肤自由
R3nzSkin国服换肤工具:三步实现英雄联盟全皮肤自由 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server 想要体验英雄联盟所有皮肤却受限于预算&…...
从一根烧掉的射频功放管说起:聊聊阻抗不匹配的‘血泪史’与Smith圆图避坑指南
从一根烧掉的射频功放管说起:聊聊阻抗不匹配的‘血泪史’与Smith圆图避坑指南 那是一个周五的深夜,实验室里弥漫着焦糊味。当我盯着示波器上消失的信号波形,拆开散热器看到发黑的功放管时,才真正理解教科书上那句"阻抗匹配是…...
oh-my-codex:基于命令行的个人代码片段管理器,提升开发效率
1. 项目概述与核心价值最近在整理个人知识库和代码片段时,发现了一个让我眼前一亮的开源项目:Yeachan-Heo/oh-my-codex。作为一个长期与代码打交道的开发者,我们都有过类似的痛点:辛辛苦苦写出来的、解决特定问题的代码片段&#…...
Phi-4-mini-flash-reasoning部署指南:Web工作台一键启用长文本推理
Phi-4-mini-flash-reasoning部署指南:Web工作台一键启用长文本推理 1. 模型介绍 Phi-4-mini-flash-reasoning 是一款专为复杂推理任务优化的轻量级文本模型,特别适合需要多步思考和分析的场景。不同于常规的文本生成模型,它更擅长ÿ…...
在嵌入式设备上实现AES-128-CBC:资源受限环境下的C语言加密方案
嵌入式设备上的AES-128-CBC加密实战:从原理到极致优化 在智能门锁的电路板上,一颗只有32KB内存的STM32芯片正在安静地执行着加密任务——这是我在去年参与的一个物联网项目中最具挑战性的场景。当我们需要在如此有限的资源下实现安全通信时,A…...
VSCode日志实时过滤与智能告警(Log Monitor Pro 2.4新特性首发):支持正则分组提取+阈值触发Shell脚本
更多请点击: https://intelliparadigm.com 第一章:VSCode日志插件教程 安装与启用日志查看插件 在 VSCode 中高效分析应用日志,推荐使用官方认证的 Log File Highlighter 或轻量级的 Log Viewer。打开扩展视图(CtrlShiftX&…...
