#html #layout #width #css-tables
#HTML #Макет #ширина #css-таблицы
Вопрос:
Я познакомился с HTML около 10 лет назад, но почти не пользовался им до тех пор, пока около месяца назад. Оказывается, теперь я должен все делать по-другому (или делал все неправильно, не зная об этом раньше), и я пытаюсь придерживаться стандартов, но некоторые вещи меня сильно беспокоят.
Я слышал, что многие люди критикуют использование таблиц для верстки, например. Я действительно не знаю, почему (действительно ли таблицы такие плохие?), Но все же я пытался использовать divs вместо этого и, похоже, просто не могу заставить их работать должным образом. Я выделил свои проблемы в довольно наглядную, которая включает в себя некоторые вещи, которые я не смог сделать с divs (и некоторые, которые я даже не мог сделать с таблицами на самом деле).
Вот в чем проблема:
Я много чего перепробовал, и, к сожалению, я даже не могу обобщить их здесь, потому что я не помню, но вот код с моими попытками заставить его работать:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<title>Tests</title>
<style type="text/css">
body {height:100%;}
#container
{
overflow: hidden;
width:680px;
padding: 0;
margin-left: auto;
margin-right: auto;
margin-top: 40px;
border: 1px solid red;
}
#column_left
{
float: left;
width: 25%;
height: 100%;
margin: 0;
text-align: right;
border: 1px solid black;
}
#column_middle
{
float: left;
width: 49.2%;/*59.601562%*/
height: 100%;
margin: 0;
text-align: center;
border: 1px solid black;
}
#column_right
{
float: left;
width: 25%;
height: 100%;
margin: 0;
border: 1px solid black;
}
.pad
{
margin: 10px;
padding: 2px;
border: 1px solid black;
}
</style>
</head>
<body style="margin:0;">
<div id="container">
<div id="column_left">
<div class="pad">
Left Column Top<br/>
<br/>
Div only as long as content.<br/>
</div>
<div class="pad">
Left Column Bottom<br/><br/>
I want this DIV to stretch all the way down to the bottom of the container regardless of the lenght of the content.
</div>
</div>
<div id="column_middle">
<div class="pad">
<p>Long Middle Content</p>
<p>Long Middle Content</p>
<p>Long Middle Content</p>
<p>Long Middle Content</p>
<p>Long Middle Content</p>
<p>Long Middle Content</p>
<p>Long Middle Content</p>
<p>Long Middle Content</p>
<p>Long Middle Content</p>
</div>
</div>
<div id="column_right">
<div class="pad">
Right content<br/><br/>
I want this DIV to stretch all the way down to the bottom of the container regardless of the lenght of the content.
</div>
</div>
</div>
</body>
</html>
Помимо основного вопроса, если вы обратите внимание на ширину среднего столбца, она не равна 50. Конечно, сначала я пробовал 50%, чтобы получить 100%, но по какой-то сумасшедшей причине все пошло наперекосяк:
Кто-нибудь знает почему?
Еще одна вещь, которую я не могу сделать с таблицами и даже не знаю, возможно ли это вообще: я хотел, чтобы весь макет был симметричным. То есть я хотел бы, чтобы более длинный боковой контент определял ширину своего div, а также другого div, в то время как средний div растягивается, чтобы вместить 100% страницы. Кто-нибудь знает, возможно ли это? Не уверен, действительно ли я буду использовать это в своем окончательном макете, но это меня озадачивает.
Извините, если вопрос глупый и, как оказалось, легко решаемый. Как я уже сказал, я новичок в правильном html / css. Приветствуется любая помощь.
Ответ №1:
Хорошо, я разобрался с частью этого. Ваши границы были в дополнение к указанной ширине в некоторых браузерах. Снизив ваш средний div до 49%, вы исправили, что правый div был помещен под ним в IE8 / IE7 / FF4. Вот это в действии: JsFiddle
Ответ №2:
Увеличил ширину контейнера с 680 до 750, он работает….