一、基本概念
原点为基点,原点左侧为x轴负方向,值为负,右侧为正;原点下方为y轴正方向,值为正,上方为负。
语法书写:box-shadow: 1px 2px 3px 4px #ccc inset;
以上六个值的含义:
- 1px
x偏移量,从原点开始,沿x轴正方向的长度(倘若为负值,为沿x轴负方向的长度)。 - 2px
y偏移量,从原点开始,沿y轴正方向的长度;(倘若为负值,为沿y轴负方向的长度)。 - 3px
模糊半径,模糊程度,值越大越模糊,只允许为正值;当模糊半径大于偏移量时,以大值为阴影区域。 - 4px
扩展半径,真实的阴影区域的半径(宽度),为偏移量+扩展半径。 - #ccc
阴影颜色,可设置多个值,用半角逗号隔开。 - inset 设置为
内阴影(如果不写这个值,默认为外阴影)。
二、实际效果
1、对比模糊度
模糊度体现的是阴影区的糊化程度,但是模糊度会影响阴影的范围。 下图右侧阴影20px,但是模糊度为50px时,阴影的宽度变了很多。
2、对比阴影扩展半径
模糊半径是在阴影X轴、Y轴阴影长度的基础上增加该半径的长度,即实际的X、Y轴的阴影长度为两者相加的结果。
当四个边或三个边需要设置阴影时,需要用到阴影扩展半径。
3、四个边设置阴影
4、三个边设置阴影
5、两个边设置阴影
对立边
相邻边
6、多色阴影
三、完整源码,可直接运行使用
码上掘金代码片段直接运行
完整源码
以下为完整html页面,效果图在最下面:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
<meta name="format-detection" content="telephone=no,email=no,date=no,address=no" />
<title>box-shadow</title>
<style>
body {
padding: 0px 20px;
}
.box-item {
width: 300px;
height: 120px;
border: 1px solid #999;
border-radius: 8px;
margin-bottom: 60px;
}
/* 模糊度 */
.outer {
box-shadow: 20px 10px 0px 0px #ff8c1a;
}
.outer-moHuDu20 {
box-shadow: 20px 10px 20px 0px #ff8c1a;
}
.outer-moHuDu50 {
box-shadow: 20px 10px 50px 0px #ff8c1a;
}
/* 阴影半径 */
.outer-radius10 {
box-shadow: 20px 10px 0px 10px #ff8c1a;
}
.outer-radius20 {
box-shadow: 20px 10px 0px 20px #ff8c1a;
}
/* 四个边设置阴影 */
.outer-four10 {
box-shadow: 0px 0px 0px 10px #ff8c1a;
}
.inner-four10 {
box-shadow: 0px 0px 0px 10px #ff8c1a inset;
}
/* 三个边设置阴影 */
.outer-three10 {
box-shadow: 10px 0px 0px 10px #ff8c1a;
}
.inner-three10 {
box-shadow: -10px 0px 0px 10px #ff8c1a inset;
}
/* 两个边设置阴影-对立边 */
.outer-two-duiLi10 {
box-shadow: 10px 0 red, -10px 0 0 blue;
}
/* 两个边设置阴影-相邻边 */
.outer-two-xiangLin10 {
box-shadow: -10px -10px 0px 0px #ff8c1a; /* 左上*/
/* box-shadow: 10px -10px 0px 0px #ff8c1a; /* 右上 */
/* box-shadow: 10px 10px 0px 0px #ff8c1a; /* 右下 */
/* box-shadow: -10px 10px 0px 0px #ff8c1a; /* 左下 */
}
.inner-two-xiangLin10 {
box-shadow: 10px 10px 0px 0px #ff8c1a inset; /* 左上(对应向外的右下)*/
/* box-shadow: -10px 10px 0px 0px #ff8c1a inset; /* 右上 */
/* box-shadow: -10px -10px 0px 0px #ff8c1a inset; /* 右下 */
/* box-shadow: 10px -10px 0px 0px #ff8c1a inset; /* 左下 */
}
/* 多色阴影 */
.outer-two-color-xiangLin10 {
box-shadow: -10px 10px 0px 0px red, 10px -10px 0px 0px #ff8c1a;
}
.inner-two-color-xiangLin10 {
box-shadow: -10px 10px 0px 0px red, 10px -10px 0px 0px #ff8c1a inset;
}
.inner-two-all-color-xiangLin10 {
box-shadow: -10px 10px 0px 0px red inset, 10px -10px 0px 0px #ff8c1a inset;
}
.four-color {
margin-top: 100px;
box-shadow: -10px 0px 0px 0px blue,
0px -20px 0px 0px red,
30px 0px 0px 0px green,
0px 40px 0px 0px yellow;
}
</style>
</head>
<body>
<h3>模糊度</h3>
<div class="box-item outer">右侧阴影为20px</div>
<div class="box-item outer-moHuDu20">右侧阴影约30px</div>
<div class="box-item outer-moHuDu50">右侧阴影约50px</div>
<h3>阴影半径</h3>
<div class="box-item outer">右侧阴影为20px</div>
<div class="box-item outer-radius10">右侧阴影为30px</div>
<div class="box-item outer-radius20">右侧阴影为40px</div>
<h3>四个边设置阴影</h3>
<div class="box-item outer-four10">四个边设置阴影10px,向外</div>
<div class="box-item inner-four10">四个边设置阴影10px,向内</div>
<h3>三个边设置阴影</h3>
<div class="box-item outer-three10">三个边设置阴影10px,向外</div>
<div class="box-item inner-three10">三个边设置阴影10px,向内</div>
<h3>两个边设置阴影-对立边</h3>
<div class="box-item outer-two-duiLi10">
两个边设置阴影-对立边10px,向外
</div>
<h3>两个边设置阴影-相邻边</h3>
<div class="box-item outer-two-xiangLin10">
两个边设置阴影-相邻边10px,向外
</div>
<div class="box-item inner-two-xiangLin10">
两个边设置阴影-相邻边10px,向内
</div>
<h3>多色阴影</h3>
<div class="box-item outer-two-color-xiangLin10">上、右——下、左</div>
<div class="box-item inner-two-color-xiangLin10">上、右(向内)——下、左</div>
<div class="box-item inner-two-all-color-xiangLin10">上、右——下、左(全部向内)</div>
<div class="box-item four-color">单独设置每个边的阴影</div>
</body>
</html>