如何在背景图像上添加叠加不透明度? [复制]

Posted

技术标签:

【中文标题】如何在背景图像上添加叠加不透明度? [复制]【英文标题】:How to add overlay opacity over a background image? [duplicate] 【发布时间】:2018-09-01 17:47:24 【问题描述】:

我想要实现的目标听起来很简单,但我无法让它发挥作用。

我正在尝试在image 顶部添加opacity,以便< h1 > 标记更易于阅读。

这是我的 HTML:

<header>
  <section>
    <div class="img_content">
      <div class="bg_img" style="background-image: url('path-to-image');" >
        <div class="container">
          <h1 class="content_h1">Most Popular Lunches: Week 11</h1>
        </div>
      </div>
    </div>
  </section>
</header>

这是 CSS:

/*Custom CSS */
.img_content 
  /* background: url(); */
  background-repeat: no-repeat;
  background-size: cover;

header section
  padding:0;


@media screen and (max-width: 768px)
  .content_h1 
    font-size: 40px;
    padding: 21% 0;
    color: white;
    font-size: 14px;
  
  .section_details 
    padding: 8% 0 19% 8%;
    font-size: 14px;
  


section 
  padding: 10px 0;


.bg_img 
  background: #221f1f73;

.content_h1 
  font-size: 85px;
  padding: 14% 0;
  color: white;

.section_details 
  padding: 4% 0 0 0;
  font-size: 14px;

我认为问题可能是-Z index 或类似的东西?

【问题讨论】:

你想在h1还是bg_img上设置不透明度? bg_img 请! 你能检查一下,看看你是否可以解决类似的问题:***.com/questions/49333122/css-border-confusion/… 【参考方案1】:

您不能在背景图像上设置不透明度,因为它将被 bg_img div 中的元素继承(因此 h1 将继承相同的不透明度)

您需要做的是使用 rgba 设置不透明度

.bg_img 
    // this css rule is setting the opacity if image to 0.5
    background-color: rgba(34,31,31, 0.5); 

【讨论】:

【参考方案2】:

你可以这样做:

.bg_img 
  background: #221f1f73;
  opacity: 0.7;

Jsfiddle

【讨论】:

这样,h1会继承同样的不透明度...【参考方案3】:

尝试使用“背景混合模式”属性..

【讨论】:

【参考方案4】:

试试这个

<header>
  <section>
    <div class="img_content">
      <div class="bg_img" style="background-image: url('https://i.stack.imgur.com/GsDIl.jpg');">

        <div class="container">
          <h1 style="position:relative;z-index: 100;" class="content_h1">Most Popular Lunches: Week 11</h1>

        </div>
        <div class="overlay" style="position:absolute;height:100%;width:100%;top:0;left:0;background:rgba(0,0,0,0.5)"></div>
      </div>
    </div>
  </section>
</header>

CSS

.img_content 
  /* background: url(); */
  background-repeat: no-repeat;
  background-size: cover;


header section
    padding:0;


@media screen and (max-width: 768px)
  .content_h1 
    font-size: 40px;
    padding: 21% 0;
    color: white;
    font-size: 14px;
  
  .section_details 
    padding: 8% 0 19% 8%;
    font-size: 14px;
  


section 
  padding: 10px 0;


.bg_img 
  background: #221f1f73;
  position:relative;

.content_h1 
  font-size: 85px;
  padding: 14% 0;
  color: white;

.section_details 
  padding: 4% 0 0 0;
  font-size: 14px;

为了方便,我使用了内联 css,虽然不推荐

【讨论】:

【参考方案5】:

试试这个。

.page-heading 
    background: url(../images/sample/image.jpg) no-repeat fixed 50% 0px / cover;
    opacity: 0.9;
    box-shadow: inset 0 0 0 100px rgba(36, 70, 105, 0.74);
    position: relative;
    text-align: center;
    padding: 75px 0px;
    width:100%;

【讨论】:

【参考方案6】:

保持您的 html 与发布的相同。然后按照下面的操作: 首先,您需要设置类 '.bg_img',如下所示:

.bg_img 
  background: #f5f5f5;
  position: relative;
  background-repeat: no-repeat;
  background-size: cover;
  background-position: center;

然后使用 '::before' 伪类添加背景覆盖

.bg_img::before 
    content:"";
    position: absolute;
    top:0;
    left:0;
    width:100%;
    height:100%;
    display: block;
    background-color: rgba(0,0,0,.55);

最后将 'position: relative' 添加到 '.content_h1'​​ 类中,如下所示:

.content_h1 
  font-size: 85px;
  padding: 14% 0;
  color: white;
  position: relative;

【讨论】:

【参考方案7】:

你可以试试这个方法

h1 
	font-size: 50px;
	color:#fff;
	position: relative;
    z-index: 10;

.bg_img 
	position: relative;
	background:url(https://preview.ibb.co/k2cREc/banner_about.jpg) no-repeat;
	background-size:cover;
	height: 400px;
	background-color:  rgba(0, 0, 0, 0.3);
	display: flex;
    justify-content: center;
    align-items: center;

.bg_img:after 
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.3);
<section>
    <div class="img_content">
      <div class="bg_img">
        <div class="container">
          <h1 class="content_h1">Most Popular Lunches: Week 11</h1>
        </div>
      </div>
    </div>
  </section>

【讨论】:

【参考方案8】:

有两种方便的方法来完成此操作,一种通过background-image 设置多个背景,另一种通过background-blend-mode 设置。

选项 1。

background-image: linear-gradient(rgba(0,0,0,.5)), url(path-to-image);

对于此选项,您通过利用 background-image 的线性渐变选项设置一个半透明的黑色背景,具有单个值(尽管您可以使用多个值来获得一些视觉兴趣),然后添加图像作为其后面的第二个背景。根据需要调整值。

选项 2。

background-blend-mode: multiply;
background-color: #666666;

对于此选项,您不想使用黑色,因为您根本看不到图像。您在视觉上实现了几乎相同的效果,但是以更易于阅读的不同方式进行。同样,根据需要调整颜色。

最后一点:.bg_img 类的背景颜色无效。十六进制颜色应该只有 6 个字符,其中前 2 个为红色,接下来的两个为绿色,最后两个为蓝色。数字范围从 00(十六进制表示 0)到 ff(十六进制表示 255)。每两个字符组合指定混合多少红色、绿色或蓝色光以创建最终颜色值。 (当使用三个字符时,每个字符都加倍,例如,#0fc 将等同于 #00ffcc)。十六进制值应始终包含 3 或 6 个字符。

【讨论】:

我喜欢选项 1,但线性渐变需要 2 个参数,所以我修复了它重复第一个参数,例如: background-image: linear-gradient(rgba(0,0,0,.5) ,rgba(0,0,0,.5)), url(图像路径);【参考方案9】:

尝试在这里使用:before 伪元素和position: absolute 来覆盖图像

.bg_img 
  background-repeat: no-repeat;
  background-size: cover;
  position: relative;
  z-index: 0;


.bg_img:before 
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  bottom: 0;
  background: #221f1f73;
  z-index: -1;


header section 
  padding: 0;


@media screen and (max-width: 768px) 
  .content_h1 
    font-size: 40px;
    padding: 21% 0;
    color: white;
    font-size: 14px;
  
  .section_details 
    padding: 8% 0 19% 8%;
    font-size: 14px;
  


section 
  padding: 10px 0;


.content_h1 
  font-size: 85px;
  padding: 14% 0;
  color: white;


.section_details 
  padding: 4% 0 0 0;
  font-size: 14px;
<header>
  <section>
    <div class="img_content">
      <div class="bg_img" style="background-image: url(http://lorempixel.com/400/200/sports);">
        <div class="container">
          <h1 class="content_h1">Most Popular Lunches: Week 11</h1>
        </div>
      </div>
    </div>
  </section>
</header>

【讨论】:

以上是关于如何在背景图像上添加叠加不透明度? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 中的盒子装饰上的图像上添加不透明覆盖

如何使用 CSS 为图像添加低调(黑色、透明叠加)效果?

在具有透明背景的绘制文本上添加图案覆盖

css 背景图像不透明度/叠加

透明叠加创建PNG

叠加在图像上时,使文本显示为白色,具有半透明的黑色背景