在某业务场景下,需要支持背景图的平铺和拉伸,那么在CSS中的这俩属性表现有何区分关系到是否符合业务表现,因此有必要清晰知道其差别。
background-size
在CSS中有background-size属性,平铺与拉伸可以通过下面两个值实现:
- 平铺:
cover - 拉伸:
100% 100%
表现如何
设置的背景图原图比例表现如下:

比较的代码实现如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>背景图长宽比例问题探索</title>
<style type="text/css">
*{
margin: 0;
padding: 0;
border: 0;
}
.box {
width: 400px;
height: 300px;
background-color: aquamarine;
background-image: url(http://p0.qhimg.com/bdr/__85/t01cf4d52137a580601.jpg);
background-size: cover;
background-position: center;
}
.box2 {
width: 400px;
height: 300px;
background-color: red;
background-image: url(http://p0.qhimg.com/bdr/__85/t01cf4d52137a580601.jpg);
background-size: 100% 100%;
background-position: center;
}
</style>
</head>
<body>
<div class="box"></div>
<div 50px;"></div>
<div class="box2"></div>
</body>
</html>其浏览器中表现如下图:

可以发现,拉伸是根据容器的宽高来设置图片的宽高,能完整展示整个图片内容,但图像内容发生了变形
而平铺比较特殊,完全展示了图片的高度,但是左右两边被裁掉了一部分,无法展示完整的图片,但图片的宽高比例没变,因此图像不存在变形
将宽高值互换:
.box {
width: 300px;
height: 400px;
background-color: aquamarine;
background-image: url(http://p0.qhimg.com/bdr/__85/t01cf4d52137a580601.jpg);
background-size: cover;
background-position: center;
}
.box2 {
width: 300px;
height: 400px;
background-color: red;
background-image: url(http://p0.qhimg.com/bdr/__85/t01cf4d52137a580601.jpg);
background-size: 100% 100%;
background-position: center;
}其表现如下:

相较于平铺属性,拉伸的效果非常好理解。平铺,按照我个人理解,平铺的渲染规则是,以图片的“短边”为基准,对图片进行等比例缩放,缩放后的图片“短边”长度等于“短边”所对应容器“边”的长度,“长边”缩放后多余的部分被裁剪。
本文共 334 个字数,平均阅读时长 ≈ 1分钟
评论 (0)