何必剪裁?溢出内容隐藏术 overflow: clip
2024-01-29 23:03:15
一切元素都有它所占的空间,其内容尺寸不超过它的尺寸,则显示正常;如果内容超出了尺寸,就叫做溢出。对于溢出内容,有两种解决办法,一是通过滚动条观看溢出部分,二是将溢出内容隐藏起来,overflow 样式就是通过设置不同的属性值,达到控制溢出内容呈现方式的目的。
早期的overflow可以取auto、scroll、visible和hidden四个值:
- 当为auto时,会自动生成滚动条来显示溢出内容
- 当为scroll时,与auto类似,强制生成滚动条,让内容溢出后也能完全呈现
- 当为visible时,没有滚动条,溢出内容也不做修剪,直接显示出来
- 当为hidden时,则不显示溢出内容,选择隐藏溢出部分
在 Chrome 90 版本开始,overflow 增加了新的属性值 clip,它可以对溢出内容进行裁剪,当内容溢出时直接裁剪掉,不会展示出来,相当于给内容盖了一层看不见的壳。例如,当想让图片在容器中显示出来时,却超出了容器的尺寸,那么使用 overflow: clip,溢出的部分会直接剪裁,剩下的部分显示在容器中。
<!DOCTYPE html>
<html>
<head>
<style>
div {
width: 100px;
height: 100px;
background-color: red;
overflow: clip;
}
img {
width: 200px;
height: 200px;
}
</style>
</head>
<body>
<div>
<img src="image.jpg">
</div>
</body>
</html>
上面这个例子中,div 的宽度和高度都为 100px,背景色为红色。图片的宽度和高度都为 200px,如果 overflow 为 visible,那么图片会显示在 div 外面,而 overflow 为 clip 时,图片溢出的部分则会被裁剪掉。
overflow: clip 与 overflow: hidden 区别在于,overflow: clip 会裁剪掉溢出内容,而 overflow: hidden 则会隐藏溢出内容,但仍然占据空间。如果容器的背景是透明的,那么 overflow: hidden 会让溢出内容显示为透明的,而 overflow: clip 则会完全裁剪掉溢出内容。
overflow: clip 还有几个特性:
- 不会创建滚动条,因为它会直接裁剪掉溢出内容。
- 不会影响元素的大小或位置,因为它只是裁剪了溢出内容,并没有改变元素的大小或位置。
- 不会影响元素的子元素,因为它只对父元素的溢出内容进行裁剪。
overflow: clip 的应用场景有很多,比如:
- 当想让图片在容器中显示出来时,却超出了容器的尺寸,可以使用 overflow: clip 来裁剪掉溢出部分。
- 当不想让元素的子元素溢出父元素时,可以使用 overflow: clip 来裁剪掉溢出部分。
- 当想隐藏元素的滚动条时,可以使用 overflow: clip 来裁剪掉滚动条。
overflow: clip 的优点在于,它可以很容易地控制溢出内容,而且不会影响元素的大小或位置。但是,overflow: clip 也有一个缺点,那就是它会裁剪掉溢出内容,这可能会影响用户体验。