【问题标题】:How do I clear a filter placed by a parent element in CSS?如何清除 CSS 中父元素放置的过滤器?
【发布时间】:2017-08-09 17:22:01
【问题描述】:

我有一个带有背景图像的<div>,我希望背景图像应用过滤器。但我还希望 div 包含覆盖图像的 <p> 标签——我不希望 <p> 具有相同的过滤器。

如何清除<p><div>设置的过滤器?

到目前为止我得到了什么:

<div className="artistDetailImage" style={{backgroundImage: url(${this.props.artistImage})`}}>
  <p className="artistDetailText">{name}</p>
</div>

.artistDetailImage {
  background-size: cover;
  background-position: top;
  width: 100%;
  height: 300px;
  filter: contrast(60%);
}

.artistDetailText {
  width: 100%;
  font-size: 20px;
  text-align: left;
  padding-left: 5px;
  position: relative;
  top: 240px;
  filter: none; //Have also tried contrast(100%), brightness(1), etc.
  color: white;
}

这个答案似乎有效,但我希望有更好的方法来做到这一点。 https://stackoverflow.com/a/32677739/3010955

【问题讨论】:

  • 不能在 CSS 的 child 元素中重置过滤器...
  • 过滤器总是应用于整个事情!
  • 好吧,很高兴知道。我找到了另一个有解决方案的 SO 答案,我只是想看看是否有更好的方法。

标签: html css css-filters


【解决方案1】:

您将无法重置子元素的过滤器,但您可以将两者都封装在容器 div 中,然后相应地定位 &lt;p&gt;

.container-div {
  position: relative;
}

.artistDetailImage {
  background-size: cover;
  background-position: top;
  width: 100%;
  height: 300px;
  filter: contrast(60%);
}

.artistDetailText {
  width: 100%;
  font-size: 20px;
  text-align: left;
  padding-left: 5px;
  position: absolute;
  top: 240px;
  color: white;
}
<div class="container-div">
  <div class="artistDetailImage" style="background-image: url('http://static.pexels.com/photos/33688/delicate-arch-night-stars-landscape.jpg');">
  </div>
  <p class="artistDetailText">NAME</p>
</div>

【讨论】:

  • 这就像一个魅力。 container-div 中的position: relative 有什么作用?
  • @PeterKaminski 段落元素中的 position: absolute 将相对于它最近的不是 position: static 的容器元素定位它,因此我们将父容器设置为 position: relative。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-22
相关资源
最近更新 更多