我想知道是否有可能让背景图像位于某个div中的所有html img之上(如某种掩码)
我试过了:
#content img{
position:relative;
background-image:url('./images/image-mask-2.png');
z-index:100;
}
答案 0 :(得分:4)
要使背景图像覆盖另一个图像,它必须是元素上覆盖所述图像的背景(例如,绝对定位的图像)。
元素自身的背景不能出现在其内容之上。
答案 1 :(得分:4)
尝试使用填充而不是使用宽度和高度
#content img{
height: 0;
width: 0;
padding: 35px 120px; // adjust that depend on your image size
background-image: url('YOUR_IMAGE_PATH');
background-repeat: no-repeat;
}
答案 2 :(得分:1)
不,<img src=''>
中定义的图片是元素的前景内容。
background-image
是元素的背景。它显示在任何内容背后。
线索就在名字中。
您可以将背景图像显示在前景内容之上的唯一方法是将其作为位于主要元素顶部的单独元素的背景。
通过使用CSS ::before
伪选择器,您可以在没有其他HTML标记的情况下执行此操作。这会将一个CSS控制的元素添加到DOM中主元素旁边的页面中。然后可以使用z-index
和定位来设置样式,以便它位于主元素的顶部。然后它的background-image
将出现在原始元素的主图像顶部。
但是,在所有浏览器中::before
标记都不支持img
,因此不推荐使用此技术。
答案 3 :(得分:1)
只需使用div将背景放在另一个背景上?给身体一个背景和你的div?
答案 4 :(得分:1)
首先,我创建了一个315px * 270px的自定义图像大小
add_action( 'after_setup_theme', 'image-size-setup' );
add_image_size( 'image-with-mask', 315, 270, true );
function image-size-setup() {
function custom_in_post_images( $args ) { $custom_images = array('image-with-mask' => 'Image with mask'); return array_merge( $args, $custom_images ); } add_filter( 'image_size_names_choose', 'custom_in_post_images' );
}
我最终使用add_filter函数(在wordpress中)来替换宽度为315px,高度为270px且带有2个div的标签(一个用于掩码,一个用于图片)
function some_filter_content($content) {
$result = array();
return preg_replace('/<img.class="(.*?)".src="(.*?)".width="315".height="270".\/>/i', '<div style="background: url($2); width:315px; height:270px; float:left;"><div class="mask"></div></div>', $content);
}
add_filter('the_content', 'some_filter_content');
答案 5 :(得分:0)
对于背景图像这样做的不好做法,你最终会得到很多脏代码。我认为这是不必要的,因为你把图像作为背景的原因,你希望它成为z-index上的第一层(这是background-image:url('./images/image-mask-2.png');
背后的整个概念)