CSS过渡背景色的透明度

19

寻找提示,如何在背景颜色中使用不透明度并进行过渡效果?

我正在使用 rgba() 函数,但是鼠标悬停时过渡效果无法实现。

.bx{
  background:rgba(255,0,0,0.5);
  width:100px; height:100px;
  position:relative;
  transition: opacity .5s ease-out;
  -moz-transition: opacity .5s ease-out;
  -webkit-transition: opacity .5s ease-out;
  -o-transition: opacity .5s ease-out;
}

.bx:hover{
  background:rgba(255,0,0,1);
}

.t{
  position:absolute; 
  bottom:0px;
}

HTML

<div class="bx"><div class="t">text</div></div>

有什么办法可以为.bx使用过渡效果吗?

1个回答

32

事实上,opacityrgba()是完全不同的。

如果您使用background属性将rgba()作为背景颜色,则需要按以下方式将background作为过渡属性:

.bx {
  background: rgba(255,0,0,0.5);
  width:100px; height:100px;
  position: relative;

  -webkit-transition: background .5s ease-out;
  -moz-transition: background .5s ease-out;
  -o-transition: background .5s ease-out;
  transition: background .5s ease-out;
}

.bx:hover {
  background: rgba(255,0,0,1);
}

JSBin演示


同意。不透明度没有被改变,因此与其关联的过渡不会产生任何效果。 - CaribouCode
3
TIL; 值得注意的是,动画背景比动画不透明度要昂贵得多(因为它会导致重绘)。当您有许多元素同时进行动画或在低功率设备上运行时,这一点就会非常明显! - lukejacksonn
有没有什么原因我不能过渡color属性的rgba值的不透明度?过渡总是瞬间完成 :( - oldboy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接