답변:
<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
.
IE7에서도 작동하는 CSS 파일에 스타일을 유지하면서 하나의 클래스 만 사용하는 대체 방법 :
<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
. 정말로 "nth"를 사용하려면 다음과 같은 것이 훨씬 나을 것입니다 : .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>
비)
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
. 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>