Answers:
<table style="width: 100%">
<colgroup>
<col span="1" style="width: 15%;">
<col span="1" style="width: 70%;">
<col span="1" style="width: 15%;">
</colgroup>
<!-- Put <thead>, <tbody>, and <tr>'s here! -->
<tbody>
<tr>
<td style="background-color: #777">15%</td>
<td style="background-color: #aaa">70%</td>
<td style="background-color: #777">15%</td>
</tr>
</tbody>
</table>
width attribute
;它使用的是CSS *style* width
,它替换了<col> width属性。(尽管有很多人对此评论投反对票!)
span="1"
是多余的,因为默认值为1。
HTML:
<table>
<thead>
<tr>
<th class="from">From</th>
<th class="subject">Subject</th>
<th class="date">Date</th>
</tr>
</thead>
<tbody>
<tr>
<td>[from]</td>
<td>[subject]</td>
<td>[date]</td>
</tr>
</tbody>
</table>
CSS:
table {
width: 100%;
border: 1px solid #000;
}
th.from, th.date {
width: 15%
}
th.subject {
width: 70%; /* Not necessary, since only 70% width remains */
}
最佳实践是将HTML和CSS分开,以减少重复代码,并减少关注点(HTML用于结构和语义,而CSS用于表示)。
请注意,要使其在旧版本的Internet Explorer中起作用,您可能必须为表指定特定的宽度(例如900px)。如果包装器没有确切的尺寸,则该浏览器在渲染具有百分比尺寸的元素时会遇到一些问题。
使用下面的CSS,第一个声明将确保您的表格保持提供的宽度(您需要在HTML中添加类):
table{
table-layout:fixed;
}
th.from, th.date {
width: 15%;
}
th.subject{
width: 70%;
}
table{table-layout:fixed};.from,.date{width:15%}
就足够了。除非这些类也用于其他元素,否则写入th.from
是多余的,可以缩短为just .from
。
仅使用一个类的另一种方法,同时将样式保留在CSS文件中,甚至可以在IE7中使用:
<table class="mytable">
<tr>
<th>From</th>
<th>Subject</th>
<th>Date</th>
</tr>
</table>
<style>
.mytable td, .mytable th { width:15%; }
.mytable td + td, .mytable th + th { width:70%; }
.mytable td + td + td, .mytable th + th + th { width:15%; }
</style>
最近,您还可以使用nth-child()
CSS3(IE9 +)中的选择器,只需在其中放置nr。而不是将它们与相邻的选择器一起放在括号中。像这样:
<style>
.mytable tr > *:nth-child(1) { width:15%; }
.mytable tr > *:nth-child(2) { width:70%; }
.mytable tr > *:nth-child(3) { width:15%; }
</style>
:nth-child
解决方案在性能方面是可怕的。在本示例中,只有三个元素(th
或col
)可以使用,因此没有充分的理由使用它(尤其是与通用选择器一起使用)。此外,您只需要th
在第一行中将宽度设置为。第.mytable td
一个示例中的是多余的。
tr
是否属于.mytable
。如果你真的想用“第n”,那么这样的事情可能会好很多:.mytable th:nth-of-type(1) {width: 15%}; .mytable th:nth-of-type(2) {width: 70%};
。在这种情况下,也无需指定第三列的宽度。
.mytable th+th{width: 70%}.mytable th+th+th{width:15%}
。“第n个”选择器本身可能非常有用,但是在这种特殊情况下(一个只有3列的小表)并不是真正需要的。使用时,table-layout: fixed
您甚至可以执行以下操作:table{table-layout:fixed}th:first-child+th{width:70%}
。
这是我的两个建议。
使用类。无需指定其他两列的宽度,因为浏览器会自动将它们分别设置为15%。
table { table-layout: fixed; }
.subject { width: 70%; }
<table>
<tr>
<th>From</th>
<th class="subject">Subject</th>
<th>Date</th>
</tr>
</table>
不使用类。三种不同的方法,但结果是相同的。
一个)
table { table-layout: fixed; }
th+th { width: 70%; }
th+th+th { width: 15%; }
<table>
<tr>
<th>From</th>
<th>Subject</th>
<th>Date</th>
</tr>
</table>
b)
table { table-layout: fixed; }
th:nth-of-type(2) { width: 70%; }
<table>
<tr>
<th>From</th>
<th>Subject</th>
<th>Date</th>
</tr>
</table>
c)这是我的最爱。与b)相同,但具有更好的浏览器支持。
table { table-layout: fixed; }
th:first-child+th { width: 70%; }
<table>
<tr>
<th>From</th>
<th>Subject</th>
<th>Date</th>
</tr>
</table>
根据您的身体(或包裹表的div)的“设置”,您应该可以执行以下操作:
body {
width: 98%;
}
table {
width: 100%;
}
th {
border: 1px solid black;
}
th.From, th.Date {
width: 15%;
}
th.Date {
width: 70%;
}
<table>
<thead>
<tr>
<th class="From">From</th>
<th class="Subject">Subject</th>
<th class="Date">Date</th>
</tr>
</thead>
<tbody>
<tr>
<td>Me</td>
<td>Your question</td>
<td>5/30/2009 2:41:40 AM UTC</td>
</tr>
</tbody>
</table>
<table>
<col width="130">
<col width="80">
<tr>
<th>Month</th>
<th>Savings</th>
</tr>
<tr>
<td>January</td>
<td>$100</td>
</tr>
<tr>
<td>February</td>
<td>$80</td>
</tr>
</table>
试试这个吧。
<table style="width: 100%">
<tr>
<th style="width: 20%">
column 1
</th>
<th style="width: 40%">
column 2
</th>
<th style="width: 40%">
column 3
</th>
</tr>
<tr>
<td style="width: 20%">
value 1
</td>
<td style="width: 40%">
value 2
</td>
<td style="width: 40%">
value 3
</td>
</tr>
</table>
不要使用border属性,请使用CSS满足所有样式需求。
<table style="border:1px; width:100%;">
<tr>
<th style="width:15%;">From</th>
<th style="width:70%;">Subject</th>
<th style="width:15%;">Date</th>
</tr>
... rest of the table code...
</table>
但是,像这样嵌入CSS的做法不佳-应该改用CSS类,然后将CSS规则放在外部CSS文件中。
这是在CSS中执行此操作的另一种最小方法,即使在不支持此类:nth-child
选择器的较旧浏览器中也可以使用CSS :http : //jsfiddle.net/3wZWt/。
HTML:
<table>
<tr>
<th>From</th>
<th>Subject</th>
<th>Date</th>
</tr>
<tr>
<td>Dmitriy</td>
<td>Learning CSS</td>
<td>7/5/2014</td>
</tr>
</table>
CSS:
table {
border-collapse: collapse;
width: 100%;
}
tr > * {
border: 1px solid #000;
}
tr > th + th {
width: 70%;
}
tr > th + th + th {
width: 15%;
}
在表格标签后添加colgroup。在此处定义宽度和列数。并添加tbody标签。将您的tr放入tbody中。
<table>
<colgroup>
<col span="1" style="width: 30%;">
<col span="1" style="width: 70%;">
</colgroup>
<tbody>
<tr>
<td>First column</td>
<td>Second column</td>
</tr>
</tbody>
</table>
style="column-width:300px;white-space: normal;"