CSS3 层层递进的阴影效果


项目中往往需要一种层层递进的阴影遮盖效果

就像这样:


目标效果

层层递进的阴影效果

通常我们会采取给每个盒子设置box-shadow


div{
  width:100px;
  height:100px;
  background:#e3e3e3;
  border:1px solid #333;
  box-shadow:0 0 50px rgba(0,0,0,0.5);
}

结果并不满意


直接设置box-shadow

那是不是通过设置不同的z-index也可以决定阴影的遮盖顺序呢

div {
  width: 100px;
  height: 100px;
  background: #e3e3e3;
  border: 1px solid #333;
  box-shadow: 0 0 50px rgba(0, 0, 0, 0.5);
}
div:nth-child(2) {
  z-index:999;
}
设置z-index后的结果

并没有什么改善

那到底如何才能达到目标效果呢

我们要先去理解z-index
MDN中对z-index的定义
其中明确规定了

只有当 position 不为 static 的时候, z-index 才是有效的

所以只要给盒子添加 position: relative 属性, 就能正常控制阴影效果了

 div {
  position: relative;
  width: 100px;
  height: 100px;
  background: #e3e3e3;
  border: 1px solid #333;
}

div:nth-child(2) {
  box-shadow: 0 0 50px rgba(0, 0, 0, 0.5);
  z-index: 999;
}
设置 position: relative 后

结论

z-index只在position不为 static 的时候生效
z-index 数值大的盒子阴影遮盖 z-index 数值小的

转载请注明出处

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,814评论 1 92
  • 说到css的盒子模型和定位相信大家一定都听说过,因为它们是css中的基础,同时也是难点,这篇文章的作用在于基础知识...
    北京大数据苏焕之阅读 710评论 1 1
  • 第一节:z-index基础 较大的z-index会覆盖较小的那个z-index元素 z-index:auto 默认...
    胖鱼尾巴阅读 1,051评论 0 0
  • 当在这一个页面上实现布局和定位有几种不同的技术。使用哪种技术,很大程序上取决于内容和目标页面,因为有很多技术比别人...
    lulu_c阅读 1,116评论 0 5
  • 2016年,经历的事不多,后半年只有一件——考研。 期间摇摆不定,但从没质疑过自己的方向。 也不知道该说些什么,这...
    格格曙阅读 206评论 0 0