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

Flexbox设置justify-content:space-evenly后溢出内容向左溢出无法访问

问题原因

  1. 核心布局问题:你给可滚动的flex容器#penDisplay设置了justify-content: space-evenly,当子元素总宽度超过容器宽度时,浏览器会将所有子元素作为一个整体居中对齐,导致内容同时向左右两侧溢出。但浏览器的横向滚动条默认仅支持访问右侧溢出内容,左侧溢出部分无法通过滚动查看。
  2. HTML规范问题:你循环渲染多个PenCard组件时都使用了相同的id="penCard",HTML要求同一页面内id必须唯一,会导致CSS选择、DOM操作异常,需要改为class。

修复方案

第一步:修正id重复问题

将PenCard组件中的id="penCard"改为className="penCard",对应CSS选择器从#penCard调整为.penCard。

第二步:调整布局结构与CSS

我们通过嵌套一层单独负责布局的flex容器解决对齐和滚动的冲突,外层容器仅负责滚动和定位:

修改后的CSS代码:

/* 外层容器仅负责滚动和定位,移除justify-content */
#penDisplay{
        overflow-x: auto;
        overflow-y: hidden; /* 可选,避免出现不必要的垂直滚动条 */
        position: absolute;
        top: 15%;
        left: 2%;
        width: 96%;
        height: 65%;
}
/* 新增内层flex容器,专门负责子元素对齐 */
.pen-inner-wrap {
        display: flex;
        justify-content: space-evenly;
        width: fit-content; /* 宽度跟随子元素总宽度自适应 */
        min-width: 100%; /* 子元素不足时撑满外层容器,保证space-evenly生效 */
        height: 100%;
        padding: 0 10px; /* 可选,避免滚动到边缘时卡片贴边 */
}
.penCard{
        color: #CECECE;
        padding: 15px;
        padding-top: 0px;
        flex-shrink: 0;
        margin-right: 55px;
        width: 15%;
        height: 60%;
        background: #2D3344;
        border: 11px solid #004B93;
        box-sizing: border-box;
        border-radius: 53px;
}
/* 移除最后一个卡片的右边距,避免末尾多余空白 */
.penCard:last-child {
        margin-right: 0;
}

修改后的JSX结构:

<div id="penDisplay">
  <div className="pen-inner-wrap">
    {this.renderCard(1)}
    {this.renderCard(2)}
    {this.renderCard(3)}
    {this.renderCard(4)}
    {this.renderCard(5)}
    {this.renderCard(6)}
    {this.renderCard(7)}
  </div>
</div>

修改后即可实现预期效果:子元素总宽度小于容器宽度时均匀居中排布,溢出时可横向滚动查看所有内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:48:04