今天在写一个点亮灯泡的小项目的时候,用到了box-shadow属性。感觉这个属性挺有意思的,索性专门整理一下。

一. box-shadow的定义和语法

定义:box-shadow是css3新增的一个属性。在W3School里,定义box-shadow是向框添加一个或者多个阴影的属性。 语法:box-shadow: h-shadow v-shadow blur spread color inset.  h-shadow: 阴影的水平位置 v-shadow:阴影的垂直位置 blur:阴影的模糊半径 spread:阴影的半径 color:阴影的颜色 inset:将外部阴影改成内部阴影【outset反过来】 根据box-shadow的定义,我们可以为一个框设置一个阴影,也可以设置多个阴影。

当我们需要设置多个阴影时,中间需要将每个阴影用逗号隔开。

举个例子:

/*html代码*/

/*对应的css代码*/

.test{

width: 100px;

height: 100px;

background: yellow;

margin: 100px auto;

border-radius: 50%;

box-shadow: 10px 10px 20px 10px rgba(255,255,0,0.5), -10px 10px 10px 10px rgba(255,255,255,0.5)

}

这里我们用border-radius属性设置了一个圆形,并且为这个圆形添加了一个浅黄色阴影和一个白色的阴影。

以第一个阴影:box-shadow: 10px 10px 20px 10px rgba(255,255,0,0.5)为例:

这段代码表示阴影的水平位置为右移10px;

垂直位置为下移10px;

第三个10px代表阴影的模糊程度blur,我们也将它设置成20px;

第四个10px是阴影半径的意思;最后一个规定了阴影的颜色为rgba(255,255,0,0.5)。

也就是说,我们为class为test的div元素添加了一个偏离框,并且向右距离为10px、向下距离为10px、模糊半径为10px、阴影半径为10px的浅黄色的阴影。

根据上面的CSS代码,我们看一下同时设置了两个阴影的效果:

为了更直白地观察到上述阴影设置的效果,我们将第二个阴影删除,只保留第一个阴影:

效果是不是还不错?

二. box-shadow属性值的详细解析

根据前面的语法规则,box-shadow可以有六个值。接下来我们来聊一聊box-shadow属性里的每个值都怎么用

1. h-shadow【必需】

这个值代表的是阴影在x轴上的阴影位置。可以是负值。

当它为正值的时候表示向右位移一定的距离【出现在元素的右边】,负值表示向左位移【出现在元素的左边】。这个距离的单位可以是px、em或者rem;

需要注意的是:h-shadow是必需的,不能省略!

box-shadow: 10px 0px 10px rgba(0,0,0,0.9) /*阴影出现在元素的右侧*/

box-shadow: -10px 0px 10px rgba(0,0,0,0.9) /*阴影出现在元素的左侧*/

2. v-shadow【必需】

这个值表示阴影在y轴上的位置。也可以是负值。

当值为负的时候表示向上偏移一定的距离【出现在元素的上方】;值为正的时候表示向下偏移一定的距离【出现的元素的下方】

box-shadow: 0px -20px 10px rgba(0,0,0,0.9)/*阴影出现在元素上方*/

box-shadow: 0px 20px 10px rgba(0,0,0,0.9)/*阴影出现在元素下方*/

3. blur【可选】

blur指的是阴影的模糊半径。这个值使得阴影部分的过渡看起来更柔和。我们可以试一试不同blur值对阴影效果的影响:

box-shadow: 10px 10px 5px rgba(0,0,0,0.9) /*blur值为5px*/

box-shadow: 10px 10px 10px rgba(0,0,0,0.9)/*blur值为10px*/

box-shadow: 10px 10px 15px rgba(0,0,0,0.9)/*blur值为15px*/

将blur值为5px、10px、15px 的效果图依次从左往右排列,可以看出来随着模糊半径数值的增大,阴影的模糊程度越高。

4. spread【可选】

spread表示的是阴影的半径。我在网上看到有人对spread和blur的区别发出疑问,其实很简单:blur用于描述模糊半径,它的值决定了阴影的模糊程度;而spread是表示阴影所占区域的大小,这是两个不同的概念。

我们来试试其他属性值相同的情况下,spread不同时阴影的表现:

box-shadow: 10px 10px 10px 5px rgba(0,0,0,0.9);/*阴影半径为5px*/

box-shadow: 10px 10px 10px 15px rgba(0,0,0,0.9);/*阴影半径为15px*/

box-shadow: 10px 10px 10px 25px rgba(0,0,0,0.9);/*阴影半径为25px*/

将spread的值为5px、15px、25px的效果图依次 从左向右排列,很明显阴影在逐渐变大

5. color【可选】

阴影的颜色可以用任何颜色单位来表示。当我们没有设置color值的时候,默认就是黑色。

box-shadow: 10px 10px 10px 5px rgba(0,0,0,0.9);/*黑色阴影,用rgba表示,透明度为0.9*/

box-shadow: 10px 10px 10px 5px rgb(255,0,0);/*红色阴影,用rgb表示*/

box-shadow: 10px 10px 10px 5px #afe;/*浅蓝色阴影,用十六进制颜色表示法*/

box-shadow: 10px 10px 10px 5px blue;/*蓝色阴影,用颜色单词表示*/

6. inset 【可选】

默认情况下,我们设置的阴影都是外部阴影,而这个属性值的作用是将外部阴影转换成内部阴影。

box-shadow: 10px 10px 10px 5px blue; /*默认为外部阴影*/

box-shadow: 10px 10px 10px 5px blue inset;/*将外部阴影切换为内部阴影*/

7. 一些有趣的实践

了解了box-shadow之后,我们可以用来做一些有趣的事情。比如给阴影添加动画,对元素添加:hover伪元素,形成鼠标悬浮在元素上时,阴影扩大的效果

.test{

width: 100px;

height: 100px;

background: yellow;

margin: 100px auto;

border-radius: 50%;

box-shadow: 0px 0px 10px 5px rgba(0,0,0,0.9);

transform: scale(1);

transition: box-shadow 0.6s, transform 0.5s;

}

.test:hover{

width: 100px;

height: 100px;

background: yellow;

margin: 100px auto;

border-radius: 50%;

box-shadow: 0px 0px 50px 15px rgba(0,0,0,0.9);

transition: box-shadow 0.5s;

}

怎么样,box-shadow属性是不是挺有意思的?

好了,今天关于边框阴影box-shadow 属性的总结就写到这里了。鉴于刚刚做上面这个鼠标悬浮效果的时候用到了CSS3的另外两个新属性transition和transform,我打算下次来写一些这两个属性。

OVER!

感谢阅读。

java设置方块阴影_边框阴影:box-shadow属性相关推荐

  1. 【poi第五节】poi设置Excel单元格边框 和 背景色,java设置Excel 单元格边框 和 背景色

    poi设置Excel单元格边框 和 背景色,java设置Excel 单元格边框 和 背景色 import org.apache.poi.hssf.usermodel.HSSFWorkbook; imp ...

  2. 自定义字体样式引入使用方法、文本阴影、边框阴影、(边框)圆角、渐变、理解重绘与回流、渐进增强和优雅降级的区别

    目录 1.文本阴影 text-shadow 2.边框阴影 box-shadow 3.自定义字体样式方法 引入与使用方法举例: 4.(边框)圆角 5.渐变 6.过渡  transition 7.理论知识 ...

  3. java设置pdf加密_如何使用Java对PDF进行加密,密码保护和设置受限权限

    java设置pdf加密 Today we will be looking at the document workhorse that is PDF, and how to programmatica ...

  4. java设置系统环境变量_设置java 环境变量

    DOS下任意目录用JAVA,JAVAC肯定是显示正确咯,因为你设置好了JAVAlib和bin的但是JAVA文件需要DOS下CD好了目录才能JAVAC否则是在C:\program里查找该JAVA文件你任 ...

  5. css 有关边框的属性_边框样式(CSS属性)

    css 有关边框的属性 句法 (Syntax) border-style边框样式 : { { : {{ none | 无 | hidden | 隐藏 dotted | 点缀 | dashed | 虚线 ...

  6. java设置默认参数_关于java:如何设置默认方法参数值?

    本问题已经有最佳答案,请猛点这里访问. 是否可以在Java中设置默认的方法参数值? 例子:如果有方法 public int doSomething(int arg1, int arg2) { //so ...

  7. java设置框架位置_怎样设置label的位置啊?求指导

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package a1018; import java.awt.Color; import java.awt.Font; import javax.swin ...

  8. java 设置控制台标题_修改Tomcat控制台标题以及标题乱码处理

    双击"startup.bat"启动Tomcat,控制台默认标题是Tomcat,如下图: 修改标题很容易,编辑catalina.bat这个文件(跟startup.bat在同级目录下) ...

  9. java设置绝对布局_浅谈Java绝对布局 原创

    在 swing 中,除了使用布局管理器之外还可以使用绝对布局.下面我们就来简单了解一下什么是绝对布局. 绝对布局,就是硬性指定组件在容器中的位置和大小,可以使用绝对坐标的方式来指定组件的位置. 使用绝 ...

最新文章

  1. 如何用Swift实现一个好玩的弹性动画
  2. 小米扫地机器人 自动关机_小米扫地机器人1S 真的好用吗?
  3. 每天一记 10.01.27
  4. c++STL容器的priority_queue
  5. SAP UI5 Focus related
  6. (转)iOS面试题目
  7. 其他数据类型存储空间大小(信息学奥赛一本通-T1018)
  8. poj2914无向图的最小割
  9. 南京师范大学会计专硕考研上岸经验分享
  10. hbase+phoenix开发预演小例子
  11. WindwosServer系统一些设置【网卡驱动修复】【安装UWP应用】【服务器管理取消开机自启动】
  12. 做“合规”的数据处理者 | 一文图解《网络数据安全管理条例》
  13. mongodb之快速入门
  14. windows python3.6 tensorflow1.12搭建RCNN运行环境 bug解决
  15. 指纹锁的识别与原理及安全性
  16. 中国电信天府热线数据中心
  17. H5实现无插件视频监控按需直播
  18. UVA 10526 - Intellectual Property (后缀数组)
  19. html页面怎么设置不能复制粘贴,网页禁止复制粘贴怎么办? 教你6招, 快速搞定
  20. 4 年前端狗 2 年 CTO

热门文章

  1. 计算机博士英语复试题目,【转载】考博英语复试纯干货,请务必收藏!
  2. Direct3D9 Fx/HLSL的若干条有用的笔记
  3. 圆角ImageView
  4. Oracle11g 统计信息——统计信息自动收集任务
  5. XTU 1252 Defense Tower
  6. Installation error: INSTALL_FAILED_NO_MATCHING_ABIS
  7. MSpider爬虫搜索
  8. 《网络管理员考试案例导学》复习重点
  9. mysql 导入百万级数据 几种 java_百万级数据,如何迁移到MySQL?
  10. 共享的网络如何让自己比别人快_ipfs网络的分布式数据是如何做到数据共享的?...