Backgrid允许编辑表中的值,并通过在<td>
中放入<input type="text">
来实现这一点。输入被设置为max-width: 100%
,但在某些情况下,它仍然会进一步扩大列的大小。
例如,请参见"示例"部分的网格,然后单击"填充"列中的项目。当它得到editor
类时,它的填充被设置为0,并且<td>
和<input>
都有box-sizing: border-box
,但列的宽度仍然增加。
那么width: 100%
不意味着<td>
宽度的100%吗?或者仅仅使用CSS是不可能做到这一点的?我可能会使用主干事件来获取td的大小,然后将输入设置为相同的大小,但这听起来有点麻烦。
计算表列宽度的方式并非微不足道。他们试图在列之间分配可用空间,这样内容越多的列就可以获得更大的份额。
如果你说"内容应该和列一样大",你会让这变得更加复杂,因为你在内容宽度和列宽度之间创建了循环依赖关系。
那么
width: 100%
不意味着<td>
宽度的100%吗?
没有。当任何内容发生变化时,所有内容都会更新。CSS不保存历史记录,因此它不知道某个元素在特定时间的宽度。因此,width: 100%
意味着在所有内容都更新后,输入将具有与<td>
相同的宽度。但这可能与变革前有所不同。
对于你的问题,我没有完美的解决方案,但以下是一些想法:
- 在使用JavaScript替换内容之前,请检查列宽(正如您在问题中所指出的)
- 使用固定的表格布局。这样,所有列都具有相同的宽度,并且不会根据其内容进行更改
- 在CCD_ 15上设置CCD_。这不应该影响列宽——至少只要您没有实际编辑内容,就不会影响列宽