box-shadow属性的复合写法及高级用法,超详细!

举报
码喽的自我修养 发表于 2024/07/26 17:42:24 2024/07/26
【摘要】 前言:最近又叕看到了一个好看的特效,随后整理了一下,发现实现起来主要靠一个css属性就实现了,有一次刷新了我对css强大的认知😎,这个属性就是box-shadow,平常我们用到的比较少,但是针对于C端可能使用就多了,但是你们真正掌握了它的使用吗?让我这一文带你深度了解box-shadow🧐

前言:最近又叕看到了一个好看的特效,随后整理了一下,发现实现起来主要靠一个css属性就实现了,有一次刷新了我对css强大的认知😎,这个属性就是box-shadow,平常我们用到的比较少,但是针对于C端可能使用就多了,但是你们真正掌握了它的使用吗?让我这一文带你深度了解box-shadow🧐

box-shadow属性介绍及用法

box-shadow可以为元素的框架添加阴影效果,这个属性可以设置多个阴影效果,每个阴影效果之间用逗号分隔。box-shadow属性可以设置的值包括阴影的X轴偏移量、Y轴偏移量、模糊半径、扩散半径和颜色

基本使用

平常使用我们都是box-shadow:第一个值 第二个值 第三个值 第四个值;每个值后面用空格隔开

  1. 第一个值:阴影往X轴的偏移距离
  2. 第二个值:阴影往Y轴偏移的距离
  3. 第三个值:阴影模糊的半径,值越大阴影越模糊
  4. 第四个值:阴影的颜色可以使用十六进制也可以使用rgba()写法
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<style>
// box盒子阴影X轴便宜10像素Y轴偏移10像素,模糊半径为20像素,颜色为#ccc
.box{
    margin: 100px auto;
    width: 200px;
    height: 200px;
    border-radius: 50%;
    border: none;
    background-color: rgb(151, 211, 151);
    box-shadow: 10px 10px 20px #ccc;
}
 
</style>
<body>
  <div class="box"></div>
  
</body>
</html>

高级使用

五个值

box-shadow其实有五个值,如果有五个值的情况,那第四个值就不再是颜色了,而第五个值是颜色,第四个值表示的是阴影的半径大小,值越大阴影越大

<style>
.box{
  width: 200px;
    height: 200px;
    border-radius: 50%;
    border: none;
    background-color: rgb(77, 255, 0);
    box-shadow: 10px 10px 20px 30px #ccc;
}
 
</style>

inset(六个值)

当使用了inset的时候变成了六个值,阴影将不再是对外扩散,相反是网内出现内阴影,而且第五个值(五个值时的第四个值)数值越大阴影往内扩散越大,直到铺满盒子,数值在变大阴影也不会出现变化了

多个阴影

除了可以控制内阴影还是外阴影以外,还可以使用 ,来进行间隔实现多个阴影效果

<style>
.box{
    margin:100px auto;
    width: 200px;
    height: 200px;
    border-radius: 50%;
    border: none;
    background-color: aqua;
    box-shadow: 0 0 20px #fff,20px 0 80px #f0f,-20px 0 80px #0ff,inset 0 0 50px #fff,inset 200px 0 80px #f0f;
}
 
</style>

一个好看的小球这不就出来了🤩😍🥰

加个动画

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<style>
  body{
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  background-color: #000;
}
.box{
  margin: 100px auto 0;
  width: 200px;
  height: 200px;
  border-radius: 50%;
  border: none;
  animation: redBall 6s linear infinite;
  background-color: rgb(0, 13, 255);
  box-shadow: 0 0 20px #fff,20px 0 80px rgb(0, 255, 191),-20px 0 80px rgb(0, 255, 81),inset 0 0 50px #fff,inset 200px 0 80px rgb(255, 234, 0);
}
@keyframes redBall{
  0%{
    box-shadow: 0 0 20px #fff,20px 0 80px rgb(0, 255, 213),-20px 0 80px rgb(72, 255, 0),inset 0 0 50px #fff,inset -200px 0 80px rgb(0, 64, 255);
  }
  50%{
    box-shadow: 0 0 20px #fff,20px 0 80px rgb(0, 242, 255),-20px 0 80px rgb(17, 255, 0),inset 0 0 50px #fff,inset 0px 0 80px rgb(255, 0, 55);
  }
  100%{
    box-shadow: 0 0 20px #fff,20px 0 80px rgb(179, 255, 0),-20px 0 80px #0ff,inset 0 0 50px #fff,inset 200px 0 80px rgb(255, 0, 21),inset 10px 0 80px #0ff;
  }
}
</style>
<body>
  <div class="box"></div>
</body>
</html>

实现动态效果 (先录屏然后制作的gif图,会比较模糊,大家将就看吧)

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。