@ cssints/ reveal (英语)
输入动画 点缀打开 @cssints/运动预设, 作为两个链
成员 cssints/plugin scope()数字 :
reveal()正在滚动..驱动: 元素将入口滚动到视图时运行, 打开animation-timeline: view()财务报告和审定财务报表animation-range所以卷轴把它擦干净 本着 超音速插件 财务报告和审定财务报表 放松点,js,由浏览器进行工作.appear()正在滚动..触发: 卷轴只决定 何时 一个正常的,基于时间的动画剧,在timeline-trigger+ 键animation-trigger。它保持自己的持续时间和放松,所以慢卷轴无法拉伸 进入。 情况是 tilbend 关于 CSS 动画触发器的文章。 。 。 .
如果目标缺少一个成员继续运行的特性,则在元素进入时,一个0.4 kB的脚本播放同一动画一次.
import { cn, hover } from "cssints" with { type: "cssints" };
import { appear, reveal } from "@cssints/reveal" with { type: "cssints" };
// scroll-driven: the scroll scrubs it
export const fade = reveal();
export const card = reveal()
.preset("slide-in-up")
.range("entry 0% entry 100%")
.duration("500ms")
.easing("linear");
export const tile = cn(reveal().preset("blur-in"), hover(reveal().duration("1s")));
// scroll-triggered: it plays once on entry, with its own time
export const lede = appear().preset("slide-in-up").duration("600ms").easing("linear");
export const band = appear().preset("fade-in").inOut();
国家安全局 reveal() (单位:千美元)fade 财务报告和审定财务报表 card 上文:
@layer _.k {
@keyframes kf-7f473efd {
from {
opacity: var(--motion-o);
translate: var(--motion-x) var(--motion-y);
scale: var(--motion-s);
filter: blur(var(--motion-b));
}
}
@keyframes kf-4f766ef7 {
from {
opacity: var(--motion-o);
}
}
._reveal-core {
animation: var(--reveal-k) var(--reveal-d) var(--reveal-e) both;
animation-range: var(--reveal-g);
--reveal-k: kf-7f473efd;
--reveal-rk: kf-4f766ef7;
--reveal-d: 300ms;
--reveal-e: ease-out;
--reveal-g: entry 0% cover 40%;
--motion-o: 0;
--motion-x: 0;
--motion-y: 0;
--motion-s: 1;
--motion-b: 0;
animation-timeline: view();
}
@media (prefers-reduced-motion: reduce) {
._reveal-core {
animation-name: var(--reveal-rk);
}
}
/* only when a target lacks scroll-driven animations */
@supports not (animation-timeline: view()) {
[data-reveal] ._reveal-core:not([data-reveal-in]) {
animation-play-state: paused;
}
}
}
@layer _.a {
._1a9p5a9 {
--motion-y: 25%;
}
._yorqor {
--reveal-g: entry 0% entry 100%;
}
._k4abtq {
--reveal-d: 500ms;
}
/* ... */
}
国家安全局 appear() (单位:千美元)lede 财务报告和审定财务报表 band 上文:
@layer _.k {
/* motion's keyframes, the two rules reveal() names too (one pair for the page) */
._reveal-enter {
animation: var(--reveal-enter-k) var(--reveal-enter-d) var(--reveal-enter-e) both;
timeline-trigger: --reveal-t view() var(--reveal-enter-g);
--reveal-enter-k: kf-7f473efd;
--reveal-enter-rk: kf-4f766ef7;
--reveal-enter-d: 300ms;
--reveal-enter-e: ease-out;
--reveal-enter-g: entry 100% exit 0%;
--reveal-enter: play-once;
--reveal-leave: none;
--motion-o: 0;
--motion-x: 0;
--motion-y: 0;
--motion-s: 1;
--motion-b: 0;
animation-trigger: --reveal-t var(--reveal-enter) var(--reveal-leave);
trigger-scope: --reveal-t;
}
@media (prefers-reduced-motion: reduce) {
._reveal-enter {
animation-name: var(--reveal-enter-rk);
}
}
/* only when a target lacks animation triggers */
@supports not (animation-trigger: none) {
[data-reveal] ._reveal-enter:not([data-reveal-in]) {
animation-play-state: paused;
}
}
}
@layer _.a {
._5mnsmm {
--reveal-enter: play-forwards;
}
._67iv7r {
--reveal-leave: play-backwards;
}
._1a9p5a9 {
--motion-y: 25%;
}
._knj5bv {
--motion-o: 0;
}
._oflqj4 {
--reveal-enter-e: linear;
}
._rsl9nu {
--reveal-enter-d: 600ms;
}
}
规则
- 方法,每一次,任何顺序,所有可选:
preset(name)(单位:千美元)fade-in, (中文(简体) ),range(<'animation-range'>)(单位:千美元)entry 0% cover 40%页:1reveal(), (中文(简体) ),entry 100% exit 0%页:1appear(), (中文(简体) ),duration(<time [0s,∞]>)(300ms)和 (中文(简体) )easing(<easing-function>)(单位:千美元)ease-out) (中文(简体) ). 每个类别都是一个设定自定义属性的类别,所以一个方法在一种 条件. reveal()。 。 。 . 如果时间线是本地的,则范围决定动画运行时间和卷轴驱动时间(背面) (放松也适用于被抹去的进展).appear()。 。 。 . 范围是 激活 触发范围: 元素已完全插入entry 100%,所以请 动画在那里播放,而不是在它进入时播放。 动画就翻了duration()与easing()随便 卷轴是。 默认动作是play-once none:它演奏一次并停留,这是入口想要的—— 以及倒计时者所做的一切.inOut()套装play-forwards play-backwards,所以它发挥回 当 元素叶 (当触发器是本地的).- 预设 是运动的入口预设:
fade-in, (中文(简体) ),slide-in-up, (中文(简体) ),slide-in-down, (中文(简体) ),slide-in-left, (中文(简体) ),slide-in-right, (中文(简体) ),scale-in, (中文(简体) ),blur-in编辑-out其中一个不是:倒计时只能当一个元素进入时播放. - 复用动相. 两位委员都点名动议
motionKeyframes.in财务报告和审定财务报表motionKeyframes.reducedIn,所以规则是 movement 的内核, 打印过一次无论使用过多少样式, 一个预设设置了这些密钥框读取的值 动议presets提案名称下的表格motionVars) (中文(简体) ). 只有每个成员自己的财产是自己的名:appear()这是--reveal-enter-*,因为reveal()'"内核宣布范围"的简称(--reveal-k财务报告和审定财务报表 一个范围的两个内核可能不能共享其中的一个。 一个瞄准镜可能会重复另一个瞄准镜拥有的名称——即: 他们俩是怎样设定的--motion-*这样啊motion(), (中文(简体) ),reveal()财务报告和审定财务报表appear()可以坐在一页. trigger-scope需要时间. 触发器名称是内核的(--reveal-t)和各类股份的每个要素 它; 没有trigger-scope: --reveal-t,文档中最后一个元素将驱动每张卡片。 用它,两个盒子 自动触发(在Chrome 156中检查)。 一页上的两种不同的样式不会碰撞 或:每个内核都有自己的名字.- 减少运动. 下
prefers-reduced-motion: reduce每个内核运行不透明唯一的密钥框架(运动规则): 滑动、缩放或模糊会在同一范围或触发处消失. - 一个内核,写作风格. 这个
animation简写重排animation-timeline财务报告和审定财务报表animation-trigger页:1 内核在长手之前打印出一个短手,所以旁边的宣告是取胜的. - 冲突.
reveal()财务报告和审定财务报表appear()设定动画: acn()拥有一个和一个animation*属性为 a 构建错误, 来源于内核 :cssints: reveal: kernel enter sets animation, timeline-trigger, animation-trigger, trigger-scope, animation-name (this style also sets animation-duration)。 。 。 . - 错误 语法,在类型和建设时间:
reveal.preset: unexpected "fade-out" in "fade-out", expected fade-in | ..., (中文(简体) ),appear.range: unexpected "sideways" in "entry 0% sideways"。 。 。 .
浏览器
- 原产地.
reveal():Chrome 115,Safari 26 (由滚动驱动的动画,css.properties.animation-timeline财务报告和审定财务报表animation-range); Firefox 把它们只放在一面旗帜后.appear(): Chrome 146, Edge 146, Opera 130 (单位:千美元)css.properties.animation-trigger, (中文(简体) ),timeline-trigger财务报告和审定财务报表trigger-scope); Firefox和Safari没有动画 触发今天。 CSS动画触发器是Interop 2027的候选. - 倒地者. 当浏览器列表目标缺少成员运行的功能时,构建会添加成员的功能
@supports not规则上到工作表(对于所有目标都保留在工作表之外),以及内核 声明不给出支持警告:运行时间会填充它们。 剧本,@cssints/reveal/runtime,来 它: 每个运行时间条目命名它( q)script),因此使用reveal()进口到virtual:cssints/runtime/reveal.io和一个使用appear()结束virtual:cssints/runtime/reveal.io-appear· ; 每一个目标都有其特征时都是空的。 没什么可以手动进口的. - 1个剧本,2个大门. 在浏览器中,脚本在两种特性都起作用的地方不起作用. 门打开了
CSS.supports("animation-timeline:view()")页:1reveal()财务报告和审定财务报表CSS.supports("animation-trigger:none")页:1appear()标记 :<html data-reveal>(规则将每个倒回动画放在第一帧)和IntersectionObserver给定元素data-reveal-in当它进入了一次播放键框的取景口时, 结束duration()A级MutationObserver捡起后来添加的元素. 605字节已精密化,369克兹;没有进口. - 倒计时等于
appear()'默认. 进入时玩一次就是play-once none,关于Firefox和 萨法里appear()不需要额外的行为; 它不能恢复运行( e)inOut(),或对 卷轴. - 何不来个多份的. flacker 的卷轴时间线多填充 刷新
动画与本地时间轴一样, 但它大约是 61 kB (17 kB gzip) , 改写样式表并运行
每个卷轴。 一个入口是一发: 进入时播放一次是大多数网站想要的, 花费1/50字节和
每个卷轴都没什么 代价是背负者没有被洗刷而忽略
range()。 。 。 . - 没有脚本,一个缺少这个功能的目标在负载上播放动画,因为
motion()将: 无保留 藏起来. - 在Chrome 156(内在触发和强制倒置),Firefox 157(倒置)和WebKit 27.2(
显示本地时间线, 倒计时
appear():bun run test:browsers。 。 。 .
限制
- 将目标混为一谈(默认浏览器列表),脚本将传送到每个浏览器,并只在浏览器中查找 特性是本地的.
- 后退不遵循范围,滚动方向或离开取景口的元素:它演奏一次. 一个 元素在文档中获取类后(未随其添加),不显示.
- 在脚本运行之前,折叠下方的一款动画可能开始播放;它被暂停位置,并在进入时恢复.
脚本使用第一个模块运行
reveal()或者说appear()。 。 。 . - 无
motion(), (中文(简体) ),reveal()财务报告和审定财务报表appear()可放在一个要素上:animation,这两个 一种风格的内核拒绝( n)kernels ... both set animation) (中文(简体) ). 在一页里,他们分享了 运动的键框和习惯 属性. - 触发器在动画元素本身上. 一个高高的会触发孩子的部分是用手写的:
css.timelineTrigger()财务报告和审定财务报表css.animationTrigger()内容,以及css.animationTrigger()关于孩子。 A 类 单独触发元素和 a.from("--name")方法被推迟. - 输入只预设, 每个元素一个; 对于卷轴上的退出, 将动画写入
animationTimeline("view()")财务报告和审定财务报表animationRange("exit ...")你自己来.
cd packages/reveal && bun run test # fixtures through the engine (output by targets, runtime modules, conflicts, errors)
cd packages/reveal && bun run test:browsers # Chrome, Firefox and WebKit through playwright-core
贷项
本着 超音速插件 (麻省理工学院,Alex Illarionov)和 放松点,js (麻省理工学院,Alex Fox). 预设是 @cssints/运动对 没有复制代码 .