打造丝滑滚动体验:Scroll-driven Animations 正式上线!

🌀 打造丝滑滚动体验:Scroll-driven Animations 正式上线!

🚨 告别 JS 手动监听滚动条,CSS 新能力让你用两行代码实现高级滚动动效。

🔍 什么是 Scroll-driven Animations?

Scroll-driven animations(基于滚动的动画)是 CSS Animation 最新草案的一部分。它允许你直接在 CSS 中根据页面滚动进度驱动动画,无需 JavaScript

由 Chrome 团队推动,目前已在 Chromium 系浏览器中可用(Chrome 115+)。

🎯 为什么值得关注?

传统方式Scroll-driven Animations
监听 scroll 事件 + 手动计算✅ CSS 声明式写法
使用 JS 设置 transform/style✅ 浏览器原生优化
滚动与动画不同步、卡顿问题✅ 完美同步、硬件加速

✅ 性能更好 ✅ 写法更简洁 ✅ 更可组合


🧪 实战示例:滚动时淡入卡片列表

🖼️ 直接先上效果图!

scroll

💡 具体实现

<!-- HTML -->
<section class="container"><div class="card">Card 1</div><div class="card">Card 2</div><div class="card">Card 3</div>
</section>
// css @keyframes fade-in {  from { opacity: 0; transform: translateY(30px); }  to   { opacity: 1; transform: translateY(0); }
}
.section {  animation-name: fade-in;// 核心实现部分!animation-timeline: view();animation-range: entry 0% cover 30%;animation-fill-mode: both;
}.card {opacity: 0;transform: translateY(40px);animation-name: fade-in;animation-timeline: view();animation-range: entry 0% cover 40%;animation-fill-mode: both;animation-duration: 1s;}

🧠 核心知识点拆解

animation-timeline: view();

绑定当前元素可见区域与滚动相关的时间线。

animation-range

控制动画触发的起始与结束时机:

entry 0%       // 元素开始进入视口的时刻
cover 30%      // 元素在视口中显示 30% 的时刻
animation-fill-mode: both

确保动画前后状态都保留,避免一闪而过。

🔍 浏览器会根据 .card 元素进入视口的进度,平滑播放动画。

📦 更多时间线类型

cssanimation-timeline: scroll(root block);
用于绑定整个滚动区域(类似 parallax 效果)。
cssanimation-timeline: view();
用于绑定单个元素进入/离开视口的过程。

🌐 浏览器兼容性

浏览器支持情况
✅ Chrome完整支持(115+)
✅ Edge支持
🔶 Safari正在开发中
❌ Firefox尚未支持

📚 延伸阅读

  • 官方 MDN 文档
  • Chrome DevRel 介绍文章
  • CSS Tricks 深度解析

✨ 总结

Scroll-driven Animations 正式宣告:
滚动动画进入声明式时代
你再也不需要手动写 scroll 监听器,也无需用 JS 操作样式。
只需几行 CSS,就能实现视差滚动、延迟加载、进度动画等视觉效果。

赶紧打开 Chrome DevTools 开始尝试吧,下一代动效方案,你准备好了吗?

👍 如果你觉得这篇文章有帮助,欢迎点赞、收藏,让更多人了解 CSS 的新能力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/84931.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

知识体系_研究模型_价格敏感度测试模型(PSM)

1 概述 价格敏感度测试模型(Price Sensitivity Measurement,PSM) ,通过调研潜在用户对于不同价格的满意或接受程度,从而制定出合适的产品价格。 价格敏感度PSM模型的分析一般分为以下几个步骤: (1)确定多个价格 (2)通过一定的方式(通常是问卷)收集目标客户对不同价…

C++11函数封装器 std::function

✅ 1. 什么是 std::function std::function 是 C11 引入的标准库工具&#xff0c;是一个通用的函数封装器&#xff0c;可以包装以下任意可调用对象&#xff1a; 普通函数Lambda 表达式函数指针成员函数指针函数对象&#xff08;也叫仿函数&#xff0c;定义了 operator() 的类…

centos系统docker配置`milvus-standalone`教程

本人使用的是京东云服务器docker配置milvus 参考教程&#xff1a;https://blog.csdn.net/withme977/article/details/137270087 需要注意&#xff1a;虚拟机安装pymilvus和docker安装milvus版本需要对应&#xff0c;否则会出现connection失败问题 查看虚拟机pymilvus版本&…

AI for 数据分析:技术演进与应用实践

一、AI 数据分析的核心定义与技术演进 概念延伸&#xff1a;从传统分析到智能分析 传统数据分析工作&#xff0c;主要依赖人工使用 Excel、SPSS 等统计工具进行建模与分析。这种方式不仅效率较低&#xff0c;而且对专业人员的依赖度极高。而 AI 驱动的数据分析则借助机器学习…

stm32 f103c8t6仿真 串口收发测试

C8T6串口概述 STM32F103C8T6微控制器包含3个串口模块&#xff1a; USART1 (高级串口) USART2 USART3 (部分型号可能标记为UART3) 引脚分布图 USART1 (串口1) 基本特性 类型&#xff1a;全功能USART(通用同步异步收发器) 通信模式&#xff1a; 全双工异步通信 单线半…

语言特性适用的场景:卫星、火箭控制系统用什么开发语言?

核心飞行控制系统开发语言 卫星、火箭及相关航天系统的软件开发对可靠性、实时性、安全性有极高要求&#xff0c;因此语言选择需严格匹配这些需求。以下是航天领域常用的编程语言及其应用场景分析&#xff1a; 一、核心飞行控制与嵌入式系统&#xff1a;C、C、Ada 航天器的核…

AI for Science:智能科技如何重塑科学研究

AI与科学研究的邂逅 人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;作为一门致力于模拟人类智能的交叉学科&#xff0c;近年来已经从实验室走向现实世界的各个角落&#xff0c;而科学研究领域正是其最具变革潜力的舞台之一。AI的核心在于通过算法…

项目三 - 任务7:开发名片管理系统

在本次项目三的任务7中&#xff0c;我们成功开发了一个功能全面的名片管理系统。该系统采用Java语言&#xff0c;基于MVC&#xff08;模型-视图-控制器&#xff09;架构模式&#xff0c;实现了用户登录、名片的增删改查等核心功能。通过设计Card类来封装名片信息&#xff0c;Ca…

MySQL 8.0 OCP 英文题库解析(十八)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题161~170 试题1…

leetcode_503 下一个更大元素

1. 题意 在一个循环数组中&#xff0c;找到下一个比它大的数。 2. 题解 也不知道怎么就单调栈了&#xff0c;可能是刷出来的吧。。。 还是来解释一下吧&#xff01;&#xff01;&#xff01; 如果有新元素入栈 c c c&#xff0c; 那么在栈内的元素只要小于新元素的 s s s…

在postgresql中,group by时取第一个值

在postgresql中,group by时,uuid类型的字段可以用哪个聚集函数: SELECT create_user , (array_agg(myid))[1] AS first_uuid FROM "t_resource_data" GROUP BY create_user 人大金仓、PostgreSQL使用GROUP BY聚合后&#xff0c;取第一个值或最后一个值的办_pgsql gro…

【FineDance】ModuleNotFoundError: No module named ‘pytorch3d‘

pytorch3d Traceback (most recent call last): File “/home/zhangbin/perfwork/01_ai/13_FineDance/data/code/pre_motion.py”, line 12, in from dataset.quaternion import ax_to_6v, ax_from_6v File “/home/zhangbin/perfwork/01_ai/13_FineDance/dataset/quaternion.…

MySQL 调优笔记

1.如何定位慢查询? 定位慢查询主要依靠 MySQL 的慢查询日志配合工具如 pt-query-digest &#xff0c;mysqldumpslow 进行分析&#xff0c;或者通过 performance_schema 进行实时监控&#xff0c;进一步可以使用 EXPLAIN 分析执行计划。 -> 开启慢查询日志 -- 查看慢查询…

嵌入式 STM32 开发问题:烧录 STM32CubeMX 创建的 Keil 程序没有反应

烧录 STM32CubeMX 创建的 Keil 程序没有反应问题原因 大概率是因为没有勾选 Reset and Run&#xff0c;程序成功烧录到&#xff0c;但芯片不会自动复位并执行&#xff0c;而是保持停止状态 处理策略 在 Keil 中勾选 Reset and Run 点击 【Options for Target】 点击 【Debu…

Flower框架中noise_multiplier与clipped_count_stddev的关系

noise_multiplier 与 clipped_count_stddev 的数学关系 在差分隐私联邦学习中&#xff0c;noise_multiplier 和 clipped_count_stddev 是两个核心参数&#xff0c;它们共同决定了隐私保护强度和模型精度的权衡。理解它们的关系需要从差分隐私的数学原理入手&#xff1a; 1. 高…

Laravel 从版本 5 到 12 每个版本都引入了一些新的特性、改进和弃用的功能

Laravel 从版本 5 到 12 经历了多次更新,每个版本都引入了一些新的特性、改进和弃用的功能。下面是这些主要版本之间的关键区别: Laravel 5 Lumen: 引入了微框架 Lumen。Elixir: Elixir 是一个用于编译和合并前端资源的工具,后来被 Laravel Mix 取代。Middleware Groups: 引…

Lambda 表达式的语法与使用:更简洁、更灵活的函数式编程!

全文目录&#xff1a; 开篇语Lambda 表达式的语法与使用&#xff1a;更简洁、更灵活的函数式编程一、Lambda 表达式的语法1.1 Lambda 表达式的基本语法形式 二、Lambda 表达式的使用2.1 Lambda 表达式与匿名内部类的对比代码示例&#xff1a;使用匿名内部类和 Lambda 表达式实现…

从0到1开发一个自己的工具 MCP 并发布到 test PyPi(Python个人版)

目录 1. 我理解的 MCP2. 写一个自己的MCP然后发布到 PyPi 上&#xff0c;包括加法工具和获取当前 ip 工具2.1 先碎碎念一下 uv2.2 初始化项目&#xff08;全程在 cmd 下运行命令&#xff09;2.3 添加 mcp 依赖2.4 添加 server.py&#xff0c;先把加法功能添加上2.5 运行并测试加…

RabbitMQ缓存详解:由来、发展、核心场景与实战应用

一、RabbitMQ的由来与发展历程 1.1 RabbitMQ的诞生背景 RabbitMQ诞生于金融行业的需求,最初由Rabbit Technologies Ltd开发,后被SpringSource收购,最终成为Pivotal的一部分。它的设计初衷是为了解决分布式系统中消息可靠传输的问题。在早期金融交易系统中,系统间的通信需…

机器学习与深度学习18-线性代数01

目录 前文回顾1.特征向量和特征值2.矩阵与模型3.内积和外积4.向量的范数5.正交矩阵 前文回顾 上一篇文章地址&#xff1a;链接 1.特征向量和特征值 在机器学习中&#xff0c;特征向量和特征值是用于描述数据集中的特征或变量之间关系的重要概念。它们在降维技术&#xff08;…