给 body 设了一张小图标当背景,结果图标密密麻麻铺满整个屏幕,这就是 background-repeat 的默认值在起作用:repeat,横竖两个方向无限平铺。想让背景听话,得把它的几个取值搞清楚。
五个取值各管什么
- repeat:默认值,横竖都平铺,超出容器部分裁掉
- no-repeat:只显示一张,不平铺,做 banner 背景必用
- repeat-x / repeat-y:只沿横向或纵向铺一条,常用于分隔线、渐变条
- space:图片之间均匀留空隙,不裁切图片
- round:拉伸或压缩图片,凑成整数份正好铺满
space 和 round 这两个冷门值其实很好用:容器宽度不是图片整数倍时,repeat 会把边缘那张裁掉半个,很难看;换成 round 就自动缩放补齐,换成 space 就摊开留缝。
多背景图分别控制
CSS 允许一个元素叠多张背景图,平铺方式也能一一对应着写,逗号隔开:
background-image: url(a.png), url(b.png); background-repeat: no-repeat, repeat-x;
顺序和 image 一一对应,第一张在最上层。这两行还能并进 background 简写里,background: url(a.png) no-repeat center,一句写完。
搭配 background-size 使用
现在更常见的做法是干脆不平铺:background-size 设 cover 让图自动铺满容器、裁掉多余,设 contain 则完整显示图片、留白边。响应式页面里,图标类背景用 no-repeat 加 size 控制占多数,纯平铺更多用在纹理、噪点这类无缝小图上。
一句话判断:纹理类背景放心用 repeat,内容类大图基本都该是 no-repeat 加 background-size,别让 background-repeat 的默认值替你做决定。