【发布时间】:2018-04-01 14:41:47
【问题描述】:
有没有办法给一个元素添加一个过滤器(CSS 或其他类型),这样这个过滤器就可以有效地应用于它下面的元素。
我有一个降低了不透明度的元素,它位于背景图像的顶部。我希望降低不透明度的元素基本上将黑白滤镜应用于其正下方的元素部分(有效地用作遮罩)。在下面的示例中,这意味着白框下方的图像部分应用了滤镜。
https://codepen.io/emilychews/pen/zWjWxo
需要注意的两点:
1) 因为我使用的是 vh 和 vw 单位,并且布局会根据设备/窗口大小而变化,所以我无法在 Photoshop 或类似软件中对图像进行切片,然后单独添加或对齐。
2) 我使用的图像占位符服务提供随机图像,有时示例中的图像是黑白的 - 请不要让这个问题混淆。
body {
margin: 0;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
width: 100%;
}
#row-1 {
position: relative;
width: 80vw;
height: 70vh;
background: red;
border: 1px solid black;
background-image: url("https://loremflickr.com/320/240");
background-size: cover;
}
#inner {
background: rgba(255, 255, 255, .8);
position: absolute;
width: 50%;
height: 40%;
right: 0;
top: 0;
padding: 1rem;
}
<div id="row-1">
<div id="inner">
<p id="text">Some Text</p>
</div>
</div>
【问题讨论】:
-
据我所知,这在 css 和 html 中是不可能的。
-
@MobyMotion 我已将问题编辑为还包括 SVG,我认为这是我唯一的希望
标签: html css svg css-filters