动态向表单元格添加元素时如何计算"width: 100%"?



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_。这不应该影响列宽——至少只要您没有实际编辑内容,就不会影响列宽

相关内容

  • 没有找到相关文章

最新更新