我想知道是否有可能让背景图像位于某个 div 中的所有 html img 之上(就像一种掩码)
我试过了:
#content img{
position:relative;
background-image:url('./images/image-mask-2.png');
z-index:100;
}
尝试使用填充而不是使用宽度和高度
#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;
}
对于覆盖另一个图像的背景图像,它必须是覆盖所述图像的元素上的背景(例如,绝对定位的元素)。
元素自身的背景不能出现在其内容之上。
不,中定义的图像<img src=''>
是元素的前景内容。
background-image
是元素的背景。它显示在任何内容的后面。
线索就在名字里。
使背景图像出现在前景内容之上的唯一方法是让它成为位于主元素之上的单独元素的背景。
您可以通过使用 CSS::before
伪选择器来完成此操作,而无需额外的 HTML 标记。这会在 DOM 中主元素旁边的页面中添加一个 CSS 控制的元素。然后可以对其进行样式设置z-index
和定位,因此它位于主要元素的顶部。然后background-image
它将出现在原始元素的主图像之上。
但是,::before
并非img
所有浏览器都支持标签,因此不推荐使用此技术。
只需使用 div 将背景放在另一个背景上?给body一个背景和你的div?
首先,我创建了一个 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 中)用 2 个 div 替换宽度为 315px 和高度为 270px 的标签(一个用于掩码,一个用于图片)
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');
对背景图像这样做是不好的做法,你最终会得到很多脏代码。而且我认为这是不必要的,因为您将图像作为背景的原因是您希望它成为 z-index 的第一层(这是背后的整个概念background-image:url('./images/image-mask-2.png');
)