技术:vue + element-ui
场景:页面中有个按钮切换表格显示还是卡片显示(切换时使用v-if隐藏表格),当从卡片显示模式中切换成表格显示时,表格中设置min-width的列会收缩。表格左右两边各有一列固定。当且仅当页面完全能容下表格,使设置min-width的列宽度比min-width预设值大的时候,隐藏表格在进行显示的时候,设置min-width会收缩一下。如果表格中数据很少,没有触发y轴滚动,就不会出现收缩,如果触发滚动,就会收缩
排查出来原因:切换的时候,表格刚出来没有给y轴滚动条分配空间,之后不知道内部怎么操作,然后又给了y轴滚动条空间,所以导致宽度缩小了一个滚动条的大小,导致min-width列收缩了,但是不知道怎么解决
1.切换时使用的v-if,改成v-show会出现更多问题;
2.在切换时使用doLayout,不生效还是会出现收缩问题;
3.在Update和beforeUpdate使用doLayout,不生效
4.将min-width改成大的值,可以暂时解决,但是浏览器如果缩放,还是会出现这个问题
5.改成width,这样就会出现表格站不满空间,导致表格内部列和固定列分割
6.绑定了表格列绑定了key值也不行
设置flex-shrink:0属性即可