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

CSS轮播KeyFrame动画兼容问题:Chrome/Edge正常Firefox失效求解

轮播图Firefox失效原因

你当前的实现逻辑是通过修改绝对定位的.carousel__snapper的left属性,依靠Chromium内核(Chrome、Edge的底层内核)的非标准滚动捕捉兼容特性,锚点位置变化时触发父容器自动滚动,这个逻辑不符合CSS标准约定的表现,Firefox的滚动捕捉机制不会响应绝对定位子元素的偏移触发滚动,所以只会看到snapper自己动,父容器的滚动位置不变,图片自然不会跟着切换。加-moz-前缀没用是因为问题和前缀无关,完全是内核实现逻辑的差异。

解决方法也很简单,直接把动画绑定到滚动容器.carousel__viewport的scroll-left属性上,替代现在修改snapper偏移的方案,符合标准规范的写法所有主流浏览器都能正常兼容。

类选择器/nth-child不生效原因

你的导航按钮每个都包裹在独立的.carousel__navigation-item li元素里,直接给.carousel__navigation-button加nth-child选择器是找不到对应元素的:nth-child匹配的是同一个父元素下的同级元素,你的按钮都分别在不同的父节点下,当然选不到。只需要调整选择器层级,先选li的nth-child,再匹配里面的按钮就行,示例写法:

/* 替代原来的#nav1、#nav2、#nav3的写法 */
.carousel__navigation-item:nth-child(1) .carousel__navigation-button {
  animation: indicate 12300ms infinite -1000ms;
}
.carousel__navigation-item:nth-child(2) .carousel__navigation-button {
  animation: indicate 12300ms infinite 3100ms;
}
.carousel__navigation-item:nth-child(3) .carousel__navigation-button {
  animation: indicate 12300ms infinite 7200ms;
}
/* 对应的暂停动画选择器也同步调整即可 */

调整后就不需要依赖ID选择器绑定动画了。

内容的提问来源于stack exchange,提问作者DanCan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:15:01