You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

页面加载时@-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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 12:37:06