悬停时div的背景图像转换不起作用[重复]

Posted

技术标签:

【中文标题】悬停时div的背景图像转换不起作用[重复]【英文标题】:background-image transition for div on hover is not working [duplicate] 【发布时间】:2018-06-23 00:13:36 【问题描述】:

我有一个 div,我想在悬停时产生过渡效果。

我将以下 CSS 代码放在一起,但过渡在 chrome 和 firefox 中都不起作用。

#header 
    border: 0.1px solid #666;
    background-image: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
    height: 10vh;
    padding: 0;
    transition: background-image 1s ease-in-out; /* NOT WORKING */
    -webkit-transition: background-image 1s ease-in-out; /* NOT WORKING */
  
  
  #header:hover 
    background-image: linear-gradient(rgba(0, 0, 0, 0.75), rgba(0, 0, 0, 0.0));

   
<html>
<body>
<div id="header"> this is my header</div>
</body>
</html>

我做错了吗?

如果有人能帮忙就太好了!

非常感谢

【问题讨论】:

***.com/questions/6542212/… 【参考方案1】:

CSS 渐变不支持transition 属性。

在您的情况下,您可以通过使用 pseudoelement 并在悬停时转换其不透明度来创建类似的效果。

#header 
  border: 0.1px solid #666;
  height: 10vh;
  padding: 0;
  position: relative;


#header:before 
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  opacity: .5;
  transition: opacity 1s ease-in-out;
  background: linear-gradient(black, transparent);


#header:hover:before 
  opacity: .75;


.logo 
  color: white;
  position: relative;
 
&lt;div id="header"&gt;&lt;div class="logo"&gt;LOGO&lt;/div&gt;&lt;/div&gt;

【讨论】:

当您在元素上使用不透明度时,您应该从渐变中移除不透明度;) @sol 这几乎可以工作。唯一的问题是我的标题中有一个徽标文本,并且伪元素似乎覆盖了白色文本,而我只需要背景来进行过渡。我已经尝试将徽标的 div(在标题中)设置为更高的 z-index,但这没有任何效果。 @AlphaX 不要忘记添加相对于徽标的位置以便能够使用 z-index @AlphaX 我已经更新了 sn-p,猜测您的标记。您只需添加 position: relative 即可为徽标创建新的堆叠上下文。 @sol 是的,成功了!!!太感谢了 !!!!这很奇怪,因为只要将位置设置为相对,它也可以在没有 z-index 的情况下工作!?

以上是关于悬停时div的背景图像转换不起作用[重复]的主要内容,如果未能解决你的问题,请参考以下文章

背景图像过渡在CSS中不起作用[重复]

CSS :hover on button 在已经悬停的 div 中不起作用

为啥背景过渡:linear-gradient() 在悬停时不起作用?

多个 DIV 的 CSS 悬停效果不起作用 [重复]

图像在悬停时滚动

jQuery div 悬停功能在 Firefox 中不起作用