С боковыми колонками фиксированной ширины это на самом деле очень просто. Вы захотите использовать числа с плавающей запятой и, возможно, вам придется применить трюк с фиктивными столбцами, в зависимости от вашего конкретные потребности в дизайне.
Вам понадобится что-то вроде:
<div class="left"></div>
<div class="right"></div>
<div class="middle">Content</div>
и:
div {
/* border-box, to make sure "width" is our intended width */
-moz-box-sizing: border-box; /* Firefox still uses prefix */
box-sizing: border-box;
}
.left {
float: left;
width: 100px;
background: #f00;
}
.right {
float: right;
width: 100px;
background: #00f;
}
.middle {
width: 100%;
padding: 0 100px;
background: #ccc;
}
Посмотрите на это в действии (это без эффекта искусственного столбца, но должно дать вам отправную точку). Если вы измените ширину раздела с выводом, вы увидите, что столбцы остаются на месте, а содержимое остается в пределах внешних столбцов.
Столбец содержимого должен быть последним, потому что он все еще находится в потоке документов, поэтому правый столбец окажется под содержимым.
В качестве альтернативы вы можете использовать position: absolute;
в боковых столбцах примерно так:
.wrapper {
position: relative; /* Constrains the columns within their parent. Not needed if parent is <body> */
}
.left {
position: absolute;
top: 0;
left: 0;
}
.right {
position: absolute;
top: 0;
right: 0;
}
.middle {
padding: 0 100px;
}
div {
-moz-box-sizing: border-box;
box-sizing: border-box;
}
Эти трюки будут работать в IE8+, Firefox, Chrome, Safari и Opera. У IE7 могут быть проблемы из-за использования блочной модели W3C ("content-box") и нераспознавания box-sizing
CSS, но есть несколько приемов, чтобы заставить его работать, если вам это нужно. С IE6 все должно быть в порядке, потому что он по умолчанию использует блочную модель на основе "границы". (Возможно, вам придется поиграть с z-index
, чтобы настроить IE. Если это так, установите .middle{ position: relative; z-index: 1}
и добавьте z-index: 2
в левый и правый столбцы.)
Трюк position: absolute
имеет преимущество перед плавающим в том, что ваши боковые панели могут появляться до или после блока контента, что делает его потенциально более семантическим вариантом.
Причина, по которой они работают, заключается в том, что а) ваши боковые столбцы фиксированы, поэтому мы просто устанавливаем отступы на ширину этих столбцов, и б) position: absolute
и float: [left/right]
убирают элементы из потока документа, что означает, что документ обеспокоен, они не там и не занимают места. Это позволяет другим элементам перемещаться туда, где раньше были эти элементы, накладывая их друг на друга.
person
Shauna
schedule
04.03.2013