页面加载时@-webkit-keyframes淡入动画失效问题求助
问题描述
我正在制作个人作品集,尝试为图片添加CSS淡入动画,但页面加载时动画未生效。我使用Bootstrap进行页面样式设计,通过本地打开HTML文件在MacBook Pro的Safari浏览器中测试。
我的代码如下:
CSS代码
@-webkit-keyframes fade-image { 0% { opacity: 0; } 100% { opacity: 1; } } img { vertical-align: middle; border-style: none; border-radius: 50%; -webkit-animmation: fade-image 3s; }
HTML代码
<div class="col-5"> <img src="path to my image" class="rounded-circle"> </div>
我期望图片在页面加载时淡入,但它直接显示出来。我知道Safari需要使用-webkit前缀,但问题仍未解决,作为CSS动画初学者,恳请提供解决建议。
解决建议
首先你代码里有个明显的拼写错误:-webkit-animmation 多写了一个m,正确属性名是-webkit-animation,这是导致动画没生效的核心原因。
除此之外,还有几个优化点能让动画在Safari和其他浏览器都稳定工作:
- 同时添加标准的
animation属性,兼容非webkit内核的现代浏览器 - 给图片初始设置
opacity: 0,确保页面加载时图片一开始是完全透明的,避免直接显示 - 加上
animation-fill-mode: forwards,确保动画结束后保持最终状态(这里虽然动画终点是opacity:1和默认一致,但加上能避免特殊情况)
修改后的CSS代码:
@-webkit-keyframes fade-image { 0% { opacity: 0; } 100% { opacity: 1; } } /* 补充标准keyframes,兼容更多浏览器 */ @keyframes fade-image { 0% { opacity: 0; } 100% { opacity: 1; } } img { vertical-align: middle; border-style: none; /* Bootstrap的rounded-circle已经设置了border-radius:50%,可以去掉重复属性 */ opacity: 0; -webkit-animation: fade-image 3s; animation: fade-image 3s; -webkit-animation-fill-mode: forwards; animation-fill-mode: forwards; }
另外,你用了Bootstrap的rounded-circle类,这个类已经包含了border-radius:50%,所以自己CSS里的重复设置可以删掉,让代码更简洁。
内容的提问来源于stack exchange,提问作者Mr_Tambourine_Man
相关产品推荐
相关产品推荐

