news 2026/6/15 19:20:51

第15篇:阴影与视觉效果

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第15篇:阴影与视觉效果

第15篇:阴影与视觉效果

阴影是赋予界面深度和层次感的关键手段。从简单的盒子阴影到多层叠加的复杂效果,从文本阴影到 CSS 滤镜,掌握这些视觉工具能让你的设计从"平面"走向"立体"。


学习目标

  • 掌握 box-shadow 的语法和多层阴影叠加
  • 理解内阴影(inset)的使用场景
  • 学会用 text-shadow 创造文字特效
  • 掌握 filter 属性的常用滤镜效果
  • 了解 backdrop-filter 的毛玻璃效果
  • 学会用阴影创造 Material Design 风格的 elevation 系统

核心知识点

一、box-shadow 盒子阴影

基础语法
/* 语法:x偏移 y偏移 模糊半径 扩散半径 颜色 */.box{box-shadow:2px 4px 8pxrgba(0,0,0,0.15);/* x y blur spread color */}

各参数说明:

参数说明必须
x-offset水平偏移,正值向右
y-offset垂直偏移,正值向下
blur-radius模糊半径,越大越模糊❌(默认 0)
spread-radius扩散半径,正值扩大,负值收缩❌(默认 0)
color阴影颜色❌(默认 inherit)
基础阴影效果
/* 轻微阴影 — 卡片 hover */.card{box-shadow:0 2px 4pxrgba(0,0,0,0.1);}/* 中等阴影 — 普通卡片 */.card-elevated{box-shadow:0 4px 12pxrgba(0,0,0,0.15);}/* 强烈阴影 — 模态框/浮层 */.modal{box-shadow:0 16px 48pxrgba(0,0,0,0.2);}
多层阴影叠加
/* 多层阴影用逗号分隔,先写的在上层 */.realistic-card{box-shadow:0 1px 2pxrgba(0,0,0,0.07),0 2px 4pxrgba(0,0,0,0.07),0 4px 8pxrgba(0,0,0,0.07),0 8px 16pxrgba(0,0,0,0.07),0 16px 32pxrgba(0,0,0,0.07);}

💡 多层不同模糊半径的阴影叠加,比单层阴影更自然,更接近真实世界的光照效果。

内阴影(inset)
/* 凹陷效果 */.inset-box{box-shadow:inset 0 2px 4pxrgba(0,0,0,0.1);}/* 输入框聚焦 */.input-focus:focus{box-shadow:inset 0 0 0 2px #4a90d9;outline:none;}/* 复合效果:外阴影 + 内阴影 */.complex{box-shadow:0 4px 12pxrgba(0,0,0,0.1),/* 外层投影 */inset 0 1px 0rgba(255,255,255,0.5);/* 内层高光 */}
单边阴影
/* 底部阴影 */.bottom-shadow{box-shadow:0 4px 6px -2pxrgba(0,0,0,0.1);/* y blur spread *//* 负的 spread 让阴影只在一侧 */}/* 顶部阴影 */.top-shadow{box-shadow:0 -4px 6px -2pxrgba(0,0,0,0.1);}

二、text-shadow 文字阴影

/* 基础阴影 */.text-shadow{text-shadow:2px 2px 4pxrgba(0,0,0,0.3);}/* 发光效果 */.text-glow{color:#fff;text-shadow:0 0 10px #4a90d9,0 0 20px #4a90d9;}/* 浮雕效果 */.text-emboss{color:#ccc;text-shadow:-1px -1px 0 #fff,1px 1px 0 #999;}/* 3D 立体文字 */.text-3d{text-shadow:1px 1px 0 #ddd,2px 2px 0 #ccc,3px 3px 0 #bbb,4px 4px 0 #aaa;}

三、Material Design Elevation 系统

用 box-shadow 模拟不同高度层级:

:root{--shadow-1:0 1px 3pxrgba(0,0,0,0.12),0 1px 2pxrgba(0,0,0,0.24);--shadow-2:0 3px 6pxrgba(0,0,0,0.15),0 2px 4pxrgba(0,0,0,0.12);--shadow-3:0 10px 20pxrgba(0,0,0,0.15),0 3px 6pxrgba(0,0,0,0.10);--shadow-4:0 15px 25pxrgba(0,0,0,0.15),0 5px 10pxrgba(0,0,0,0.05);--shadow-5:0 20px 40pxrgba(0,0,0,0.2);}.elevation-1{box-shadow:var(--shadow-1);}/* 按钮 */.elevation-2{box-shadow:var(--shadow-2);}/* 卡片 */.elevation-3{box-shadow:var(--shadow-3);}/* 下拉菜单 */.elevation-4{box-shadow:var(--shadow-4);}/* 对话框 */.elevation-5{box-shadow:var(--shadow-5);}/* 模态框 *//* 悬停提升 */.card{box-shadow:var(--shadow-1);transition:box-shadow 0.3s ease;}.card:hover{box-shadow:var(--shadow-3);}

四、CSS filter 滤镜

/* 模糊 */.blur{filter:blur(4px);}/* 亮度 */.bright{filter:brightness(1.2);}.dark{filter:brightness(0.8);}/* 对比度 */.contrast{filter:contrast(1.2);}/* 灰度 */.grayscale{filter:grayscale(100%);}/* 色相旋转 */.hue-rotate{filter:hue-rotate(90deg);}/* 反色 */.invert{filter:invert(100%);}/* 饱和度 */.saturate{filter:saturate(1.5);}.desaturate{filter:saturate(0);}/* 深褐色 */.sepia{filter:sepia(100%);}/* 组合滤镜 */.combo{filter:brightness(1.1)contrast(1.2)saturate(1.1);}

悬停变灰效果:

.gallery img{filter:grayscale(100%);transition:filter 0.3s;}.gallery img:hover{filter:grayscale(0);}

五、backdrop-filter 背景滤镜(毛玻璃效果)

/* 毛玻璃效果 */.glass{background:rgba(255,255,255,0.2);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);/* Safari */border:1px solidrgba(255,255,255,0.3);}/* 深色毛玻璃 */.glass-dark{background:rgba(0,0,0,0.3);backdrop-filter:blur(16px)saturate(180%);-webkit-backdrop-filter:blur(16px)saturate(180%);}

⚠️backdrop-filter需要元素背后有内容才能看到效果。如果元素背景是不透明的,滤镜将不可见。


六、阴影的最佳实践

颜色选择
/* ❌ 避免纯黑色阴影 */.bad-shadow{box-shadow:0 4px 8pxrgba(0,0,0,0.3);}/* ✅ 使用与主题色相协调的阴影 */.good-shadow{box-shadow:0 4px 8pxrgba(74,144,217,0.2);}/* ✅ 或使用低透明度的深色 */.neutral-shadow{box-shadow:0 4px 8pxrgba(15,23,42,0.15);}
性能注意
/* 模糊半径过大会影响性能 */.expensive{box-shadow:0 0 100pxrgba(0,0,0,0.5);/* 谨慎使用大 blur */}/* 动画建议只改变 opacity,而非 shadow 属性 */.animated-shadow{transition:opacity 0.3s;box-shadow:0 4px 12pxrgba(0,0,0,0.15);}

动手练习

练习 1:Elevation 卡片系统

创建一套 5 级阴影的卡片系统:

  • 定义 5 个层级的 CSS 变量
  • 不同重要程度的卡片使用不同层级
  • 悬停时卡片提升一个层级,有过渡动画

练习 2:毛玻璃导航栏

实现一个固定在顶部的导航栏:

  • 背景半透明 + backdrop-filter 模糊
  • 底部有微妙的阴影分隔
  • 滚动时阴影加深

练习 3:图片滤镜画廊

创建一个图片画廊:

  • 默认状态图片为灰度
  • 悬停时恢复彩色,并添加亮度提升
  • 选中状态添加不同的滤镜效果

常见误区 ⚠️

误区真相
box-shadow会影响布局(占据空间)”不会!阴影不占据空间,不影响元素尺寸和文档流
box-shadow的 spread 可以为负”可以!负的 spread 会让阴影收缩
“多层阴影的顺序无所谓”顺序重要,先写的在上层
text-shadow可以设置 spread”不可以!text-shadow 没有 spread 参数
filterbackdrop-filter一样”filter作用于元素本身;backdrop-filter作用于元素背后的内容
backdrop-filter不需要前缀了”Safari 仍需要-webkit-backdrop-filter
“阴影颜色必须用黑色”可以用任何颜色,使用与主题协调的颜色更自然
box-shadow可以过渡动画”可以!但性能开销较大,动画时建议只改变 opacity 或使用 transform
“内阴影和外阴影不能同时用”可以同时使用,用逗号分隔

速查卡片 📋

box-shadow 语法

box-shadow:x-offset y-offset blur spread color inset;

常用阴影模板

--shadow-sm:0 1px 2pxrgba(0,0,0,0.05);--shadow-md:0 4px 6pxrgba(0,0,0,0.1);--shadow-lg:0 10px 15pxrgba(0,0,0,0.1);--shadow-xl:0 20px 25pxrgba(0,0,0,0.15);

filter 滤镜速查

filter:blur(4px);filter:brightness(1.2);filter:contrast(1.2);filter:grayscale(100%);filter:hue-rotate(90deg);filter:invert(100%);filter:saturate(1.5);filter:sepia(100%);

毛玻璃模板

.glass{background:rgba(255,255,255,0.2);backdrop-filter:blur(10px);border:1px solidrgba(255,255,255,0.3);}

扩展阅读

  • MDN: box-shadow
  • MDN: text-shadow
  • MDN: filter
  • MDN: backdrop-filter
  • Material Design Elevation(英文)

📌配套代码

  • CODE/15/shadow-system.html — 阴影层级系统与 elevation 演示
  • CODE/15/filter-effects.html — 滤镜与毛玻璃效果演示

🎉下一步:进入 第16篇:文档流与浮动,学习 CSS 最核心的布局基础——文档流。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 19:20:02

Streamlit+GPT-4构建可运行数据可视化工作台

1. 项目概述:用 Streamlit 搭建一个“会说话”的数据可视化工作台我做数据可视化项目快十二年了,从 Matplotlib 手写坐标轴开始,到后来用 Plotly 做交互,再到用 Dash 搞企业级仪表盘,一路踩坑过来。但真正让我在凌晨三…

作者头像 李华
网站建设 2026/6/15 19:19:57

禅论自动化分析:让复杂技术分析变得简单直观

禅论自动化分析:让复杂技术分析变得简单直观 【免费下载链接】Indicator 通达信缠论可视化分析插件 项目地址: https://gitcode.com/gh_mirrors/ind/Indicator 在金融市场的技术分析领域,缠论可视化分析正成为越来越多交易者的选择。CZSC.dll这款…

作者头像 李华
网站建设 2026/6/15 19:18:54

MPC8533E eTSEC接口与DMA控制器配置实战指南

1. 项目概述与核心价值在嵌入式网络设备开发中,以太网控制器的配置往往是决定系统稳定性和性能的关键一环。MPC8533E PowerQUICC III处理器集成的Enhanced Three-Speed Ethernet Controller,即eTSEC,是一个功能强大的三速以太网控制器&#x…

作者头像 李华
网站建设 2026/6/15 19:15:55

CANN HCOMM通信基础库架构深度剖析:控制面资源管理与数据面通信原语的分层解耦设计及工程调优实录

前言 在昇腾NPU的大规模分布式训练场景中,多卡间的通信效率直接决定了整体训练吞吐的上限。CANN软件栈中的HCCL承担了集合通信的核心职责,而HCOMM作为HCCL的通信基础库,为上层提供了通信域管理与通信资源调度的底层支撑。当训练集群从单机8卡…

作者头像 李华
网站建设 2026/6/15 19:03:53

从分形有效性到认知越界:论LLM递归结构对“抽象屏障”的消解

摘要:DeepMind近期发布的AGI路线图中提出的“抽象屏障”(Abstraction Wall,链接,中文描述),被视为当前大模型通向通用智能的核心瓶颈——即便算力与交互规模足够,LLM仍将被锁死在人类语料的概念…

作者头像 李华