CSS Contain 属性演示 - 观察布局/样式/尺寸限制效果
应用 contain 的各种值(layout, paint, size),直观对比开启前后渲染和布局的变化。
UD5工具箱
颜色平滑过渡,浏览器在色彩空间中插值
syntax: '<color>'
颜色突然跳变,浏览器在关键帧之间离散切换
未注册的自定义属性
@property 是 CSS Houdini API 的一部分,允许开发者在 CSS 中显式定义自定义属性(CSS 变量)的语法类型、继承行为和初始值。通过为自定义属性指定类型(如 <color>、<length>、<angle> 等),浏览器就能在动画中对这些属性进行平滑插值,而不是在关键帧之间离散跳变。它于 2021 年在 Chrome 85+ 中首次支持,现已被所有主流浏览器广泛支持。
普通 CSS 自定义属性(如 --my-color: red;)没有类型信息,浏览器将其值视为通用字符串。在动画中,浏览器无法对字符串进行插值计算,只能在关键帧之间离散切换(在动画中点突然跳变)。而 @property 定义的属性有明确的类型,浏览器知道如何计算中间值——例如颜色会在色彩空间中插值,长度会计算中间像素值,角度会进行数值插值——从而实现真正平滑的过渡动画。
@property 的 syntax 描述符支持以下类型值:
基础类型:<color>、<length>、<number>、<percentage>、<angle>、<time>、<integer>、<url>、<image>、<resolution>、<transform-function>、<custom-ident> 等。
组合类型:可以使用 | 表示"或"(如 <number> | <percentage>),使用 + 表示空格分隔的多个值,使用 # 表示逗号分隔的列表。
通用类型:'*' 表示接受任何值(此时行为类似普通自定义属性)。
syntax(必需):定义属性的值类型,用引号包裹,如 '<color>'。这是 @property 最关键的描述符,决定了浏览器如何解析和插值。
inherits(必需):布尔值,指定属性是否从父元素继承。大多数情况下设为 false,配合 initial-value 使用。
initial-value(可选但推荐):属性的初始值。如果 inherits 为 false,则必须提供此值。该值必须符合 syntax 定义的类型。
@property 在 Chrome 85+、Edge 85+、Opera 71+、Safari 16.4+、Firefox 128+ 中均受支持,覆盖率超过 92%。在不支持的浏览器中,@property 规则会被忽略,自定义属性退化为普通无类型属性,动画将离散切换而非平滑过渡。建议使用 @supports (--css: variables) 进行渐进增强检测,为不支持的环境提供降级方案(如使用传统的 CSS transition 或 JavaScript 动画)。
1. 渐变动画:对渐变的颜色、位置、角度进行平滑动画,实现动态渐变背景。
2. 主题切换:定义颜色类型的属性,在亮/暗主题之间平滑过渡,而非生硬切换。
3. 复杂微交互动效:如按钮 hover 时的渐变色变化、卡片阴影颜色过渡等。
4. 数据可视化:驱动图表元素的尺寸、位置、颜色平滑变化。
5. 创意动画:实现传统 CSS 无法实现的动画效果(如 conic-gradient 旋转)。
可以。@property 定义的属性仍然是 CSS 自定义属性,可以通过 element.style.setProperty('--prop-name', value) 在 JavaScript 中设置,也可以使用 getComputedStyle(element).getPropertyValue('--prop-name') 读取。结合 requestAnimationFrame 可以实现高性能的 JavaScript 驱动动画。此外,还可以使用 CSS.registerProperty() 在 JavaScript 中动态注册属性(效果等同于 @property)。
可以,而且效果非常好。当自定义属性通过 @property 注册了类型后,CSS transition 也能对该属性进行平滑过渡。例如,使用 transition: --my-color 0.3s ease 就能在属性值变化时产生平滑的颜色过渡。这在主题切换、hover 效果等场景中非常实用——只需改变自定义属性的值,过渡效果自动生效。
应用 contain 的各种值(layout, paint, size),直观对比开启前后渲染和布局的变化。
定义多个 CSS 自定义属性,通过滑块或颜色选择器实时修改并查看页面整体风格变化。
通过勾选元素关系(子孙、兄弟)、属性、伪类等条件,自动生成精确的CSS选择器字符串。
搜索CSS属性和选择器,展示在主流浏览器的支持版本和全局使用率百分比。
列出所有标准 CSS 光标值(pointer, grab, zoom-in 等),鼠标悬停实时查看对应光标样式并复制代码。
提取 HTML 中所有内联 style,智能合并相同样式生成 class,并替换为类名以减小体积。
选择多张图片或纯色叠加,切换所有CSS混合模式并实时预览图层效果。
调节光源角度、颜色和距离,生成凹凸柔和的新拟态UI元素CSS盒阴影代码,潮流设计工具。
选择触发位置、箭头方向与样式,生成轻量悬停提示框代码。
浏览并一键复制常见CSS动画(跳动、淡入、滑动等)的@keyframes代码。
设置文字、速度和方向,生成使用 CSS 动画实现的滚动横幅代码。
调节宽度、颜色、条纹动画等参数,实时预览并生成进度条HTML/CSS。
并列播放所有CSS内置缓动函数(ease, linear等)的动画效果,方便对比选择。
通过滑块和开关调整 Flex 容器和子项的所有 CSS 属性,实时观察布局变化,理解弹性盒子。
展示 CSS 系统颜色关键字(如 CanvasText, LinkText)在明暗模式下的实际渲染值。
通过可视化控件定制滚动条轨道、滑块、按钮等伪元素样式,即时预览并复制生成代码。
在页面上叠加可拖拽的半透明网格线,辅助网格布局对齐。
上传图片并设置层位置和滚动速度,生成纯 CSS 的多层视差滚动背景代码。
搜索CSS属性,显示其在主流浏览器的支持范围和前缀需求,快速避免踩坑。
将 CSS Grid 容器和项目的属性以图形化卡片展示,点击查看具体效果和代码。
为页面上使用CSS Grid的元素显示网格线和名称,辅助布局开发和调试。
拖拽顶点或选择预定义形状,可视生成CSS clip-path多边形、圆形、椭圆等,实时预览并复制代码。
输入文本,滑块调节letter-spacing和word-spacing,实时显示效果并复制CSS。
提取HTML中所有内嵌 `<style>` 标签的内容,合并生成单独CSS文件。
创建 Shadow DOM 与普通 DOM 元素,对比样式隔离效果,理解 @layer 和 scoped styles。
制作像荧光笔划过的高亮背景或扫描下划线效果,导出类名。
为内容区域生成灰色闪烁的骨架屏占位代码,包含卡片、标题等组件样式。
创建带有向下箭头和自定选项风格的自定义选择框HTML+CSS代码。
设定最小、首选、最大三个尺寸及视口范围,生成响应式CSS clamp()表达式。
调整透明度、模糊度和边框,实时预览毛玻璃UI卡片,生成兼容CSS backdrop-filter代码。