关于2022年的CSS新特性,自己之前也有篇原创,CSS 的未来:Cascade Layers (CSS @layer) (opens new window),专门是在介绍@layer(级联层)的文章,而新的一年会有更多的CSS的新特性会出现在浏览器中。
# 热门的CSS特性
# CSS容器查询
.form__container {
container: inline-size;
}
.form {
display:grid;
align-items: center;
}
@container(min-width: 480px) {
.form {
grid-template-columns: min-content 1fr 200px;
grid-template-areas:"searchIcon searchInput button";
grid-template-rows: 88px;
gap: 10px;
}
}
@container (min-width: 768px) {
.form {
grid-template-columns: min-content 1fr min-content 200px;
grid-template-areas: "searchIcon searchInput cameraIcon button";
grid-template-rows: 88px;
gap: 10px;
}
}
# CSS的父选择器:has()
figure img {
aspect-ratio: 21 / 9;
border: 5px solid #3f51b5;
}
figure:has(figcaption) img {
border: 5px solid #9c27b0;
}
# @layer控制CSS的级联层
/* 预设级联层的顺序,并且相邻级联层之间有逗号分隔 */
@layer setting, tool, generic, element, object, component, utilities;
@layer setting {
/* 附加到级联层 setting 中的 CSS */
}
@layer tool {
/* 附加到级联层 tool 中的 CSS */
}
@layer generic {
/* 附加到级联层 generic 中的 CSS */
}
@layer element {
/* 附加到级联层 element 中的 CSS */
}
@layer object {
/* 附加到级联层 object 中的 CSS */
}
@layer component {
/* 附加到级联层 component 中的 CSS */
}
@layer utilities {
/* 附加到级联层 utilities 中的 CSS */
}
# 颜色函数
:root {
--theme-color: #ff0000;
}
.text-primary-dark {
color: color-mix(var(--theme-primary), black 10%);
}
.text-primary-darker {
color: color-mix(var(--theme-primary), black 20%);
}
# 视窗单位
# 过度滚动行为:overscroll-behavior
# CSS网格的 subgrid
# 媒体查询
# CSS作用域:@scope
# 滚动与动画
# CSS Houdini 变量:@property
# 瀑布流布局
.masonry {
display: grid;
gap: 20px;
grid: masonry / repeat(auto-fill, minmax(250px, 1fr));
}