为何PrimeNG表格th/td固定宽度在Chrome中不生效但Firefox正常?
PrimeNG表格冻结列宽度异常问题分析
我使用PrimeNG表格(v15.4.1),为冻结列的<th>和<td>元素设置了如下样式:
max-width: 40px !important; min-width: 40px !important; width: 40px !important; padding: 0px;
此外,父元素<tr>的box-sizing属性为border-box,且这些<th>/<td>元素内部无内容撑宽尺寸。在*Chrome(118.0.5993.70)*中,元素实际宽度有时为40px,有时变为48px或其他值;Firefox中宽度始终正常。
问题
是什么原因导致<th>/<td>元素(或其祖先元素)不遵守上述样式规则?
更新说明
该PrimeNG表格初始化时配置了以下选项:
[reorderableColumns]="true" [resizableColumns]="true" columnResizeMode="expand" [scrollable]="true" scrollHeight="flex"
这些配置会强制表格设置固定width和min-width像素值,各列也会被设置固定width和max-width样式。动态隐藏/显示列后,列宽总和与表格总宽度不匹配,加上表格宽度从本地存储恢复,两者不同步导致列宽不生效。PrimeNG仓库存在相关未解决问题。
总结
当表格固定width和min-width,且各<th>/<td>的width和max-width总和与表格宽度不匹配时,浏览器处理逻辑不同,导致Chrome中列宽不生效。
内容的提问来源于stack exchange,提问作者AsGoodAsItGets
相关产品推荐
相关产品推荐

