2017-08-09 110 views
1

我有一個<div>與背景圖像,我想要背景圖像應用過濾器。但我也希望div包含覆蓋圖像的<p>標籤 - 而我不希望<p>擁有相同的過濾器。如何清除CSS中父元素放置的過濾器?

如何清除由<div><p>中設置的過濾器?

到目前爲止,我已經得到了什麼:

<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

+2

你*不能*重置過濾器在*子*在CSS元素... – kukkuz

+2

過濾器始終應用於整個事情! –

+0

啊好吧,很高興知道。我發現了另一個有答案的答案,我只是在探討是否有更好的方法來做到這一點。 –

回答

1

您將無法重置子元素的過濾器,但可以將兩者都包裝在容器div中,然後相應地放置<p>

.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>

+0

這就像一個魅力。 'container-div'中的'position:relative'是做什麼的? –

+1

@PeterKaminski位置:段落元素中的絕對位置將相對於其最近的不是位置的容器元素進行定位:static,因此我們將父容器設置爲position:relative。 –