antd表格固定列出现空白间隙问题

前言:

antd表格设置了fixed属性后,在设置scroll:x的时候会出现空白间隙。

如下图:

解决方案:

  1.动态计算宽度


//动态计算columns width属性(width属性不要加单位px)
countX = (arr) => {
    return arr.reduce((cur, next) => {
        return cur + (next.width ? next.width : 0)
    })
}

let columns=[{

    title: "菜单",
    dataIndex: "name",
    width: 160 //切记不要加px
},
{

    title: "查看",
    dataIndex: "view",
    width: 120 //切记不要加px
}
]

//然后table的scroll={{x:countX(columns)}}

2.有的时候columns不确定(即是动态的出现空白间隙问题则需要给其中一项不设置width或者为'')

 有的时候columns不确定(即是动态的出现空白间隙问题则需要给其中一项不设置width或者为''),一般都会给最后一项设置为自适应(不设置width或width='');

if(columns.length>0){//当columns为动态时给最后一个项设置为自适应,防止出现空白间隙
   columns[columns.length-1].width='' 
}

3.设置scroll={{ x: 'max-content' }}

当使用 Antd 表格组件的固定列功能时,可能会出现固定列后出现空白间隙的问题,这是因为固定列后,表格容器的宽度发生了变化,从而导致出现了空白间隙。 解决方法:

  1. 设置表格容器的宽度 你可以在表格组件上添加 scroll={{ x: 'max-content' }} 属性来设置表格容器的宽度:
    <Table columns={columns} dataSource={data} scroll={{ x: 'max-content' }} />
    这个属性会根据表格内容的宽度自动调整表格容器的宽度,从而避免空白间隙的问题。
  2. 使用 CSS 样式调整表格 如果以上方法仍然无法解决空白间隙的问题,你可以使用 CSS 样式来调整表格的布局。你可以使用浏览器的开发者工具来分析表格的布局,并调整相应的 CSS 样式来解决问题。 例如,你可以通过以下 CSS 样式来设置表格容器的宽度:
    .ant-table-container { width: max-content; }
    这个样式会将表格容器的宽度设置为内容的最大宽度,从而避免空白间隙的问题。你可以根据实际情况进行调整。

2025-02-19补充:

我今天又使用了表格,固定了第一列和最后一列,又出现了空白的缝隙,横向滚动时出现的!

代码如下:

const columns:any = [
        {
            title: '名称',
            dataIndex: 'name',
            key: 'name',
            fixed: 'left',
            width:130
        },
        {
            title: '代码',
            dataIndex: 'age',
            key: 'age',
            width:130
        },
        {
            title: '成立日期',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '策略类型',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '管理人',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '策略场景',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: <span className='headRed'>策略属性</span>,
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '风险等级',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '业绩基准',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '权益中枢',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '目标波动率',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '收益率-近1年',
            dataIndex: 'address',
            sorter:true,
            key: 'address',
            width:130
        },
        {
            title: '收益率指标',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '最大回撤-近1年',
            dataIndex: 'address',
            sorter:true,
            key: 'address',
            width:130
        },
        {
            title: '策略运营人',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '策略主理人',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '点赞人数',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '关注人数',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '公开策略',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '操作',
            fixed: 'right',
            width:200
        },
    ];

const dataSource = [
        {
            key: '1',
            name: '胡彦斌',
            age: 32,
            address: '西湖区湖底公园1号',
        },
        {
            key: '2',
            name: '胡彦祖',
            age: 42,
            address: '西湖区湖底公园1号',
        },
    ];



<div className='table_box'>
    <Table dataSource={dataSource} columns={columns}  scroll={{x:'max-content'}}/>
</div>

效果图如下:

 我的解决方案:是给其中一个不固定的列 的width属性去掉即可。

const columns:any = [
        {
            title: '名称',
            dataIndex: 'name',
            key: 'name',
            fixed: 'left',
            width:130
        },
        {
            title: '代码',
            dataIndex: 'age',
            key: 'age',
            width:130
        },
        {
            title: '成立日期',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '策略类型',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '管理人',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '策略场景',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: <span className='headRed'>策略属性</span>,
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '风险等级',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '业绩基准',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '权益中枢',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '目标波动率',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '收益率-近1年',
            dataIndex: 'address',
            sorter:true,
            key: 'address',
            width:130
        },
        {
            title: '收益率指标',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '最大回撤-近1年',
            dataIndex: 'address',
            sorter:true,
            key: 'address',
            width:130
        },
        {
            title: '策略运营人',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '策略主理人',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '点赞人数',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '关注人数',
            dataIndex: 'address',
            key: 'address',
            width:130
        },
        {
            title: '公开策略',
            dataIndex: 'address',
            key: 'address',
            //width:130
        },
        {
            title: '操作',
            fixed: 'right',
            width:200
        },
    ];

const dataSource = [
        {
            key: '1',
            name: '胡彦斌',
            age: 32,
            address: '西湖区湖底公园1号',
        },
        {
            key: '2',
            name: '胡彦祖',
            age: 42,
            address: '西湖区湖底公园1号',
        },
    ];



<div className='table_box'>
    <Table dataSource={dataSource} columns={columns}  scroll={{x:'max-content'}}/>
</div>

效果图:

 

后来我这样写:

x:2670就是 columns里所有的width属性相加得出来的,这样写还是有缝隙,但我 x写成2680就又没了!!!所以你如果遇到了,也可以把x值设置比实际的多10px或者更多。

 <div className='table_box'>
     <Table dataSource={dataSource} columns={columns}  scroll={{x:2670}}/>
 </div>

 

总结:

  antd 的Table组件还会有其他坑,比如设置宽度不起效,设置背景颜色不起效等。一般样式问题都需要层层找类名强行覆盖(!important)或者使用:global.

 例如:

.menu {
  :global(.anticon) {
    margin-right: 8px;
  }
  :global(.ant-dropdown-menu-item) {
    min-width: 160px;
  }
}

### 回答1: "fatal: failed to load library 'libcurl-4.dll" 是一个错误信息,通常出现在使用某些软件或应用程序时。这个错误表示系统无法加载 libcurl-4.dll 动态链接库文件。 libcurl-4.dll 是一个用于支持网络通信的动态链接库,它提供了各种网络协议和功能的实现。当软件或应用程序需要使用 libcurl-4.dll 时,操作系统会尝试从指定的路径加载该库文件。然而,如果指定的路径无效或者库文件本身存在问题,就会出现 "fatal: failed to load library 'libcurl-4.dll" 错误。 要解决这个问题,可以尝试以下步骤: 1. 检查 libcurl-4.dll 的路径:确保该文件存在于软件或应用程序所需的路径下。如果文件丢失或被删除,需要重新安装相关软件或应用程序。 2. 检查系统环境变量:有时操作系统无法找到 libcurl-4.dll 是因为环境变量没有正确设置。可以在系统的环境变量中添加正确的路径,并确保路径包含在 PATH 变量中。 3. 更新 libcurl-4.dll:如果库文件本身损坏或过时,可以尝试下载最新的 libcurl-4.dll 版本,并替换当前使用的文件。 4. 检查软件或应用程序的依赖关系:某些软件或应用程序需要其他库文件的支持,如果其中任何一个丢失或损坏,都会导致 "fatal: failed to load library 'libcurl-4.dll" 错误。可以重新安装相关软件或应用程序,或者尝试修复其他缺失的库文件。 如果上述方法仍然无法解决问题,还可以查询相关软件或应用程序的官方支持渠道,寻求更详细的帮助和解决方案。 ### 回答2: 当你在使用或运行某个程序时,如果出现了“fatal: failed to load library 'libcurl-4.dll'”的错误提示,意味着你的计算机缺少了“libcurl-4.dll”这个库文件或者该库文件无法被正确加载。 这个错误通常是由以下几种原因引起的: 1. 缺失库文件:你的计算机上可能没有安装或者该库文件被意外删除了。解决这个问题的方法是下载并安装最新版本的 libcurl-4.dll,或者从可靠的来源获取之前正常工作的文件。 2. 不兼容的库文件版本:你的程序要求的是特定版本的 libcurl-4.dll,但你的计算机上安装了不匹配的版本。在这种情况下,你可以尝试升级你的库文件到与程序要求的版本相匹配,或者尝试与程序兼容的较新版本。 3. 环境变量设置错误:你的计算机可能没有正确设置环境变量,导致操作系统无法找到 libcurl-4.dll 文件的位置。你可以通过检查环境变量设置并添加正确的路径来解决这个问题。 4. 程序文件损坏:有时,libcurl-4.dll 文件本身可能被损坏。你可以尝试重新下载并替换该文件,确保你使用的是完整且未损坏的文件。 总之,解决这个错误的关键在于确保计算机上正确安装了所需的库文件,并且文件能够被正确加载。如果以上方法无效,你可以尝试重新安装或者更新相关的程序,或者咨询专业人士以获得更详细的帮助。 ### 回答3: 这个错误表示在运行某个程序时,系统无法加载'libcurl-4.dll'库文件。这个库文件是用于支持网络通信功能的,通常与网络连接、数据传输等操作相关。这个错误可能有以下几种原因和解决方法: 1. 缺少库文件:最常见的情况是缺少'libcurl-4.dll'文件。解决方法是重新安装或更新相关程序或软件。可以尝试下载并安装最新版本的 libcurl 库,并确保它位于正确的目录下。 2. 版本不匹配:可能库文件的版本与程序或软件的要求不匹配。可以尝试使用与程序或软件兼容的特定版本的'libcurl-4.dll'库文件。 3. 文件损坏:如果库文件损坏或被破坏,就会导致加载失败。可以尝试重新下载库文件,或者从可信的来源获得原始文件并替换。 4. 环境变量设置错误:在某些情况下,系统无法正确查找到库文件的路径。可以通过设置正确的环境变量来解决这个问题。确保将库文件所在的目录添加到系统的PATH环境变量中。 5. 冲突或错误的系统配置:某些软件或驱动程序可能会导致冲突或干扰,从而无法加载库文件。可以尝试重新安装相关程序,或者更新操作系统和驱动程序来解决冲突问题。 总之,'fatal: failed to load library 'libcurl-4.dll'的错误通常可以通过重新安装或更新相关程序、替换库文件、设置正确的环境变量或解决系统冲突来解决。如果问题仍然存在,可以考虑咨询技术支持或论坛等资源以获取更多帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

崽崽的谷雨

漫漫前端路,摸爬滚打

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值