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

Firefox中HTML/CSS轮播元素重叠问题的修复方案咨询

Firefox中CSS轮播元素遮挡问题的修复方案

我按照教程制作了纯CSS轮播组件,Chrome中6个元素可正常滚动展示,但Firefox里第一组的5、6号卡片会被第二组的1、2号遮挡,仅能看到前4个元素滚动。已知问题源于.group容器宽度小于子元素总宽度,现提供修复方法:

原始代码

HTML代码

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="./style.css">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Pen</title>
  </head>
  <body>
        <div class="carousel">
            <div class="group">
                <div class="card">1</div>
                <div class="card">2</div>
                <div class="card">3</div>
                <div class="card">4</div>
                <div class="card">5</div>
                <div class="card">6</div>
            </div>
            <div aria-hidden class="group">
                <div class="card">1</div>
                <div class="card">2</div>
                <div class="card">3</div>
                <div class="card">4</div>
                <div class="card">5</div>
                <div class="card">6</div>
            </div>
        </div>
    <script src="./script.js"></script>
  </body>
</html>

CSS代码

.carousel {
  margin: 100px auto;
  width: 90%;
  border: 5px solid red;
  display: flex;
  overflow-x: auto;
  scrollbar-width: none;
}
.group {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1em;
  animation: spin 5s infinite linear;
  padding-right: 1em;
}
.card {
  flex: 0 0 2em;
  height: 2em;
  padding: 1em;
  background: cornflowerblue;
  font-size: 3rem;
  border-radius: .2em;
  text-align: center;
  align-content: center;
}
@keyframes spin {
  from { translate: 0;}
  to { translate: -100%;}
}

修复方案

问题原因:Firefox中,当.carousel(父flex容器)设置overflow-x: auto时,子flex容器.group的宽度计算未正确包含所有子元素的总宽度(包括gap和padding-right),导致容器被压缩,后续组的元素会覆盖前面组的内容。

只需给.group添加flex-shrink: 0,强制容器保持自身完整宽度,不被父容器压缩:

修改后的CSS代码(仅修改.group部分)

.group {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1em;
  animation: spin 5s infinite linear;
  padding-right: 1em;
  flex-shrink: 0; /* 添加这一行 */
}

添加后,.group会正确计算自身宽度(6个卡片宽度 + 5个gap + padding-right),动画滚动时不会出现元素遮挡问题,Firefox和Chrome都能正常展示所有6个元素的滚动效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.02 01:07:26