六维教程

CSS 背景样式(一)

背景是页面最底层的装饰

文字和颜色讲完了,接下来是背景。背景是块级元素最基础的装饰手段,纯色、图片、定位、缩放,这些能力合起来能完成大部分页面场景。这一篇讲背景的基础属性,下一篇讲渐变。

background-color 纯色背景

background-color 设置背景色,写法与文字颜色完全一致,上一篇学的所有颜色写法都能用。

.header {
  background-color: #f5f5f5;
}

background-image 背景图片

background-image 用 url() 引用图片,路径可以是相对路径,也可以是网络地址。

.banner {
  background-image: url("images/banner.png");
}

背景图片默认会按原始尺寸平铺,想按需求控制,要配合下面几个属性。

background-repeat 平铺控制

默认情况下背景图会铺满整个元素,repeat 就是默认的平铺。no-repeat 不平铺,只显示一张,repeat-x 只在水平方向平铺,repeat-y 只在垂直方向平铺。

.bg {
  background-image: url("pattern.png");
  background-repeat: repeat-x;   /* 只横着铺,常见于页脚纹理 */
}

background-position 定位

不平铺之后,图片默认放在元素左上角,background-position 可以调整位置。可以用关键字组合,left、center、right 配 top、center、bottom,也可以用百分比和像素值。

.bg {
  background-position: center center;   /* 居中 */
  background-position: right top;       /* 右上角 */
  background-position: 20px 30px;       /* 距离左上角 20px 30px */
}

百分比定位有一条规则,百分比值是图片对应点对准容器对应点,比如 50% 50% 就是图片中心对准容器中心,这和像素定位的逻辑不同。简单记住这个规则即可。

background-size 缩放

background-size 控制背景图尺寸,是使用频率很高的属性。cover 图片等比例放大铺满容器,多余部分裁剪掉。contain 图片等比例缩放完整放进容器,多出的区域露出背景色。

.banner {
  background-size: cover;     /* 铺满,裁掉多余部分 */
  background-size: contain;   /* 完整显示,可能有留白 */
}

cover 适合不想留白的全屏背景,contain 适合必须完整展示的图。也可以直接写数值和百分比,比如 100px 50px 或 50% 50%。

取值 行为 使用场景
cover 铺满容器,裁剪超出部分 全屏 banner、封面图
contain 完整显示图片,可能有留白 完整展示 logo、产品图
固定数值 按像素设置尺寸 需要精确尺寸的纹理

背景简写

以上属性可以合并成一行 background,顺序建议是 color image repeat position / size。注意 position 和 size 之间要用斜杠分隔。

.box {
  background: #eee url("bg.png") no-repeat center / cover;
}

简写里没写的属性会被重置为默认值,这是简写最大的坑,下一篇会再详细讲。

综合示例

做一个登录页,背景图铺满,上面盖一层半透明遮罩,保证文字可读。遮罩用伪元素实现,因为背景色永远画在背景图下面,盖不住图。

.login-page {
  position: relative;
  background-image: url("city.jpg");
  background-size: cover;
  background-position: center;
}
/* 半透明遮罩层,盖在背景图上面 */
.login-page::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.4);
}

::before 这种伪元素的用法,在CSS 伪类那篇有完整介绍。遮罩放好之后,登录表单再叠上去,层级用 z-index 控制即可。

小结

背景图四件套,image 放图、repeat 控平铺、position 定位置、size 管缩放,最后一行 background 简写收尾。遮罩层用伪元素实现。下一篇讲渐变色,让背景更生动。

上一篇
CSS 颜色全解
下一篇
CSS 背景样式(二)