css 过渡不透明度淡入淡出背景

Posted

技术标签:

【中文标题】css 过渡不透明度淡入淡出背景【英文标题】:css transition opacity fade background 【发布时间】:2014-02-04 09:44:35 【问题描述】:

我正在做一个transition,当用户悬停图像时,它会变成透明的白色。

我的问题是我需要将颜色更改为黑色。我试过只是简单地将background:black; 添加到包含transition 的类中,但不幸的是它不起作用,它仍然逐渐变成白色透明。

我使用的css代码是:

.hover:hover 
  opacity: 0.2;


.item-fade 
  background: black;
  opacity: 0.8;
  transition: opacity .25s ease-in-out;
  -moz-transition: opacity .25s ease-in-out;
  -webkit-transition: opacity .25s ease-in-out;
<p>Hover image, the white opacity needs to be black :/</p>
<img src="//placehold.it/100x100" class="hover item-fade" />

【问题讨论】:

【参考方案1】:

请注意问题不是white颜色。这是因为它是透明的。

当一个元素变为透明时,其所有子元素的不透明度; IE 6 7 等中的 alpha 过滤器更改为新值。

所以你不能说它是白色的!

您可以在其上方放置一个元素,并将该元素的透明度更改为1,同时将图像的透明度更改为.2 或您想要的任何值。

【讨论】:

你的推理是错误的。这是因为图像当前正在褪色,因为它覆盖了背景颜色【参考方案2】:

用黑色背景的span 元素包裹您的图像。

.img-wrapper 
  display: inline-block;
  background: #000;


.item-fade 
  vertical-align: top;
  transition: opacity 0.3s;
  -webkit-transition: opacity 0.3s;
  opacity: 1;


.item-fade:hover 
  opacity: 0.2;
<span class="img-wrapper">
   <img class="item-fade" src="https://via.placeholder.com/100x100/cf5" />
</span>

【讨论】:

【参考方案3】:

它不会褪色为“黑色透明”或“白色透明”。它只是显示图像“背后”的任何颜色,不是图像的背景颜色 - 该颜色完全被图像隐藏。

如果您想淡化为黑色(ish),则需要在图像周围放置一个黑色容器。比如:

.ctr 
    margin: 0; 
    padding: 0;
    background-color: black;
    display: inline-block;

<div class="ctr"><img ... /></div>

【讨论】:

【参考方案4】:

http://jsfiddle.net/6xJQq/13/

.container 
    display: inline-block;
    padding: 5px; /*included padding to see background when img apacity is 100%*/
    background-color: black;
    opacity: 1;


.container:hover 
    background-color: red;


img 
    opacity: 1;


img:hover 
    opacity: 0.7;


.transition 
    transition: all .25s ease-in-out;
    -moz-transition: all .25s ease-in-out;
    -webkit-transition: all .25s  ease-in-out;

【讨论】:

以上是关于css 过渡不透明度淡入淡出背景的主要内容,如果未能解决你的问题,请参考以下文章

淡入/淡出的简单切换不适用于过渡、不透明度和可见性

react, css) 淡入淡出的过渡 css,当背景图像用 className 改变时

angularjs链式淡入/淡出过渡

jquery淡入淡出div中的背景图像 - 交叉淡入淡出

加载时淡入淡出过渡到 div [重复]

使背景淡出/淡入