使所有单元格的宽度相同(使用jQuery?)
如果我有以下表格结构:使所有单元格的宽度相同(使用jQuery?),jquery,html,css,Jquery,Html,Css,如果我有以下表格结构: <table cellpadding="0" cellspacing="0" border="0" width=100%> <tr> <th> </th> <th> Col Header 1 </th> <th> Col Header 2 </th> <th> Col Header 3
<table cellpadding="0" cellspacing="0" border="0" width=100%>
<tr>
<th>
</th>
<th>
Col Header 1
</th>
<th>
Col Header 2
</th>
<th>
Col Header 3
</th>
</tr>
<tr>
<th>
Row Header
</th>
<td>
cell 1
</td>
<td>
cell 2
</td>
<td>
cell 3
</td>
</tr>
</table>
列标题1
列标题2
列标题3
行标题
第1单元
第2单元
第三单元
如何使所有TDs的宽度相同?请注意,我在行首有TH。如果需要,我可以使用jQuery
编辑: 根据下面的建议,我开始更加倾向于jQuery解决方案。基本上我需要做的是:
我认为这有点复杂,但应该可以完成这项工作…有什么原因不能使用CSS吗
td {
width: 300px;
}
如果希望所有TD:s和TH:s的宽度相同,只需在TH上设置宽度:
th {
width: 300px;
}
TD:s将从列获取其宽度,而列将从TH:s获取其宽度
编辑:对您的问题进行编辑使您更容易理解您想做什么:)
我肯定会考虑使用CSS Flexible Box Model(flexbox)来实现兼容浏览器
您可以使用Modernizer检查flexbox兼容性:
由于可能需要用JavaScript执行代码所需的代码混乱,我还将考虑启用的浏览器是否真的需要这个特性。 但这并不是说用javascript实现它是不可能的,一点也不可能
如果表中的数据在加载后是静态的,那么获取表和第一列的宽度,并将剩余部分拆分到其余的列上,应该是非常直接的 但是,如果表的内容在最初加载后可能会更改,则需要整理如何检查更改并每次重新应用新样式。您可能会放置一些事件侦听器,但需要侦听哪些事件取决于哪些操作可能会更改表的内容此外,请记住,用户可能会缩放网页的文本。这可能也会弄乱列的宽度,我想…你可以用css来完成。
如果你需要的话,你应该加上th。 差不多
table tr td
{
width: 400px;
}
或者,使用jquery
$('table tr td').each(function() {$(this).css('width','400px');});
或修订(阿德里安)
当您知道表格的像素宽度时,设置
td
宽度的样式就更容易了
例如,如果width=300px
,则每个td
可以设置为100px
但是,如果您的表必须是width=100%
,则可以将每个td
上的宽度设置为33%
如果
表上有填充
、边距
、或边框
,这些都会影响td
的宽度 以百分比设置宽度:
td, th { width: 33%; }
只是一个想法,因为他在侧面(而不是顶部)使用ths,这不会只对齐他在顶部使用TH:s的第一列。请查看第一个TR的内容。否则,您将是正确的,是的。我不知道表的名称可能是什么。我的缺点是,我没有注意到第一个TR仅为ths。我在顶部使用TH——用于列标题,在每个TR的开头使用TH作为行标题。您不需要调用。each()--$('table TR td').css('width','400px');我也会做同样的事。啊,有一件事击中了我。您是否在询问如何根据内容使列的宽度不同,但将所有列的宽度设置为与最宽列的宽度相同?因为这将是一个完全不同于我们迄今为止所回答的问题。。。而且,这将是相当困难的一点。。。
td, th { width: 33%; }