0

0

CSS3阴影效果怎么加_textshadow和boxshadow区别【技巧】

蓮花仙者

蓮花仙者

发布时间:2025-12-31 19:22:03

|

454人浏览过

|

来源于php中文网

原创

text-shadow仅作用于文字内容,box-shadow才用于整个元素阴影;前者语法无spread-radius且不支持内阴影,后者可控制扩张、内陷及多层叠加,是UI阴影首选。

css3阴影效果怎么加_textshadow和boxshadow区别【技巧】

text-shadow 只作用于文字,不能给整个元素加阴影

很多人误以为 text-shadow 可以让按钮、卡片或 div 块级元素带阴影,其实它只影响元素内纯文本内容的渲染。哪怕你给一个

hello
加了 text-shadow,阴影也只会贴着 “hello” 这几个字边缘出现,不会延伸到背景、边框或空白区域。

常见错误现象:
– 给按钮加了 text-shadow 却发现点击区域没阴影感
– 用 text-shadow 模拟卡片浮起效果,结果阴影被父容器裁剪或完全不可见

  • text-shadow 语法是 text-shadow: h-offset v-offset blur-radius color,不支持扩展半径、内阴影、多层叠加写法(CSS4 才支持多层,但兼容性差)
  • 它不受 transformfilter: drop-shadow() 影响,是独立的渲染层
  • 性能较好,尤其适合标题、图标字体等小范围文字增强

box-shadow 是给整个元素盒模型加阴影,支持内阴影和多层

box-shadow 作用对象是元素的 border box(含 border,不含 margin),所以能真实模拟“浮起”“凹陷”“卡片投影”这类 UI 效果。它才是做 UI 阴影的主力。

使用场景:
– 卡片悬浮时加深阴影
– 输入框聚焦态添加柔和外扩阴影
– 按钮按下时切换为 inset 内阴影模拟按压感

立即学习前端免费学习笔记(深入)”;

  • 基础语法:box-shadow: h-offset v-offset blur-radius spread-radius color,其中 spread-radiustext-shadow 没有的关键参数,控制阴影大小扩张
  • inset 关键字就能实现内阴影,比如 box-shadow: inset 0 2px 4px rgba(0,0,0,0.1)
  • 支持逗号分隔写多个阴影,例如同时加外扩+内陷:box-shadow: 0 4px 12px rgba(0,0,0,0.15), inset 0 -2px 4px rgba(255,255,255,0.8)
  • 注意:box-shadow 不会触发重排(reflow),但大量使用模糊大值(如 blur-radius > 30px)在低端设备上可能影响绘制帧率

别用 text-shadow 替代 box-shadow 做布局阴影

曾见过用 8 层 text-shadow 模拟毛玻璃卡片阴影的写法,虽然视觉上有点像,但问题一堆:文字必须存在、换行后阴影错位、无法响应鼠标事件区域变化、无障碍阅读器识别混乱。

唱鸭
唱鸭

音乐创作全流程的AI自动作曲工具,集 AI 辅助作词、AI 自动作曲、编曲、混音于一体

下载

真正该选谁,看这个判断逻辑:

  • 只要阴影要包裹整个可点击区域(比如按钮、卡片、模态框),一律用 box-shadow
  • 只希望标题/Logo 文字本身有描边、浮雕、发光等装饰效果,才用 text-shadow
  • 如果需要阴影跟随元素变形(如旋转、缩放),box-shadow 会随 transform 自动适配;text-shadow 则始终相对于文字基线固定

替代方案:filter: drop-shadow() 更灵活但有坑

filter: drop-shadow() 看似万能——它基于元素 Alpha 通道生成阴影,能绕过 border-radius 裁剪、支持不规则图形(比如 SVG、PNG 透明图),但它不是盒模型属性,行为更接近图像滤镜。

容易踩的坑:

  • 它会作用于整个渲染层,父元素如果有 overflow: hidden,阴影照样被裁掉(和 box-shadow 一样)
  • 不支持 inset,也不能设 spread-radius
  • 在 Safari 旧版本中对 transform 元素的阴影位置计算有偏差
  • 开启硬件加速后,部分安卓 WebView 会出现阴影闪烁或消失
/* 推荐仅用于特殊场景,例如给带圆角的图片加自然阴影 */
img.rounded {
  border-radius: 12px;
  filter: drop-shadow(0 4px 12px rgba(0,0,0,0.15));
}

最常被忽略的一点:阴影的视觉层级由堆叠上下文决定,而不是单纯靠 z-index。哪怕你给子元素写了很大的 box-shadow,如果父容器建立了新层叠上下文(比如设置了 opacity 或 will-change: transform),阴影也会被截断在父容器边界内。

相关专题

更多
css3教程
css3教程

php中文网为大家提供css3教程合集,CSS3的语法是建立在CSS原先版本基础上的,它允许使用者在标签中指定特定的HTML元素而不必使用多余的class、ID或JavaScript。php中文网还为大家带来css3的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

371

2023.06.14

有哪些css3渐变属性
有哪些css3渐变属性

css3中渐变属性有linear-gradient、radial-gradient、conic-gradient、repeating-linear-gradient、repeating-radial-gradient等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

138

2023.11.01

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

366

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

561

2023.08.10

overflow什么意思
overflow什么意思

overflow是一个用于控制元素溢出内容的属性,当元素的内容超出其指定的尺寸时,overflow属性可以决定如何处理这些溢出的内容。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1686

2024.08.15

margin在css中是啥意思
margin在css中是啥意思

在CSS中,margin是一个用于设置元素外边距的属性。想了解更多margin的相关内容,可以阅读本专题下面的文章。

422

2023.12.18

html边框设置教程
html边框设置教程

本教程将带你全面掌握HTML/CSS边框设置,从基础的border属性讲起,涵盖所有边框样式、圆角设置及高级技巧,帮助你快速上手实现各种边框效果。

31

2025.09.02

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

3

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

1

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.7万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.7万人学习

CSS教程
CSS教程

共754课时 | 17.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号