【问题标题】:Adding an overlay color on hover to a background image [duplicate]将悬停时的叠加颜色添加到背景图像[重复]
【发布时间】:2021-04-19 19:43:54
【问题描述】:

我知道这是一个超级基本的概念,但我在绕圈子。我有一个顶部有文字的背景图片。所以图像是父元素。当用户将鼠标悬停在图像上时,我希望有一个比我使用的初始颜色更暗的黑色渐变,以便图像仍然显示并且文本仍然清晰。

我尝试过使用 z-index,只使用背景颜色,去除不透明度。几乎所有的东西。当我悬停时,h1 和 p 文本被覆盖,悬停颜色是白色/灰色而不是黑色。

这是我用于悬停的代码:


.image { 
    position: relative; 
    width: 100%;
    max-width: 900px;
    margin: auto;
    background: linear-gradient(180deg, rgba(38, 36, 36, 0.47) 0%, rgba(38, 36, 36, 0) 100%), url(/assets/img/pictures/feature.png);
    background-size: cover;
}

.image:hover{
    box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
    background: rgba(0, 0, 0, 0.5);
    opacity: 0.4;
    }

<div class="image overlay blog-page" style="margin-bottom: 75px;">
    <h1 class="article">Featured Page</h1>
    <div class="row" style="margin-left: 24px;">
        <div class="col-xs">
            <img class="author-image" src="/assets/img/pictures/test.png"></img>
        </div>
        <div class="col-xs">
            <p class="article-content banner-text author">Test</p>
        </div>
</div>
</div>

我是否遗漏了一些非常明显的东西?任何帮助将不胜感激。

【问题讨论】:

  • 请分享您的 HTML。我们如何知道哪些h1p 被覆盖?
  • @ManasKhandelwal 添加
  • 您在.image 上缺少结尾}。当我添加它时,它工作得很好。
  • @JakeAve 复制我的代码时它一定已被删除,但它在我的 css 中并且仍然无法工作 - 谢谢你的建议
  • 您的 h1 在带有“图像”类的 div 内,因此它也应用了 0.4 的不透明度。

标签: html css image hover overlay


【解决方案1】:

首先:图片&lt;img&gt; 是一个空标签。它没有结束标签,也不需要在末尾加上斜杠,因为它是一个空标签。

最简单的解决方案是使用覆盖整个块并在悬停期间显示的覆盖 div。为此,请使用与下面的 sn-p 相同的方法。

您添加一个带有属性和值的框: position: absolute; top: 0; bottom: 0; left: 0; right: 0;

然后你用display: none; 隐藏它,并在悬停期间使用:hover selector 将其更改为display: block;

.image {
  position: relative;
  width: 100%;
  max-width: 900px;
  margin: auto;
  background: linear-gradient(180deg, rgba(38, 36, 36, 0.47) 0%, rgba(38, 36, 36, 0) 100%), url(/assets/img/pictures/feature.png);
  background-size: cover;
}

.image .image-overlay {
  background: rgba(0, 0, 0, 0.5);
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  display: none;
}

.image:hover .image-overlay {
  display: block;
}
<div class="image overlay blog-page" style="margin-bottom: 75px;">
  <h1 class="article">Featured Page</h1>
  <div class="row" style="margin-left: 24px;">
    <div class="col-xs">
      <img class="author-image" src="/assets/img/pictures/test.png">
    </div>
    <div class="col-xs">
      <p class="article-content banner-text author">Test</p>
    </div>
  </div>
  <div class="image-overlay"></div>
</div>

【讨论】:

  • 我同意,您希望叠加层与您的文本内容完全分开,这样它就可以独立地执行和更改不透明度。
猜你喜欢
  • 2013-06-28
  • 2016-12-20
  • 2016-08-09
  • 2011-03-03
  • 1970-01-01
  • 1970-01-01
  • 2019-07-29
  • 1970-01-01
相关资源
最近更新 更多