使用ant design的table控件最后一列固定(fixed)遇到不渲染的问题
工作以来一直在做2b的项目,因此表单操作,权限设置,一些业务逻辑就做的比较多。
首先介绍下背景:前后端完全分离,前端技术栈使用react+redux+antd,经常是没有视觉设计,全凭产品需求文档··_··!最近产品来了个需求,需要做一个流程图,在流程图上点击文字时需要弹窗显示数据,因此渣渣一个需求里做了n个弹窗,弹窗上再弹窗。。。。。(心里无数XXX奔过),因此也遇到了不少的问题,流程图是个大模块,遇到的问题等下次再细说,这次就简单讲下如题所述的情况
文章图片
这就是所做的流程图(因为数据是内部的,只能将就了)只要有编辑的地方都会分情况出现各种弹窗。
文章图片
这里就是产品和业务在做回归测试的时候出现的问题。tasble表格的宽度设成了130%,最后一列设定宽度130px,并且固定在表格右侧,在这列上给添加了两个按钮,编辑和删除。在页面渲染过程中会发现后一列的两个按钮直接没有,鼠标滑过的时候就会出现,或者是不在屏幕可视范围内的按钮不渲染,但是打开控制台,却能看见到dom结构是存在的,也是一脸懵逼啊。渣渣发现antd做最后一列固定是属于重写一个table结构,写出一模一样的一列然后使用定位的方式改在相应的位置上。估计是直接对表格上的最后一列做定位不好操作,所以才会写个一样的table结构定位到页面上进行覆盖。因此才会有哪些最后固定的一列不设置宽度时,出现两个一样的列
文章图片
一开始渣渣对表格的设置是
record.key}
columns={columns}
dataSource={this.state.list}
bordered={true}
pagination={false}
scroll={{ x: '130%' }}
loading={tacheSearchList.request}
onChange={(pagenation, filters, sorter) => {
this.onTableChange(pagenation, filters, sorter)
}}
className="sku-table"
/>
【使用ant design的table控件最后一列固定(fixed)遇到不渲染的问题】这样会发现表头的数据有些换行了,但是操作的那列表高度并没有相应的增加,导致有错行的情况,因此将scroll={{ x: ‘130%’ }}改成了scroll={{ x: ‘max-content’ }}。针对渲染出现的异常情况,在antd的GitHub上翻遍了所有的issue也没有到类似的情况,只能自己尝试的改改了。
原来自带的css样式
.ant-table-fixed-left,
.ant-table-fixed-right {
position: absolute;
top: 0;
overflow: hidden;
transition: box-shadow 0.3s ease;
border-radius: 0;
}
附上改后的css
.ant-table-fixed-left,// 这个就是含最后一列固定的table表格类名
.ant-table-fixed-right {
z-index: 999999
overflow: visible
}
.ant-table th,
.ant-table td,
{
white-space: nowrap;
}
.ant-table-fixed {// 对max-content做浏览器兼容
width: -webkit-max-content;
width: -moz-max-content;
width: max-content;
}
max-content直接写在table的scroll={{ x: ‘max-content’ }}中发现在火狐有时候没起作用,因此才会有下面的浏览器兼容。但是单独看max-content的兼容性还是很不错的。emmmmm…#_#!!! 很无奈呀
这些修改其实就是覆盖了原来的overflow:hidden变成overflow: visible,然后添加z-index: 999999。要说具体的原因,其实并没有了解到本质,就是解决了这个问题而已,如果有遇到相似问题的朋友并且又刚好知道为什么的话,麻烦告知,感激不尽!
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- 基于|基于 antd 风格的 element-table + pagination 的二次封装
- iOS中的Block
- Linux下面如何查看tomcat已经使用多少线程
- 使用composer自动加载类文件
- android|android studio中ndk的使用