box-shadow
遇到过这样一个需求:因为项目的性质,我们需要用程序抓取用户的网页,然后在一些符合条件的dom添加一层内阴影及一段浮层文字,因为要最大程度的保证用户网页的原有的功能和界面,我们不能采用添加遮罩dom的形式,而采用了添加class样式,借助before
或after
。
幸好css3提供了实现内阴影的功能,就是使用box-shadow
,如
1 | box-shadow:inset 0 0 44px 12px #1c1fc2; |
而浮层文字可以使用before
或after
伪类中的content
;
对一般的dom都没什么问题,但是用在img上却发现没有效果,img根本就不支持box-shadow
的inset效果,并且也不支持before
,after
伪类,上网查得before
,after
伪类是在内部的前和后插入内容,换句话说,这个dom首先得是个容器,而img本身不可存放其他元素,不是容器,所以不能使用这两个伪类。
后来经过多次调试发现,img在没有src的情况下可以设置inset方式的box-shadow
,并且也可以使用before
及after
伪类,那我使用js动态的去删除src属性然后设置它的background-image
,再设置box-shadow
和before
,after
伪类不就可以了吗?效果如下:
完整代码如下:
HTML
1 | <img class="shadow" alt="" style="width:316px; height: 194px"> |
CSS
1 | .shadow { |