[英]background-image transition for div on hover is not working
我有一个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>
我做错什么了吗?
如果有人可以帮助,那就太好了!!
非常感谢
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; }
<div id="header"><div class="logo">LOGO</div></div>
您不能像这样在background-image
上应用过渡效果。 您需要对另一个属性应用过渡。 例如,您可以在背景上使用多个渐变,并在background-size
上应用过渡:
#header { border: 0.1px solid #666; background-image: linear-gradient(rgba(0, 0, 0, 0.75), rgba(0, 0, 0, 0.0)), linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); background-size: 100% 0% , auto; background-repeat:no-repeat; height: 10vh; padding: 0; transition: background 1s ease-in-out; -webkit-transition: background 1s ease-in-out; } #header:hover { background-size: 100% 100%, auto; }
<div id="header"> this is my header</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.