六维教程

CSS 圆角、阴影与透明度

盒模型解决的是盒子的骨架问题,这一篇给盒子化妆。圆角、阴影、透明度三个属性,是日常开发里出镜率最高的修饰手段,把它们玩熟,页面质感立刻上一个档次。

border-radius 圆角

border-radius 把盒子的四个角变圆,取值是长度或百分比。

.box {
  border-radius: 8px;
}

一个值管四个角,四个值按顺时针依次管左上、右上、右下、左下,两个值是左上右下、右上左下。百分比按盒子宽高的比例算,用 50% 能变出圆形。

.avatar {
  border-radius: 50%;
}
.pill {
  border-radius: 999px;
}

头像用 50% 变正圆。胶囊按钮不用量尺寸,直接给个超大值 999px,浏览器会自动按高度的一半取整,永远是最圆润的样子,这是两种最经典的圆角用法。做卡片时给个 8 到 12 像素的小圆角,是设计稿里的常规操作。

box-shadow 阴影

box-shadow 给盒子加阴影,有四个核心参数,水平偏移、垂直偏移、模糊半径、阴影颜色,偏移值为正时阴影往右往下。

.card {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
}

上面是卡片最常见的阴影写法,垂直偏移 2 像素,模糊 8 像素,半透明白色系阴影。做按钮悬浮效果时,加大模糊半径和偏移,配合 hover 过渡,卡片就有”浮起来”的感觉。

box-shadow 还能加第五个参数扩展半径,正值让阴影往外扩一圈,负值往里收。加 inset 关键字,阴影变内阴影,凹陷的效果。

.btn {
  box-shadow: inset 0 -2px 0 rgba(0, 0, 0, 0.2);
}

多个阴影用逗号分隔,可以叠加,外阴影配内阴影、多层发光都可以。注意阴影不占布局空间,不影响其他元素的位置。

opacity 与透明色的区别

opacity 设置整个元素的透明度,0 完全透明,1 完全不透明,取值之间是渐变。它最大的特点是”整体”,元素、边框、里面的文字,全部一起变透明。

.box {
  opacity: 0.5;
}

如果只想让背景半透明、文字保持清晰,用 rgba 透明色,它只作用于设置它的那个属性。

.box {
  background: rgba(0, 0, 0, 0.5);
  color: white;
}

背景半透明,文字全不透明,遮罩层和弹窗底下的半透明背景就是这么做的。两者的区别一句话,opacity 管整体,rgba 管单层。

组合实战

三个属性组合起来,就是现在流行的卡片风格。

<div class="card">
  <h3>今日推荐</h3>
  <p>这是今天为你挑选的文章。</p>
</div>
.card {
  width: 280px;
  padding: 24px;
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
.card:hover {
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);
}

白色卡片、小圆角、柔和阴影,hover 时阴影加深,页面立刻有了层次。这些属性还都能参与过渡动画,后面的课程会专门讲。

小结

圆角做形状,阴影做层次,透明度做叠加。圆角记住 50% 圆形和 999px 胶囊两个大招,阴影记住偏移加模糊加透明色,透明度分清 opacity 和 rgba 的区别。下一篇离开盒子内部,开始处理内容本身,字体样式。

上一篇
CSS Grid 实战
下一篇
CSS 过渡与变换