← 课程 目录 CSS 课堂演示 · 第 7 章 背景·边框·效果

CH 07 · 对应教材单元五

背景 · 边框 · 效果

背景图与渐变、圆角与阴影、纯 CSS 画三角形——页面的「颜值」基本都出自这一章。

7.1背景五件套:image / size / position / repeat / color

背景图三连问:图多大(size)、放哪里(position)、要不要平铺(repeat)。

平铺波点 pattern
cover · 铺满裁切
多层背景叠加
/* 波点:小圆点 + 平铺 */
.bg-repeat {
  background-image: radial-gradient(
    circle, #B04A2C 2px, transparent 2.5px);
  background-size: 16px 16px;   /* 平铺单元 */
}

/* 封面图:cover 铺满 + center 取中 */
.bg-cover {
  background-image: url(bg.jpg);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

/* 多层背景:先写的在最上层 */
.bg-multi { background-image:
  radial-gradient(...), linear-gradient(...);
}

size 三档记忆:cover 裁切铺满(不变形、可能裁掉边)、contain 完整显示(可能留白)、100% 100% 铺满但可能变形。

7.2渐变背景:linear 与 radial

渐变是「函数生成的图」,不是图片文件——任意缩放不糊,还能当分隔条、按钮底色。

135° 双色
硬分段进度条
radial 光晕
/* 方向角度 + 色标列表 */
.g1 { background: linear-gradient(135deg, #B04A2C, #8F5E0F); }

/* 色标可以「两色紧贴」= 硬边界,
   做分段进度条不用写两个 div */
.g2 { background: linear-gradient(90deg,
        #B04A2C 0 40%,        /* 0~40% 红 */
        #E7DDCA 40% 60%,      /* 40~60% 米 */
        #3F6E6A 60% 100%); }  /* 60~100% 绿 */

/* 径向:圆心位置 + 颜色 */
.g3 { background: radial-gradient(
        circle at 30% 30%, #F3E0D5, #B04A2C); }

7.1 的波点就是 radial-gradient 当「画笔」用的——渐变不只是装饰,还是低成本画图形的手段。

7.3border-radius:从直角到圆形到胶囊

一个属性覆盖方→圆→圆→胶囊,四个值按「左上 / 右上 / 右下 / 左下」顺时针给。

0
10px
50%
胶囊 999px
40/10 交替
.rd          { border-radius: 0; }      /* 直角 */
.rd-10       { border-radius: 10px; }   /* 统一圆角 */
.rd-circle   { border-radius: 50%; }    /* 正方形→圆 */
.rd-capsule  { border-radius: 999px; }  /* 按钮胶囊 */

/* 四角不同:左上 右上 右下 左下 */
.fancy { border-radius: 40px 10px 40px 10px; }

/* 头像圆角:50% 比 999px 语义清晰 */
.avatar { border-radius: 50%; }

胶囊按钮写 999px 而不是「高度一半」——高度怎么变都自动是胶囊,一劳永逸。

7.4box-shadow:立体感的三档层次

x 偏移 y 偏移 模糊 扩散 颜色。离「纸面」越高,阴影越大越淡——这是拟物的基本逻辑。

elev-1 微浮
elev-2 卡片
elev-3 弹层
.sh1 { box-shadow: 0 1px 3px rgba(43,37,32,.15); }
.sh2 { box-shadow: 0 4px 12px rgba(43,37,32,.12); }
.sh3 { box-shadow: 0 12px 28px rgba(43,37,32,.16); }

/* 语法:x y blur spread color
   x=0 y=0 只留模糊 → 四周均匀光晕
   负 spread 可以把阴影收窄 */

/* 网站约定:静态卡不发影,
   hover 时才升到 elev-2 */

阴影色用 半透明黑(rgba)而不是灰色——在米色底上灰影会发脏,透明黑永远自然。

7.5border 的妙用:宽 0 画三角形

盒子没有内容时,四条 border 在角上「对折」——只留一条,其余透明,就是三角形。

← 两个「0×0 的盒子」,
边框互相挤压出斜边
/* 上指三角:只留 border-bottom */
.tri-up {
  width: 0; height: 0;
  border-left:   22px solid transparent;
  border-right:  22px solid transparent;
  border-bottom: 34px solid #B04A2C;
}

/* 右指三角:只留 border-left */
.tri-rt {
  border-top:    20px solid transparent;
  border-bottom: 20px solid transparent;
  border-left:   32px solid #3F6E6A;
}

下拉菜单的小箭头、气泡框的尖角,都是这个原理。现代写法也可用 clip-path,但 border 三角兼容性最好。

7.6overflow:装不下怎么办?visible / hidden / auto

默认 visible 溢出显示;hidden 直接裁掉;auto 装不下才出滚动条。

overflow: visible → 我溢出了边框
overflow: hidden → 多余的被裁
overflow: auto → 试试拖动横向滚动
.of-vis { overflow: visible; }  /* 默认:不管 */
.of-hid { overflow: hidden; }   /* 裁掉超出部分 */
.of-scr { overflow: auto; }     /* 需要时出滚动条 */

/* 只锁一个方向:
   overflow-x: auto;  横向滚
   overflow-y: hidden; 纵向裁 */

/* overflow:hidden 的隐藏用法:
   触发 BFC、配合圆角裁图片 */

「圆角容器 + 直角图片」必须加 overflow:hidden,否则图片四角戳出圆角外——课上限时找茬练习的好素材。

7.7filter:一行代码的图像效果

模糊、去色、提亮……CSS 滤镜直接作用于元素渲染结果,不用改图。

原图
blur(2px)
grayscale(1)
brightness(1.35)
.f-blur { filter: blur(2px); }        /* 毛玻璃感 */
.f-gray { filter: grayscale(1); }     /* 全灰:旧图占位 */
.f-br   { filter: brightness(1.35); } /* 提亮:hover 反馈 */

/* 常见搭配:hover 时「彩色→灰色」
img { filter: grayscale(1); }
img:hover { filter: none; }  悬停恢复彩色 */

多个滤镜可连写:filter: blur(2px) brightness(1.2)。注意 blur 会波及边缘,卡片内文字模糊要只给背景层。