为什么after不设置position就无法设置box-shadow?

为什么after不设置position就无法设置box-shadow?请问是什么原理啊。
*{

padding: 0;
margin: 0

}
.wrap{

width: 200px;
height: 200px;
position: relative;
background: blue

}
.wrap::after{

position: absolute;
content: '';
width: 100px;
box-shadow: 0 10px 0 2px #f33433,0 20px 0 2px #f33433,0 30px 0 2px #f33433

}
这段css代码如果after不设置position就会变得无效

阅读 3.3k
4 个回答
.wrap:after{
    content: '';
    width: 100px;
    height:100px;
    display:block;
    box-shadow: 0 10px 0 2px #f33433,0 20px 0 2px #f33433,0 30px 0 2px #f33433
}

:before和:after伪元素在页面中生成的元素在缺省情况下是“内联(inline)”元素

inline元素设置宽度是无效的,所以box-shadow没有效果。加了position设置宽度才有效,或者display:block/inline-block。

你设置absolute的时候 其实就是将伪元素变为块级元素,就可以设置宽度高度了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题