CSS阴影
CSS阴影允许你为元素添加阴影效果,增强元素的视觉层次感和立体感。CSS提供了两种主要的阴影效果:文本阴影和盒阴影。
文本阴影 (text-shadow)
文本阴影用于为文本添加阴影效果。
基础语法
css
.element {
text-shadow: h-shadow v-shadow blur-radius color;
}
参数说明:
- h-shadow:水平阴影的位置,可以是正值(向右)或负值(向左)
- v-shadow:垂直阴影的位置,可以是正值(向下)或负值(向上)
- blur-radius:可选,模糊半径,值越大阴影越模糊
- color:可选,阴影的颜色
基本示例
css
/* 简单文本阴影 */
.element {
text-shadow: 2px 2px 4px rgba(0,0,0,0.5);
}
/* 无模糊效果的文本阴影 */
.element {
text-shadow: 2px 2px 0px red;
}
/* 多阴影效果 */
.element {
text-shadow: 1px 1px 2px black, 0 0 25px blue, 0 0 5px darkblue;
}
盒阴影 (box-shadow)
盒阴影用于为元素的盒子模型添加阴影效果。
基础语法
css
.element {
box-shadow: h-shadow v-shadow blur-radius spread-radius color inset;
}
参数说明:
- h-shadow:水平阴影的位置,可以是正值(向右)或负值(向左)
- v-shadow:垂直阴影的位置,可以是正值(向下)或负值(向上)
- blur-radius:可选,模糊半径,值越大阴影越模糊
- spread-radius:可选,阴影的扩展半径,正值会扩大阴影,负值会缩小阴影
- color:可选,阴影的颜色
- inset:可选,将阴影设置为内部阴影(默认是外部阴影)
基本示例
css
/* 简单盒阴影 */
.element {
box-shadow: 2px 2px 4px rgba(0,0,0,0.5);
}
/* 带有扩展半径的盒阴影 */
.element {
box-shadow: 2px 2px 4px 6px rgba(0,0,0,0.3);
}
/* 内部阴影 */
.element {
box-shadow: inset 2px 2px 4px rgba(0,0,0,0.5);
}
/* 多阴影效果 */
.element {
box-shadow:
0 4px 8px 0 rgba(0,0,0,0.2),
0 6px 20px 0 rgba(0,0,0,0.19);
}
/* 内外部同时有阴影 */
.element {
box-shadow:
inset 0 0 10px rgba(0,0,0,0.3),
0 4px 8px rgba(0,0,0,0.2);
}
阴影颜色
阴影颜色可以使用任何CSS颜色表示方法,包括十六进制、RGB、RGBA、HSL、HSLA等。使用RGBA或HSLA可以设置阴影的透明度。
css
.element {
/* 使用十六进制 */
text-shadow: 2px 2px 4px #000000;
/* 使用RGB */
box-shadow: 2px 2px 4px rgb(0, 0, 0);
/* 使用RGBA(带透明度) */
box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
/* 使用HSLA */
box-shadow: 2px 2px 4px hsla(0, 0%, 0%, 0.5);
}
阴影与过渡
将阴影与CSS过渡结合使用,可以创建平滑的悬停效果。
css
.button {
background-color: blue;
color: white;
padding: 10px 20px;
box-shadow: 0 2px 4px rgba(0,0,0,0.2);
transition: box-shadow 0.3s ease;
}
.button:hover {
box-shadow: 0 4px 8px rgba(0,0,0,0.4);
}
阴影应用场景
卡片效果
css
.card {
background-color: white;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}
按钮效果
css
.button {
background-color: #4CAF50;
color: white;
padding: 12px 24px;
border: none;
border-radius: 4px;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
cursor: pointer;
transition: box-shadow 0.3s ease;
}
.button:hover {
box-shadow: 0 6px 12px rgba(0,0,0,0.2);
}
.button:active {
box-shadow: 0 2px 4px rgba(0,0,0,0.3);
transform: translateY(2px);
}
悬浮效果
css
.hover-card {
background-color: white;
padding: 20px;
transition: all 0.3s ease;
}
.hover-card:hover {
transform: translateY(-5px);
box-shadow: 0 10px 20px rgba(0,0,0,0.1);
}
浏览器兼容性
文本阴影和盒阴影在现代浏览器中有很好的支持:
- text-shadow:IE 10+,所有现代浏览器
- box-shadow:IE 9+,所有现代浏览器
对于旧版本浏览器的支持,可以考虑使用JavaScript库或回退方案。
性能考虑
- 复杂的阴影效果可能会影响性能,特别是在移动设备上
- 避免在大量元素上使用复杂的阴影
- 使用硬件加速可以提高阴影性能
css
.element {
transform: translateZ(0); /* 启用硬件加速 */
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}