#css
#css
Вопрос:
Я просмотрел дюжину вопросов и ответов на эту проблему, но, похоже, нет ни одного лучшего ответа для моей ситуации.
У меня есть страница (http://awesomealbums.info/?1062/chris-cornell ) с тремя вертикальными колоннами. Я хочу, чтобы столбцы имели одинаковую высоту, независимо от того, есть ли в них достаточное содержимое или нет.
Три столбца:
1) Столбец навигации слева 2) Столбец содержимого посередине 3) Столбец объявлений справа
Каковы параметры CSS / div, чтобы это произошло?
Комментарии:
1. Я не вижу трех столбцов: P
2. 1) Столбец навигации слева 2) Столбец содержимого посередине 3) Столбец объявлений справа
3. alistapart.com/articles/fauxcolumns
Ответ №1:
Недавно я нашел ИДЕАЛЬНОЕ решение. Однако для этого требуется использование JavaScript / jQuery. В принципе, как только страница загружена, получите естественную высоту всех разделов. Выберите наибольшую естественную высоту каждого дива. Установите все divs на эту высоту.
<style>
body {
font-size: .9em;
}
#ProductWrapper {
width: 620px;
float: left;
}
.ProductDiv {
width: 200px;
float: left;
background: rgb(240,240,240);
margin: 1px;
overflow: auto;
}
<div id="ProductWrapper">
<div class="ProductDiv" data-nat-height=''>asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf</div>
<div class="ProductDiv" data-nat-height=''>asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf </div>
<div class="ProductDiv" data-nat-height=''>asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf </div>
</div>
<script type="text/javascript">
$(document).ready(function() {
// GET MAX NAT HEIGHT
var MaxHeight = 200;
$(".ProductDiv").each(function() {
var Height = $(this).height();
if (Height > MaxHeight) {
MaxHeight = Height;
}
$(this).attr("data-nat-height", Height);
});
// SET TO MAX HEIGHT
$(".ProductDiv").css("height", MaxHeight "px");
});
</script>
Комментарии:
1. Инициализация переменной maxHeight на 0 была бы еще лучше! По сути, это начальное значение будет минимальной высотой, которую вы хотите для своих столбцов.
2. @Fredy31, я пришел к тому же выводу и отредактировал свой код в реальной жизни. Спасибо!
Ответ №2:
Это старая школа, но http://www.alistapart.com/articles/fauxcolumns /
Ответ №3:
Используйте отрицательный margin’hack’.
Присвойте каждому столбцу значение нижнего поля -9999, нижнего отступа — 9999 и высоту 100%. Я не уверен, правильно ли это или нет. Но идея заключается в том, что по мере расширения одного контейнера все остальные также будут расширяться из-за 100% высоты, отступы и поля работают таким образом, что поле скрыто за пределами 100% высоты — Google для «столбцов с отрицательным полем».
Альтернативно используйте css -обсудите, чтобы увидеть все признанные в отрасли способы создания макетов из 3 столбцов, есть плавные примеры — http://css-discuss.incutio.com/wiki/Three_Column_Layouts
Комментарии:
1. Кажется, это хорошее решение сложной проблемы. Многие решения кажутся мне странными, например, таблицы, таблицы CSS, искусственные столбцы… Спасибо за лаконичность изложения.
Ответ №4:
Один из способов (поскольку ваши столбцы в любом случае имеют фиксированную ширину) — использовать позиционирование (абсолютное, если быть точным). С помощью этого метода вы можете изменить свои правила css на следующие:
#PagePad {
background: white;
position: relative;
}
#Column_1_3 {
border-left: 1px #7D7D7D SOLID;
width: 175px;
text-align: right;
padding: 10px;
background: white;
}
#Column_2_3 {
width: 540px;
border-left: 1px #7D7D7D SOLID;
border-right: 1px #7D7D7D SOLID;
float: left;
padding: 20px;
background: white;
margin: 0px;
position: absolute;
margin-left: 196px;
bottom: 0px;
top: 0px;
}
#Column_3_3 {
width: 180px;
border-right: 1px #7D7D7D SOLID;
background: white;
float: left;
text-align: center;
margin-left: 778px;
position: absolute;
top: 0px;
bottom: 0px;
}
хотя я не уверен, насколько это кроссбраузерно.