box-shadow是CSS3中最常用的视觉效果属性之一,它能为元素添加一个或多个阴影,赋予页面层次感和立体感。从卡片悬浮效果到按钮交互反馈,再到模拟内凹输入框,box-shadow的应用场景极为广泛。然而,它的六个参数组合灵活,初学者容易混淆各参数的含义和取值规则。本文将从语法结构、示例代码和注意事项三个方面进行系统讲解。
完整语法格式:box-shadow的完整语法为box-shadow: [inset] h-offset v-offset blur spread color,其中inset和color的位置可以互换,颜色值也可以写在最前面。多个阴影之间用逗号分隔。
参数详解:
h-offset(必需):水平偏移量。正值阴影向右偏移,负值向左偏移。
v-offset(必需):垂直偏移量。正值阴影向下偏移,负值向上偏移。
blur(可选):模糊半径。值越大阴影越模糊、越淡,默认为0(边缘锐利)。不允许负值。
spread(可选):扩展半径。正值扩大阴影范围,负值收缩阴影范围,默认为0(与元素等大)。
color(可选):阴影颜色。支持hex、rgb、rgba、hsl等所有CSS颜色格式。未指定时通常继承元素的color属性值。
inset(可选):关键字。添加后阴影变为内阴影,绘制在边框内部、背景之上、内容之下,产生凹陷效果。不添加时默认为外阴影(投影效果)。
默认值与继承性:box-shadow的默认值为none,该属性不可继承,也不影响盒模型的构成。
基础外阴影:最常见的卡片悬浮效果,使用半透明黑色阴影营造浮起感。
.card {
width: 200px;
height: 120px;
background: #fff;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}硬边缘阴影:不设置模糊半径,产生清晰的投影效果,适合复古或扁平化设计风格。
.retro-box {
box-shadow: 6px 6px 0 #333;
}内阴影效果:模拟输入框或按钮的凹陷状态,常用于表单控件的聚焦样式。
.input-box {
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);
}多层阴影叠加:通过逗号分隔多个阴影,实现更丰富的层次感。第一个阴影在最上层。
.elevated-card {
box-shadow:
0 2px 4px rgba(0, 0, 0, 0.1),
0 4px 8px rgba(0, 0, 0, 0.1),
0 8px 16px rgba(0, 0, 0, 0.15);
}发光效果:利用较大的模糊半径和扩展半径配合彩色阴影,实现霓虹灯式的发光效果。
.glow-button {
box-shadow: 0 0 8px 4px #ff5722;
}内阴影与外阴影混合:同时使用inset和普通阴影,模拟立体质感。
.fancy-input {
box-shadow:
inset 0 1px 2px rgba(0, 0, 0, 0.1),
0 1px 2px rgba(255, 255, 255, 0.9);
}blur-radius不允许负值:模糊半径如果传入负值,整个声明将被浏览器忽略,阴影不会生效。而spread半径允许负值,可以用来收缩阴影范围。
多层阴影的层叠顺序:多个阴影用逗号分隔时,先声明的阴影在Z轴上位于更上层。如果需要同时使用内阴影和外阴影,内阴影声明的顺序会影响最终的视觉叠加效果。
与border-radius的配合:如果元素设置了border-radius,阴影会自动跟随圆角形状渲染,无需额外处理。这一特性在制作圆角卡片的投影效果时非常方便。
性能考量:避免过度使用多层高模糊值的阴影,尤其是在大量元素或频繁动画的场景下,可能引发GPU性能问题。如果需要动画过渡阴影效果,建议配合will-change: box-shadow或transform: translateZ(0)开启硬件加速。
动画插值规则:当对box-shadow进行过渡动画时,如果前后状态的阴影列表长度不同,浏览器会用透明阴影补齐较短的列表再进行插值。但如果一对阴影中一个有inset而另一个没有,则整个阴影列表将无法动画过渡,会直接跳变。
浏览器兼容性:box-shadow自2015年7月起已在所有主流浏览器中得到广泛支持。当前开发中通常无需添加-webkit-或-moz-前缀,但如果需要兼容非常老旧的浏览器版本,可酌情添加。
![]()
box-shadow是一个功能强大且灵活的CSS属性,通过h-offset、v-offset、blur、spread、color和inset六个参数的组合,可以实现从简单投影到复杂多层立体效果的各类阴影需求。在实际开发中,需要注意模糊半径不能为负值、多层阴影的层叠顺序、与border-radius的自动配合以及性能优化等关键细节。合理使用box-shadow,能够以极低的代码成本显著提升页面的视觉层次和交互体验。
声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com
通过手机号码查询近3个月总停机次数标签信息,统计近3个月内停机的次数。
通过手机号查询判断该号码实名用户年龄区间标签信息。
通过三网运营商手机号码和指定月份,查询号码近3个月话费消费区间标签详情及评分。
通过车架号或车牌号查询车辆是否为营运车辆
通过车架号查询车辆的如品牌名称、车系名称、车型、排量、排放标准、外形尺寸、轮胎规格、变速器类型、公告号、轴距等等详细信息