2022年你值得了解的几个CSS新特性「收藏学习」

1. Flexbox 布局的更新

1.1. space-evenly 属性

Flexbox 是常用的 CSS 布局模式之一,它可以轻松实现不同容器的自适应布局。在 CSS 3 中,Flexbox 布局已经大有改变。其中,space-evenly 是一个比较实用的属性,它可以使容器内的子元素等间距排列,并且在首尾两端与容器边缘的距离相等。

.parent {

display: flex;

justify-content: space-evenly;

}

上面的代码将所有子元素间的间距设为相等的,效果如下:

1.2. gap 属性

CSS 3 为 Flexbox 布局带来了一个非常实用的属性 gap,它可以用来设置容器内子元素的间距。在以前,我们只能通过设置 margin 或者 padding 来控制子元素之间的距离。而在 CSS 3 中,gap 属性则直接解决了这个问题。

.parent {

display: flex;

gap: 20px;

}

上面的代码将容器内所有子元素的间距设为 20 像素,效果如下:

2. CSS Scroll Snap

2.1. scroll-snap-type 属性

在移动设备上,滚动是非常常见的操作,但是用户体验却常常不尽人意。CSS Scroll Snap 可以通过控制容器的滚动行为,让滚动更加流畅。其中,scroll-snap-type 属性可以控制当前容器的滚动方式。该属性有两个值可选:proximity 和 mandatory。proximity 表示元素接近哪个滚动位置时就将其滚动到该位置;而 mandatory 表示元素必须滚动到对应的位置。

.parent {

scroll-snap-type: x mandatory;

}

上面的代码将容器水平滚动,且元素必须滚动到对应的位置,效果如下:

2.2. scroll-snap-align 属性

scroll-snap-align 属性则可以控制元素在滚动位置上的对齐方式。该属性有三个值可选:start、center 和 end。默认值为 none,表示没有对齐方式。

.parent {

scroll-snap-type: x mandatory;

}

.child {

scroll-snap-align: center;

}

上面的代码将容器水平滚动,且子元素在滚动位置上居中对齐,效果如下:

3. Containment

3.1. contain 属性

Containment 可以用来控制元素的渲染方式,使其更加高效。contain 属性有三个值可选:none、strict 和 content。none 表示元素没有限制;strict 则表示元素会应用严格的优化措施;而 content 则表示只有儿子元素受限制。

.wrapper {

contain: paint;

will-change: transform;

}

上面的代码将容器内的元素进行了一些优化,效果会更加高效。

3.2. isolation 属性

isolation 属性则可以控制元素的背景和子元素之间的叠加关系。该属性有两个值可选:auto 和 isolate。默认值为 auto,表示元素遵循 CSS 默认的叠加规则;而 isolate 则表示元素将完全脱离父元素的叠加方式。

.child {

isolation: isolate;

}

上面的代码将某个元素完全脱离父元素的叠加方式,效果如下:

4. Aspect Ratio

4.1. aspect-ratio 属性

Aspect Ratio 可以用来控制元素的高宽比,它是一个非常实用的属性。该属性允许我们通过设置宽度和高度的比例来控制元素的宽高比。例如:一个宽度为 400 像素,高度为 300 像素的元素,可以使用 aspect-ratio 属性设置宽高比为 4:3。

.box {

aspect-ratio: 4 / 3;

}

上面的代码将元素宽高比设置为 4:3,效果如下:

4.2. min-width、min-height、max-width 和 max-height 属性

min-width、min-height、max-width 和 max-height 属性也可以用来控制元素的宽高比。其中,min-width 和 min-height 属性可以用来设置元素的最小宽度和最小高度;max-width 和 max-height 属性则可以用来设置元素的最大宽度和最大高度。

.box {

min-width: 100px;

max-width: 200px;

min-height: 100px;

}

上面的代码将元素的宽度最小为 100 像素,最大为 200 像素,高度最小为 100 像素。

5. CSS Shapes

5.1. shape-outside 属性

在 CSS Shapes 中,shape-outside 属性可以让文本环绕在非矩形形状的元素周围。例如,我们可以定义一个圆形或者多边形的形状,然后将文本环绕在这些形状周围,从而产生一个比较有趣的效果。

.circle {

shape-outside: circle(50%);

float: left;

margin-right: 20px;

width: 100px;

height: 100px;

}

上面的代码将一个圆形形状应用到一个元素中,并将文本环绕在这个圆形周围,效果如下:

5.2. clip-path 属性

clip-path 属性可以用来定义一个被裁切的区域,从而裁剪元素的显示区域。它可以裁剪图片、背景、文本、渐变等各种元素。

.box {

clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);

}

上面的代码将一个多边形的裁剪区域应用到一个元素中,效果如下:

总结

本文介绍了 2022 年值得了解的几个 CSS 新特性,包括 Flexbox 布局的更新、CSS Scroll Snap、Containment、Aspect Ratio 以及 CSS Shapes。这些新特性可以帮助开发者实现更加灵活、高效的页面布局和渲染效果,而且使用方法也比较简单。有助于提升用户体验和页面性能。