css 阴影:盒子阴影、文本阴影、为元素添加投影、CSS 渐变模拟阴影

发布时间:2025-05-10      访问量:32
CSS 阴影效果是增强网页视觉深度和层次感的重要工具。通过阴影,可以创建元素悬浮、凸起或凹陷的效果,使界面更具立体感。以下是 CSS 中实现阴影效果的主要方式:


1. **box-shadow**
为元素添加外部阴影。

css .box { box-shadow: h-offset v-offset blur spread color inset; }

- **参数解释**:
- `h-offset`(必需):水平偏移量,正值向右,负值向左。
- `v-offset`(必需):垂直偏移量,正值向下,负值向上。
- `blur`(可选):模糊半径,值越大阴影越模糊。
- `spread`(可选):扩展半径,正值使阴影扩大,负值使阴影缩小。
- `color`(可选):阴影颜色,默认继承元素文本颜色。
- `inset`(可选):将阴影改为内部阴影(从边缘向内投射)。

**示例**:
css /* 基本阴影 */ .card { box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); } /* 悬停时的动态阴影 */ .button:hover { box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); } /* 内部阴影 */ .input:focus { box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2); } /* 多重阴影 */ .avatar { box-shadow: 0 0 0 4px white, 0 0 0 8px #3498db; }


2. **text-shadow**
为文本添加阴影。

css .text { text-shadow: h-offset v-offset blur color; }

- **参数解释**:
- `h-offset`(必需):水平偏移量。
- `v-offset`(必需):垂直偏移量。
- `blur`(可选):模糊半径。
- `color`(可选):阴影颜色。

**示例**:
css /* 基本文本阴影 */ .title { text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5); } /* 发光效果 */ .highlight { text-shadow: 0 0 10px #fff, 0 0 20px #fff, 0 0 30px #ff00de; } /* 多重阴影实现浮雕效果 */ .embossed { text-shadow: 1px 1px 0 #fff, -1px -1px 0 #000; }


3. **filter: drop-shadow()**
为元素(包括透明部分)添加投影,常用于 SVG 或带有透明区域的元素。

css .element { filter: drop-shadow(h-offset v-offset blur color); }

**示例**:
css /* 为图标添加阴影 */ .icon { filter: drop-shadow(2px 2px 3px rgba(0, 0, 0, 0.5)); } /* 为透明 PNG 添加阴影 */ .logo { filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.1)); }


4. **CSS 渐变模拟阴影**
使用 `background-image` 和渐变创建自定义阴影效果。

css /* 顶部渐变阴影 */ .header { background-image: linear-gradient(to bottom, rgba(0,0,0,0.2), transparent); }


5. **阴影技巧与最佳实践**
- **多层阴影**:通过逗号分隔多个阴影值创建复杂效果。
```css
.card {
box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
}
```

- **动态阴影**:结合 `transition` 和 `:hover` 创建交互效果。
```css
.button {
transition: box-shadow 0.3s ease;
}
.button:hover {
box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23);
}
```

- **阴影颜色与透明度**:使用 RGBA 或 HSLA 控制透明度。
```css
.floating {
box-shadow: 0 15px 25px -12px rgba(0, 0, 0, 0.4);
}
```


6. **浏览器兼容性**
- `box-shadow` 和 `text-shadow`:支持现代浏览器及 IE9+。
- `filter: drop-shadow()`:支持现代浏览器及 IE13+(Edge)。


示例展示
以下是一个使用多种阴影效果的卡片组件:

css .card { background: white; border-radius: 8px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); transition: all 0.3s ease; } .card:hover { box-shadow: 0 10px 20px rgba(0, 0, 0, 0.15); transform: translateY(-5px); } .card-title { text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1); } .card-image { filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.2)); }


总结
- **box-shadow**:适用于元素外部阴影,支持内部阴影和多重阴影。
- **text-shadow**:专门用于文本,可创建立体感或装饰效果。
- **filter: drop-shadow()**:适用于透明元素,生成自然投影。
- **渐变阴影**:自定义形状的阴影效果。

合理运用阴影可以显著提升界面的视觉层次和用户体验,但应避免过度使用导致页面显得沉重或杂乱。
堆内存
多线程
strdup
初始化器
冒泡排序
增删改查
BufferedReader
输入输出
面向对象
生命周期
闭包的概念
原型链
Flask
mysql-connector-python
单例模式
浅拷贝
隔离级别
索引
InnoDB
左连接
聚合函数
PuTTY
TRUNCATE
str_starts_with_many
DateTime
array_combine
闭包的概念