1. css滤镜效果
详见developer.mozilla.org/zh-CN/docs/…,可通过链接demo尝试一下
2. :has()
CSS 函数式伪类 **:has()** 表示一个元素,如果作为参数传递的任何相对选择器在锚定到该元素时,至少匹配一个元素。这个伪类通过把可容错相对选择器列表作为参数,提供了一种针对引用元素选择父元素或者先前的兄弟元素的方法。意思是某某元素如果匹配某某选择器,就会匹配。支持所有css选择符
详见developer.mozilla.org/zh-CN/docs/…
/* <a> 元素里面有 <img> 元素,则这个 <a> 元素就会匹配 */
a:has(img) { display: block; }
/* 子元素是 <img> 元素的 <a> 元素会被匹配,而关系更远的后代元素则不考虑 */
a:has(> img) { display: block; }
/* 兄弟选择器 表示匹配后面跟随 <p> 元素的 <h5> 元素 */
h5:has(+ p) { font-size: 1rem; }
/* <article> 元素内有 <h5> 元素或者有 <p> 元素就会匹配,是或的关系 */
article:has(h5, p) { background-color: #f0f3f9; }
/* <article> 元素内有 <h5> 元素或者有 <p> 元素就会匹配,是与的关系 */
article:has(h5):has(p) { background-color: #f0f3f9; }
/* 与其他伪类混用 */
3. 尺寸限制:min-content, max-content, fit-content
min-content 尺寸关键字表示内容的最小固有尺寸。对于文本内容而言,这意味着内容会利用所有软换行的机会,变得尽可能的小。
详见:developer.mozilla.org/zh-CN/docs/…
.item {
width: min-content;
background-color: #8ca0ff;
padding: 5px;
margin-bottom: 1em;
}
<div class="item">项目</div>
<div class="item">项目中包含更多文本。</div>
max-content 尺寸关键字表示内容的最大固有尺寸。对于文本内容,这意味着即使内容会导致溢出,它也不会换行。
**fit-content** 关键字相当于 fit-content(stretch)。在实际应用中,这意味着盒子会使用可用空间,但绝不会超过 max-content。
4. aspect-ratio
**aspect-ratio** 为盒子规定了首选纵横比,这个纵横比可以用于计算 auto 尺寸以及其他布局函数。
详见:developer.mozilla.org/zh-CN/docs/…,可通过链接demo尝试一下
5. scroll-behavior
当用户手动导航或者 CSSOM scrolling API 触发滚动操作时,CSS 属性 **scroll-behavior** 为一个滚动框指定滚动行为,其他任何的滚动,例如那些由于用户行为而产生的滚动,不受这个属性的影响。在根元素中指定这个属性时,它反而适用于视窗。
详见:developer.mozilla.org/zh-CN/docs/…,可通过链接demo尝试一下,点击 scroll to: A B C,通过锚点平滑滚动
auto:这是默认值,表示滚动将立即跳转到指定位置,没有任何过渡效果。
smooth:表示滚动将平滑地过渡到指定位置,提供一种更加自然和优雅的视觉体验
6. CSS比较函数
详见:developer.mozilla.org/zh-CN/docs/…
计算一系列值的最小值。
计算一系列值的最大值。
计算最小值、中间值、最大值的中值。
函数接收三个用逗号分隔的表达式作为参数,按最小值、首选值、最大值的顺序排列。
当首选值比最小值要小时,则使用最小值。
当首选值介于最小值和最大值之间时,用首选值。
当首选值比最大值要大时,则使用最大值。
width: min(1vw, 4em, 80px);
width: max(10vw, 4em, 80px);
font-size: clamp(1.8rem, 2.5vw, 2.8rem);
7. 背景滤镜backdrop-filter
**backdrop-filter** 可以让你为一个元素后面区域添加图形效果(如模糊或颜色偏移)。因为它适用于元素_背后_的所有元素,为了看到效果,必须使元素或其背景至少部分透明。
详见:developer.mozilla.org/zh-CN/docs/…
/* 关键词值 */
backdrop-filter: none;
/* 指向 SVG 滤镜的 URL */
backdrop-filter: url(commonfilters.svg#filter);
/* <filter-function> 滤镜函数值 */
backdrop-filter: blur(2px);
backdrop-filter: brightness(60%);
backdrop-filter: contrast(40%);
backdrop-filter: drop-shadow(4px 4px 10px blue);
backdrop-filter: grayscale(30%);
backdrop-filter: hue-rotate(120deg);
backdrop-filter: invert(70%);
backdrop-filter: opacity(20%);
backdrop-filter: sepia(90%);
backdrop-filter: saturate(80%);
/* 多重滤镜 */
backdrop-filter: url(filters.svg#filter) blur(4px) saturate(150%);
/* 全局值 */
backdrop-filter: inherit;
backdrop-filter: initial;
backdrop-filter: revert;
backdrop-filter: unset;
各个滤镜方法对应含义如下表:
滤镜
释义
blur
模糊
brightness
亮度
contrast
对比度
drop-shadow
投影
grayscale
灰度
hue-rotate
色调变化
invert
反相
opacity
透明度
saturate
饱和度
sepia
褐色
backdrop-filter和filter区别
backdrop-filter是让当前元素所在区域后面的内容模糊灰度或高亮之类,要想看到效果,需要元素本身半透明或者完全透明,不影响文字内容;而filter是让当前元素自身模糊灰度或高亮之类,影响文字内容。
8. :focus-visible
当元素匹配:focus伪类并且客户端 (UA) 的启发式引擎决定焦点应当可见 (在这种情况下很多浏览器默认显示“焦点框”。) 时,**:focus-visible** 伪类将生效。应用的场景是:元素聚焦,同时聚焦轮廓浏览器认为应该显示。
这个选择器可以有效地根据用户的输入方式 (鼠标 vs 键盘) 展示不同形式的焦点。
详见:developer.mozilla.org/zh-CN/docs/…
通过demo尝试可见:focus-visible only在按钮被点击时不会出现焦点框,只有键盘焦点才展示,但是focus则两种情况都会出现焦点框:
9. CSS 嵌套
CSS 嵌套模块定义了嵌套选择器的语法。它提供将一个样式规则嵌套至另一个规则内的能力,其中被嵌套规则的选择器将相对于其父规则的选择器。
CSS 嵌套不同于如 Sass 等的 CSS 预处理器的一点是,它是被浏览器直接解析的,而不是先经由 CSS 预处理器的预编译。
详见:developer.mozilla.org/zh-CN/docs/…