CSS 入门教程
阴影效果
本教程共 44 篇 · 第 21 篇 · 更新于 2026-07-29 · 约 8 分钟阅读
阴影text-shadowbox-shadow发光效果卡片阴影
21. 阴影效果
本节目标:掌握 text-shadow 和 box-shadow 的用法,能创建文字阴影、卡片悬浮效果和发光效果。
text-shadow —— 文字阴影
给文字添加阴影,增强视觉层次感。
基本语法
text-shadow: h-shadow v-shadow blur color;
参数说明:
h-shadow:水平偏移,正数向右,负数向左v-shadow:垂直偏移,正数向下,负数向上blur:模糊半径,值越大越模糊color:阴影颜色
基础用法
/* 最简单的阴影 */
.simple-shadow {
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
}
/* 无模糊的硬阴影 */
.hard-shadow {
text-shadow: 2px 2px 0 #333;
}
/* 发光效果:偏移为0,只设模糊 */
.glow {
text-shadow: 0 0 10px #ff6600;
}
多重阴影
用逗号分隔,可以叠加多个阴影。
/* 霓虹灯效果 */
.neon {
color: white;
text-shadow:
0 0 5px #fff,
0 0 10px #fff,
0 0 20px #ff00de,
0 0 30px #ff00de;
}
/* 立体文字 */
.3d-text {
color: #fff;
text-shadow:
1px 1px 0 #ccc,
2px 2px 0 #bbb,
3px 3px 0 #aaa,
4px 4px 5px rgba(0,0,0,0.3);
}
文字描边效果
用四个方向的阴影模拟描边。
.outline {
color: yellow;
text-shadow:
-1px -1px 0 #000,
1px -1px 0 #000,
-1px 1px 0 #000,
1px 1px 0 #000;
}
box-shadow —— 盒子阴影
给整个元素添加阴影,是最常用的视觉效果之一。
基本语法
box-shadow: h-shadow v-shadow blur spread color inset;
参数说明:
h-shadow:水平偏移v-shadow:垂直偏移blur:模糊半径spread:扩展半径(可选,控制阴影大小)color:阴影颜色inset:可选,改为内阴影
基础用法
/* 最简单的盒子阴影 */
.box {
box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.3);
}
/* 无偏移的柔和阴影 */
.soft-shadow {
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
}
扩展半径
/* 扩展阴影,让阴影更大 */
.expanded {
box-shadow: 0 0 10px 5px rgba(0, 0, 0, 0.2);
/* 最后 5px 是扩展半径 */
}
内阴影
/* inset 让阴影出现在元素内部 */
.inset-shadow {
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.2);
}
多重阴影
/* 卡片悬浮效果 */
.card-shadow {
box-shadow:
0 1px 2px rgba(0, 0, 0, 0.07),
0 2px 4px rgba(0, 0, 0, 0.07),
0 4px 8px rgba(0, 0, 0, 0.07),
0 8px 16px rgba(0, 0, 0, 0.07);
}
实战:卡片悬浮效果
<!DOCTYPE html>
<html lang="zh">
<head>
<style>
.card {
width: 280px;
padding: 24px;
background: white;
border-radius: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
transition: box-shadow 0.3s ease, transform 0.3s ease;
}
.card:hover {
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
transform: translateY(-4px);
}
.card h3 {
margin: 0 0 8px;
color: #333;
}
.card p {
margin: 0;
color: #666;
line-height: 1.6;
}
</style>
</head>
<body>
<div class="card">
<h3>悬浮卡片</h3>
<p>鼠标悬停时阴影变深,卡片微微上浮。</p>
</div>
</body>
</html>
实战:按钮点击效果
.btn-3d {
padding: 12px 24px;
background: #4CAF50;
color: white;
border: none;
border-radius: 6px;
box-shadow: 0 4px 0 #388E3C; /* 底部深色边模拟3D */
cursor: pointer;
transition: all 0.1s ease;
}
.btn-3d:active {
box-shadow: 0 1px 0 #388E3C;
transform: translateY(3px); /* 按下时下沉 */
}
实战:输入框聚焦效果
.input-glow {
padding: 10px 16px;
border: 1px solid #ddd;
border-radius: 6px;
outline: none;
transition: box-shadow 0.3s ease;
}
.input-glow:focus {
border-color: #4CAF50;
box-shadow: 0 0 0 3px rgba(76, 175, 80, 0.2);
/* 聚焦时外发光效果 */
}
阴影属性速查
| 属性 | 作用 | 参数顺序 |
|---|---|---|
text-shadow | 文字阴影 | h v blur color |
box-shadow | 盒子阴影 | h v blur spread color inset |
小结
- text-shadow 给文字加阴影,可做发光、立体、描边效果
- box-shadow 给元素加阴影,最常用于卡片和按钮
- 多重阴影用逗号分隔,层层叠加
- inset 关键字让阴影出现在元素内部
- rgba 颜色让阴影更自然,避免纯黑色