固定表格单元宽度

可以使用 set ()函数将迭代转换为集合,然后使用标准集合更新操作符(| =)将新集合中的唯一值添加到现有集合中。

>>> a = { 1, 2, 3 }
>>> b = ( 3, 4, 5 )
>>> a |= set(b)
>>> a
set([1, 2, 3, 4, 5])

许多人仍然使用表格来布局控件、数据等——流行的 jqGrid 就是一个例子。然而,有一些魔法正在发生,我似乎无法理解(它的表大声呼喊,到底有多少魔法可能存在?)

怎么可能像 jqGrid 那样设置一个表的列宽并让它服从! ?如果我尝试复制这个,即使我设置每个 <td style='width: 20px'>,只要其中一个单元格的内容大于20px,单元格就会膨胀!

JqGrid 有! ?如果我尝试复制这个,即使我设置每个 <td style='width: 20px'>,只要其中一个单元格的内容大于20px,单元格就会膨胀!

有什么想法或见解吗?

690479 次浏览

有什么想法或见解吗?

;/> 香港中文大学

您可以尝试使用 <col>标记管理所有行的表样式,但是您需要在 <table>或者 tables css 类上设置 table-layout:fixed样式,并为单元格设置 overflow样式

< tr > < td > text < td > text

Http://www.w3schools.com/tags/tag_col.asp

<table class="fixed">
<col width="20px" />
<col width="30px" />
<col width="40px" />
<tr>
<td>text</td>
<td>text</td>
<td>text</td>
</tr>
</table>
< td > text

这是你的 CSS

table.fixed { table-layout:fixed; }
table.fixed td { overflow: hidden; }
table td
{
table-layout:fixed;
width:20px;
overflow:hidden;
word-wrap:break-word;
}
table {
table-layout:fixed; width:200px;
}
table tr {
height: 20px;
}

10x10

这是你的 CSS

table.fixed { table-layout:fixed; }
table.fixed td { overflow: hidden; }

现在在 HTML5/CSS3中,我们有了更好的解决方案,在我看来,这个纯粹的 CSS 解决方案是值得推荐的:

table.fixed {table-layout:fixed; width:90px;}/*Setting the table width is important!*/
table.fixed td {overflow:hidden;}/*Hide text outside the cell.*/
table.fixed td:nth-of-type(1) {width:20px;}/*Setting the width of column 1.*/
table.fixed td:nth-of-type(2) {width:30px;}/*Setting the width of column 2.*/
table.fixed td:nth-of-type(3) {width:40px;}/*Setting the width of column 3.*/
<table class="fixed">
<tr>
<td>Veryverylongtext</td>
<td>Actuallythistextismuchlongeeeeeer</td>
<td>We should use spaces tooooooooooooo</td>
</tr>
</table>

Erylongtext 实际上

你需要设置表的 width即使在 鬼魂的解决方案。否则它不工作。
我们应该使用空格

同步推荐的 CSS3的另一个新特性是: word-break:break-all;。这样也会把没有空格的单词分成多行。只要像这样修改代码:

table.fixed { table-layout:fixed; width:90px; word-break:break-all;}

你需要设置表的 width即使在 鬼魂的解决方案。否则它不工作。

最终结果

Rendered table

table
{
table-layout:fixed;
}
td,th
{
width:20px;
word-wrap:break-word;
}
同步推荐的 CSS3的另一个新特性是: word-break:break-all;。这样也会把没有空格的单词分成多行。只要像这样修改代码:

table.fixed { table-layout:fixed; width:90px; word-break:break-all;}

: 第一个孩子... : nth-child (1) or..。

您还可以使用 overflow: hide; ,如其他答案所示,但它会导致多余的文本消失。

只是一个快速更新,使用 python 3计时:

#!/usr/local/bin python3
from timeit import Timer


a = set(range(1, 100000))
b = list(range(50000, 150000))


def one_by_one(s, l):
for i in l:
s.add(i)


def cast_to_list_and_back(s, l):
s = set(list(s) + l)


def update_set(s,l):
s.update(l)

全屏宽度表:

  • 表的宽度必须是100%

  • 结果如下:

    one_by_one 10.184448844986036
    cast_to_list_and_back 7.969255169969983
    update_set 2.212590195937082
    
  • 如果需要 N 列,那么 THs 必须是 N + 1

Class = “ nippet-code-html lang-html pretyprint-overage”> < code > < table class = “ fix”>

3栏的示例:

table.fixed {
table-layout: fixed;
width: 100%;
}
table.fixed td {
overflow: hidden;
}
  <table class="fixed">
<col width=20 />
<col width=20 />
<col width=20 />
<tr>
<th>1</th>
<th>2</th>
<th>3</th>
<th>FREE</th>
</tr>
<tr>
<td>text111111111</td>
<td>text222222222</td>
<td>text3333333</td>
</tr>
</table>