如何在不影响子元素的情况下更改背景图像的不透明度?

Posted

技术标签:

【中文标题】如何在不影响子元素的情况下更改背景图像的不透明度?【英文标题】:How do I change the opacity of a background image without affecting child elements? 【发布时间】:2017-03-17 10:49:59 【问题描述】:

我正在尝试将背景图像设置为 70% 的不透明度,而不影响其前面的文本(在同一个 div 中)。


html

#home 
  opacity: 0.7;
  background-attachment: fixed;
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
  background-image: url("...");
  min-height: 100%;
  overflow: hidden;


div .welcome 
  background-size: cover;
  vertical-align: middle;
  text-align: center;
  font-family: 'Lobster', cursive;
  font-weight: 900;
  font-size: 60px;
  color: black;
  margin: auto;
<div id="home" class="section">
            <p class="welcome"><strong>Hello,<br>My name is Sean</strong></p>
          </div>

【问题讨论】:

How to apply an opacity without affecting a child element with html/css?的可能重复 或者CSS background-image-opacity? 【参考方案1】:

通过使用伪元素和position:absolute

请注意,作为home 的直接子元素的元素需要一个位置,就像我设置为content 一样,或者您需要在伪元素上设置z-index: -1,如果没有, 伪将在顶部分层

body 
  background: blue

#home 
  position: relative;
  min-height: 100%;
  overflow: hidden;


#home::before 
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  opacity: 0.5;
  background-attachment: fixed;
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
  background-image: url(http://placehold.it/200/f00);  /*  image is red but blue shine 
                                                           through so becomes purple */


.content 
  position: relative;
  color: white;
<div id="home">

  <div class="content">
    
    Content not affected
    
  </div>
  
</div>

【讨论】:

以上是关于如何在不影响子元素的情况下更改背景图像的不透明度?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不影响带有 html/css 的子元素的情况下应用不透明度?

如何在不影响文本的情况下在背景图像上使用不透明度?

CSS更改选项卡背景的不透明度而不影响选项卡上的文本[重复]

如何在不影响内容不透明度(悬停时)的情况下为背景不透明度设置动画?

如何在不改变背景内容的情况下改变背景的不透明度?

如何使输入字段的不透明度不影响其中的文本颜色?