您的位置:

深入了解HTML box-shadow

HTML box-shadow是CSS3的一种新特性,它可以使一个元素产生一个或多个阴影效果,并且与框的边框之外呈现。本文将从多个角度深入探讨HTML box-shadow的各种用法,帮助开发者更好地了解该特性并加以应用。

一、基础用法

1、简单阴影效果

.box {
  box-shadow: 5px 5px 5px #888888;
}

该效果将在元素右侧和下方产生一个5像素的阴影,阴影颜色为#888888。

2、多重阴影效果

.box {
  box-shadow: 
    5px 5px 5px #888888,
    10px 10px 5px #888888;
}

多个box-shadow属性定义多个阴影效果,各属性之间用逗号隔开。该效果将在元素右下方产生一个大小为5像素、颜色为#888888的阴影,以及一个大小为10像素、颜色为#888888的阴影。

3、立体化效果

.box {
  box-shadow: 2px 2px 2px #888888, -2px -2px 2px #888888;
}

通过在阴影大小参数中使用正数和负数,可以创建一个立体化效果。该效果将在元素四周产生大小为2像素、颜色为#888888的阴影,左上角和右下角的阴影为下凸出的立体效果,右上角和左下角的阴影为上凸出的立体效果。

二、深入了解参数

1、长度单位

box-shadow中的长度值可以使用任何CSS长度单位,包括:像素(px)、EMs、REMs、百分比等。如下代码可以让一个元素生成3像素宽、距离左上方三像素、颜色为#333333的阴影:

.box {
  box-shadow: 3px 3px #333333;
}

2、偏移量

阴影的第一个参数确定偏移量,第一个参数通常是阴影的水平和垂直偏移量,可以使用2个值分别指定偏移量,也可以使用1个值指定相同的偏移量。如果省略第2个参数,则默认值等于第一个参数,使阴影在所有方向上有相同的偏移量。

.box {
  box-shadow: 3px 6px #333333;
}

3、模糊半径

模糊半径决定阴影的边缘模糊程度。模糊半径值越大,阴影就越模糊,而值越小则阴影就越尖锐,甚至于没有模糊效果。如果省略第3个参数,则默认为0,使阴影变成一个尖锐的斜线效果。

.box {
  box-shadow: 3px 6px 10px #333333;
}

4、扩张半径

扩张半径可以扩大或者缩小阴影面积。如果省略第4个参数,则阴影保持在边框的内侧,完全在元素内部,而不会扩张到元素的外部。如果定义的值为负数,则使阴影收缩到元素内部。扩张半径不会改变阴影的颜色,只增加了阴影的宽度/高度。

.box {
  box-shadow: 2px 2px 2px 2px #333333;
}

三、使用技巧与案例展示

1、制作按钮效果

box-shadow可以很好地应用于按钮效果,通过使用不同的偏移量、模糊半径和颜色,可以创建出各种风格的按钮。例如,下方代码可以创建一个漂亮的扁平化按钮:

.btn {
  display: inline-block;
  padding: 0.75rem 1.5rem;
  border-radius: 3px;
  background-color: #333333;
  color: #ffffff;
  box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.2);
}

2、创建3D效果的盒子

通过使用不同颜色和偏移量,可以为元素创建3D效果的盒子,使元素在页面中更为突出。例如,下方代码可以创建一个黑色盒子,并在鼠标悬停时产生类似于翘边的3D效果:

.box {
  width: 200px;
  height: 200px;
  background-color: #333333;
  box-shadow: 0 0 20px rgba(0, 0, 0, 0.5);
  transition: all 0.5s ease-in-out;
}

.box:hover {
  box-shadow: 
    -5px -5px 20px rgba(0, 0, 0, 0.5),
    5px 5px 20px rgba(0, 0, 0, 0.5);
}

3、创建动态分割页面

通过使用box-shadow属性,可以创建出一个分割页面的效果。例如,下方代码可以创建一个动态分割页面,用户可以通过拖动条来调整分割线的位置:

.split {
  height: 500px;
  position: relative;
  overflow: hidden;
}

.leftpane, .rightpane {
  height: 100%;
  position: absolute;
  top: 0;
  bottom: 0;
  overflow: scroll;
}

.split .divider {
  width: 5px;
  height: 100%;
  position: absolute;
  left: 50%;
  top: 0;
  bottom: 0;
  margin-left: -2.5px;
  background-color: #333333;
  cursor: col-resize;
  box-shadow: 
    -2px 0 2px rgba(0, 0, 0, 0.3),
    2px 0 2px rgba(0, 0, 0, 0.3);
}

.split .divider:hover {
  box-shadow: 
    -5px 0 5px rgba(0, 0, 0, 0.5),
    5px 0 5px rgba(0, 0, 0, 0.5);
}

.split.leftpane .inner {
  margin: 1em;
  padding: 1em;
  background-color: #ffffff;
  box-shadow: 
    5px 0 15px -5px #888888,
    -5px 0 15px -5px #888888;
}

.split.rightpane .inner {
  margin: 1em;
  padding: 1em;
  background-color: #ffffff;
  box-shadow: 
    -5px 0 15px -5px #888888,
    5px 0 15px -5px #888888;
}

四、总结

HTML box-shadow是一种非常有用的CSS3特性,可以为网页元素增加各种不同的阴影效果。本文详细介绍了box-shadow的各种用法,包括基础用法、参数细节、使用技巧和案例展示。