table 超出 父元素 div

文章探讨了在CSS和HTML中,表格超出其父元素div的问题。问题源于table的默认样式table-layout。解决方案包括设置table-layout为固定宽度,单元格设置宽度并应用text-overflow: ellipsis。然而,当表格在radio元素内部时,由于内联元素和块元素的布局冲突,导致表格依然超出。通过控制radio的value实现表格的显示和隐藏,可以达到类似效果,但最小宽度时仍可能超出,此时可考虑使用滚动条。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

table 超出 父元素 div

实际是把表格写在了 redio 里面

问题: table 在 div 里面,想要的效果是如果 table 的内容超出了父元素就显示省略号,再把 table 的宽度设置为100%,但是,最后数据比较长还是超出了父元素

在这里插入图片描述

原因: table 是有不一样的默认样式 table-layout

描述
auto默认,列宽由单元格设定
fixed列宽由表格宽度或列宽自己设定
inherit继承,从父元素继承table-layout的值

解决方案: 把 table-layout 的值设为有表格宽度固定

    table {
      table-layout: fixed;
      //省略号显示超出的内容
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }

最后得到的结果: text-overflow: ellipsis 并没有生效

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-el8u2n9J-1628772797893)(https://i.loli.net/2021/08/12/9K4Ny6vHnGPZpWs.png)]

原因: 应该给 单元格设置固定的宽度,并且超出之后显示省略号

    table {
      table-layout: fixed !important;
      width: 100%;
    }
    td:not(:first-child),
    th:not(:first-child) {
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
      width: 40%;
    }

最后就能得到想要的结果了😄

显示省略号.png

这个接口虽然符合预期,但是有出现了新的问题就是这里的表格里面的内容显示也是显示成省略号了,都不能看到完整的信息,果然说时迟那时快这个问题就被提出来了

在这里插入图片描述

那么问题来了,这个 antd 的 table 为什么不能自适应换行显示而是会超出父元素呢?还有我们费这个大的劲来设置不让它超出。

大胆猜测是因为把这个表格写在了 redio 里面

答案也果然如此, redio 是内联元素,表格是块元素,这样写肯定是会破坏表格的布局的,比如说antd 的表格头上有是一个样式是 overflow-wrap: break-word 也就是用于不能分开的字符太长并被在包裹着,为了防止溢出,允许这样的单词能换行,是不管用的

如果把代码改一下,把table拿出来能实现同样的效果吗,答案是确定的

    <Radio.Group> 
        <Radio value={BackupMethod.BackupSet}>
            <span>Rebuild database using a backup set</span>
         </Radio>
    </Radio.Group>

      {state.backupMethod === BackupMethod.BackupSet && (
        <div className="pl pt">
          <Table
            size="small"
            columns={columns}
            dataSource={state.backups}
            // @ts-expect-error
            rowSelection={rowSelection}
            rowKey="backupId"
          />
        </div>
      )}

只要我们用 redio 的 value 来控制表格的显示和隐藏就行了,这个也是能实现同样的点击 redio 就展开显示表格的效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VNzWyCm2-1628772797901)(https://i.loli.net/2021/08/12/NLjnsC2i1yclDxV.png)]

但是当把表格到达最小的宽度还是会超出父元素

超出最小的宽度.png

这种情况是无法避免的,毕竟这是它作为表格的底线,这时候我们就可以换一种思维了,既然不能超出那就在给最小值的时候它加滚动条显示

加滑动条.png

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值