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

HTML/CSS实现table内ul动态li超宽自动换行 避免列溢出

问题根源

布局溢出由三个核心问题导致:

  1. <ul>设置了display:flex但flex-wrap: wrap被注释,flex子项默认强制在单行排列,超出容器宽度就会溢出
  2. 表格默认使用table-layout: auto规则,会优先根据内容宽度撑开单元格,没有强制约束内容宽度,最终覆盖右侧相邻列
  3. 给.existing_number和内部ul写死100px固定宽度,和外层grid分配的62%列宽不适配,进一步加剧溢出问题。
修复方案

按以下步骤修改样式即可实现需求:

  1. 首先给表格添加固定布局规则,从外层约束单元格宽度,避免内容撑破表格结构
table {
  table-layout: fixed;
  width: 100%; /* 可根据实际页面需求调整表格总宽度 */
}
  1. 修改.existing_number相关样式,开启flex换行,移除冲突的样式声明,适配网格容器宽度:
.dataset_number_container{
  display: grid;
  grid-template-columns: 32% 62%;
  column-gap: 6%;
  .dataset_number{
    input{
      width: 60px;
    }
  }
  .existing_number{
    width: 100%; /* 替换原写死的100px,适配grid分配的列宽 */
    ul{
      list-style: none;
      padding: 0;
      margin: 0;
      display: flex;
      align-items: center;
      gap: 5px; /* 控制li之间的横向间距 */
      flex-wrap: wrap; /* 开启自动换行,核心修复项 */
      width: 100%; /* 替换原写死的100px,撑满父容器 */
      li{
        width: 40px;
        height: 35px;
        margin-bottom: 5px; /* 控制换行后的上下行间距 */
        display: flex; /* 替换原inline-block,配合居中属性生效 */
        justify-content: center;
        align-items: center;
        background: #F5F6FA;
        border-radius: 4px;
        font-weight: 500;
        input{
          width: 40px;
          height: 35px;
          text-align: right;
        }
      }
    }
  }
}
最终效果

修改后,动态渲染的<li>元素总宽度超出容器宽度时会自动折行,第一行的li和左侧第一个输入框保持水平对齐,超出部分自动落到下方依次排列,不会再溢出覆盖右侧相邻列。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 03:16:04