02圆角边框与阴影
方正硬朗 → 圆润柔和,一个 border-radius 就够;
平面贴纸 → 立体悬浮,靠 box-shadow。
这是网页「质感」的第一课,也是 CSS3 里性价比最高的两个属性。
一、border-radius:从方到圆
一个值就是「每个角的半径」:border-radius: 16px 表示四个角都以 16px 为半径倒圆。
想精细控制,可以按「左上 → 右上 → 右下 → 左下」顺时针给四个角不同的值,
也可以用单角属性点名只改一个角。
| 写法 | 含义 |
|---|---|
| border-radius: 12px | 四角统一 12px |
| border-radius: 12px 24px | 两值对角一组:左上右下 12px,右上左下 24px |
| border-radius: 12px 24px 8px | 左上 / 右上左下 / 右下 |
| border-radius: 12px 24px 8px 4px | 左上 → 右上 → 右下 → 左下(顺时针一圈) |
| border-top-left-radius: 20px | 只改左上角(另有 top-right / bottom-right / bottom-left) |
| border-radius: 50% | 正方形变正圆;矩形变椭圆 |
| border-radius: 999px | 超大值 = 胶囊(超出的部分会被自动等比压缩) |
五种形态摆一起,把 .b 的 16px 改成 40px,看圆角变化:
.b 的 16px 改成 40px,看统一圆角更圆直角
统一圆角
对角圆
正圆
img { border-radius: 50%; } 直接生效,
前提是图片本身是正方形(可配合 object-fit: cover 补救)。二、斜杠语法:椭圆角
圆角其实有两个半径:水平半径和垂直半径。
平时写一个值时两者相等(正圆角);用斜杠 / 分开写,就能让它们不一样,
得到椭圆角:水平长就「扁圆」,垂直长就「竖圆」。
同一个盒子,四种「水平半径 / 垂直半径」组合,把每个盒子的 x / y 值调换看看差异:
.c 的 20px / 40px 与 .b 的 40px / 20px 互换,看扁圆角和竖圆角翻转椭圆
扁圆角
竖圆角
混搭
三、box-shadow:五个参数逐个看
盒阴影的完整语法是 x 偏移 y 偏移 模糊半径 扩散半径 颜色—— 只有前两个必填,其余可选。一个参数一个效果,逐个叠加着看最直观:
.d 的 8px 扩散改成 -8px,描边环变内收硬边影子
柔和自然
悬浮感
描边色环
收紧的投影
box-shadow: 4px 4px 12px rgba(0,0,0,.2)。四、inset 内阴影与多重阴影
在最前面加一个 inset 关键字,阴影就从「外面的影子」变成
「里面的影子」——凹陷感扑面而来,输入框、凹陷按钮、井底都靠它。
另外,阴影可以逗号分隔写多层,先写的在上层,
「描边 + 投影」的组合拳是卡片设计的常客。
inset 删掉就是外投影凹陷 / 输入框感
白描边 + 紫描边 + 投影
0 1px 2px rgba(0,0,0,.08), 0 8px 24px rgba(0,0,0,.12)
(近处一实一虚,层次立刻出来)。五、实战:悬浮卡片与霓虹按钮
圆角 + 阴影 + 一个 :hover,就能做出「能摸」的交互质感。
这里的 transition 让变化平滑发生——后面第 6 课的主角,先混个脸熟。
translateY(-6px) 改大,看浮起更高;改霓虹按钮发光层模糊,光晕更散悬浮卡片
hover:上移 6px
阴影从「贴地」变「悬空」
六、border-image:把边框当画布
普通边框只能是一条纯色线;border-image 允许用一张图(或一个渐变)
来画边框。它把素材切成九宫格:四个角照搬、四条边拉伸或平铺、
中间丢弃——所以特别适合「四角有花纹」的相框式边框。
| 子属性 | 作用 | 常用值 |
|---|---|---|
| border-image-source | 素材来源 | url(图) / 渐变函数 |
| border-image-slice | 从四周往里切多少(决定九宫格的格线) | 无单位数字 / % |
| border-image-width | 边框图的绘制宽度 | px / 数字倍数 |
| border-image-outset | 边框图向外扩张多少 | 了解即可 |
| border-image-repeat | 四条边的填充方式 | stretch(默认)/ round / repeat |
#6E8B6E, #4E7A52 看配色变化border: Npx solid transparent +
border-image: 渐变 1 = 渐变描边。
它和 border-radius 互斥(圆角会被边框图吃掉),二选一。七、本章小结
box-shadow 参数速查(考试高频,实战更高频):
| 参数 | 必填 | 作用 | 常用值 |
|---|---|---|---|
| x 偏移 | 是 | 水平方向,正右负左 | 0 ~ 12px |
| y 偏移 | 是 | 垂直方向,正下负上 | 2 ~ 16px |
| 模糊半径 | 否 | 边缘虚化,越大越「飘」 | 4 ~ 30px |
| 扩散半径 | 否 | 整体扩大 / 收缩,负值收小 | -6 ~ 8px |
| 颜色 | 建议 | 务必 rgba 带透明度 | rgba(0,0,0,.15) |
inset | 否 | 写在最前面,变内阴影 | inset 0 2px 6px … |
border-radius:一个值四角统一;顺时针可给四角不同值;50%变圆、超大值变胶囊;斜杠分水平 / 垂直半径得椭圆角box-shadow:x y 模糊 扩散 颜色,只有偏移必填;颜色用 rgba 才自然inset做凹陷感;多重阴影逗号分隔,描边 + 投影组合拳- 悬浮效果公式:hover 上移 + 阴影加深(配合 transition 平滑)
border-image用图或渐变当边框素材,九宫格切分;渐变描边是它的招牌用法
0 2px 6px、hover 上移加深、按下(:active)反而下压
translateY(2px) + 阴影缩小。做完你就理解了「用阴影表达物理状态」。