#html #css #html-table
#HTML #css #html-таблица
Вопрос:
Из этого может быть не очевидно, что я пытаюсь создать что-то вроде приведенной ниже таблицы:
| 40% | 60% |
______________________________________
|----header----|---------content------|
|----header----|---------content------|
______________________________________
Идея заключается в том, чтобы заголовок занимал 40% от ширины строки, а содержимое — 60% от ширины строки в каждой строке.
Это было мое лучшее приближение в CSS, но не работает:
.top {padding:5px;background:blue; width:200px;}
.layer {padding:5px;background:green;}
.header {padding:5px;background:yellow; width:40%;display:inline;}
.content {padding:5px;background:red; width:60%;display:inline;}
используя этот HTML:
<div class="top">
<p class="layer">
<div class="header">header</div>
<div class="content">content</div>
</p>
<p class="layer">
<div class="header">header</div>
<div class="content">content</div>
</p>
</div>
Ответ №1:
Так что да. Таблицы — это зло. Но. здесь они отлично работают. Почему бы вам просто не сделать…
<table class="top">
<tr class="layer">
<th>
header
</th>
<td class="content">
content
</td>
</tr>
</table>
И измените свои стили на:
.top {
padding:5px;
background:blue;
width:200px;
}
.layer {
padding:5px;
background:green;
}
th {
padding:5px;
background:yellow;
width:40%;
display:inline;
}
.content {
padding:5px;
background:red;
width:60%;
display:inline;
}
Комментарии:
1. 1. Если у вас есть таблица с информацией, значит, у вас есть таблица. Таблицы отлично подходят для отображения табличных данных. Почему это такая большая проблема для стольких людей?
2. однако есть одно предложение: вы могли бы вообще исключить классы, используя
<th scope="row">
вместо<td>
для элементов заголовка. Тогда каждый раздел имеет свой собственный тип тега и может быть настроен на основе этого. Преимущество этого также в том, что оно более семантически корректно.3. @Matthew Да, очень верно. Я изменю это.
Ответ №2:
HTML:
<div class="top">
<div class="layer left">
<div class="header">header</div>
<div class="content">content</div>
</div>
<div class="layer right">
<div class="header">header</div>
<div class="content">content</div>
</div>
<div class="clear"></div>
</div>
CSS:
div.clear
{
clear: both;
}
div.layer
{
float: left;
}
div.left
{
width: 40%;
}
div.right
{
width: 60%;
}
Ответ №3:
Вы можете изменить свой css на:
.top {
position:relative;
background:blue;
width:200px;
}
.layer {padding:5px;
background:green;
}
.header {
position:absolute;
left:0px;
display:table-cell;
background:yellow;
width:40%;
}
.content {
position:absolute;
right:0px;
display:table-cell;
background:red;
width:60%;
}
Обновленная скрипка:http://jsfiddle.net/yVScW/2 /
Ответ №4:
Как насчет чего-то подобного:
<div class="top">
<div class="layer">
<div class="header">header</div>
<div class="content">content</div>
<div class="clear"></div>
</div>
<div class="layer">
<div class="header">header</div>
<div class="content">content</div>
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>
.top {
background: blue;
width: 300px;
padding: 0;
}
.layer {
padding: 5px;
background: green;
}
.header {
padding: 1%;
margin: 0;
background: yellow;
width: 38%;
float: left;
}
.content {
padding: 1%;
margin: 0;
background: red;
width: 58%;
float: right;
}
.clear {
clear: both;
}
jsFiddle:http://jsfiddle.net/cdKJ3/1 /