我试图使用:before选择器将图像放在另一个图像上,但我发现它根本不能将图像放在img元素之前,只有一些其他元素。具体来说,我的风格是:
.container
{
position: relative;
display: block;
}
.overlay:before
{
content: url(images/[someimage].png);
position: absolute;
left:-20px;
top: -20px;
}
我发现这很有效:
<a href="[url]" class="container">
<span class="overlay"/>
<img width="200" src="[url]"/>
</a>
但这不是:
<a href="[url]" class="container">
<img width="200" src="[url]" class="overlay"/>
</a>
我可以使用div或p元素来代替这个span,浏览器会正确地将我的图像覆盖到img元素中的图像上,但如果我将overlay类应用到img本身,它就不起作用了。
我想让它工作,因为这个额外的span冒犯了我,但更重要的是,我有大约100篇博客文章,我想修改,如果我可以修改样式表,我可以一次完成这一点,但如果我必须返回并在a和img元素之间添加一个额外的span元素,这将是更多的工作。
不幸的是,大多数浏览器不支持在img标记上使用:after或:before。
http://lildude.co.uk/after-css-property-for-img-tag
然而,你可以用JavaScript/jQuery来完成你所需要的。看看这把小提琴:
http://jsfiddle.net/xixonia/ahnGT/
$(function() {
$('.target').after('<img src="..." />');
});
编辑:
对于不支持的原因,请查看coreyward的答案。
不幸的是,大多数浏览器不支持在img标记上使用:after或:before。
http://lildude.co.uk/after-css-property-for-img-tag
然而,你可以用JavaScript/jQuery来完成你所需要的。看看这把小提琴:
http://jsfiddle.net/xixonia/ahnGT/
$(function() {
$('.target').after('<img src="..." />');
});
编辑:
对于不支持的原因,请查看coreyward的答案。
下面是另一个img使用div容器的解决方案,同时使用:hover::after来达到效果。
HTML如下:
<div id=img_container><img src='' style='height:300px; width:300px;'></img></div>
CSS如下:
#img_container {
margin:0;
position:relative;
}
#img_container:hover::after {
content:'';
display:block;
position:absolute;
width:300px;
height:300px;
background:url('');
z-index:1;
top:0;
}
要查看它的操作,请检查我创建的小提琴。只是为了让你知道这是跨浏览器友好的,没有必要用“假内容”欺骗代码。