Здравствуйте. Мне нужна 3-х колоночная резиновая верстка: Левый и правый сайдбар фиксированной ширины, контент - резиновый. Внизу футер.
Обязательно, нужно чтобы сначала контент загружался, потом сайдбары, т.е. если брать нумерацию Left sidebar - 1, Content - 2, Right sidebar - 3, то желаемый порядок блоков 2-1-3 (ниже приведен HTML) или 2-3-1, в крайнем случае 1-2-3 (обычно используется 1-3-2, мне такой вариант не подходит, так как нужно чтобы правый сайдбар на мобильной версии шёл после контента).
<main>
<header>Header</header>
<section class="middle clr">
<section id="block-2" class="content">Content</section>
<aside id="block-1" class="left">Left sidebar</aside>
<aside id="block-3" class="right">Right sidebar</aside>
</section>
<footer>Footer</footer>
</main>
Желательна поддержка старых браузеров.
Вариант с абсолютным позиционированием рассматривал, но там проблема с футером - нужно постоянно находить высоту наибольшего блока и устанавливать высоту контейнера... но если js отключен (понятно что таких очень редко), то всё на куче...., иногда проблемы с вычислением высоты блоков, особенно если на странице js анимированные/подгружаемые элементы...
Так?
* {
box-sizing: border-box;
}
body {
margin: 0;
padding: 0;
}
.clr:after {
content: '';
display: table;
clear: both;
}
main {
max-width: 800px;
width: 100%;
margin: 0 auto;
}
header,
footer {
background: #eee;
}
aside {
position: relative;
/* Чтоб z-index сработал */
width: 200px;
background: #ccc;
z-index: 2;
/* Чтоб было выделение текста, так как aside будет прятаться под .content, размещенный перед ним */
}
.middle {
white-space: nowrap;
/* Не дает колонкам уходить друг под друга. Однако, работая с меди запросами, нужно будет убрать данный стиль для более низких разрешений, где нужно будет сайдбары переместить вниз. */
}
.middle>aside,
.middle>section {
white-space: normal;
/* Нормализует перенос строк текста. Без него, весь текст пойдет одной сплошной строкой */
}
.content {
padding: 0 230px;
display: inline-block;
/* Задается, чтоб блок расположился между 2 float-ами */
background: #00CC334D;
}
.left {
float: left;
margin-right: -200px;
}
.right {
float: right;
margin-left: -200px;
}
@media screen and (max-width:600px) {
.middle {
white-space: normal;
}
.content {
padding: 0;
margin: 0;
}
aside {
width: 50%;
margin: 0 !important;
}
}
@media screen and (max-width:420px) {
aside {
width: 100%;
float: none !important;
}
}
<main>
<header>Header</header>
<section class="middle clr">
<section class="content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</section>
<aside class="left">Left sidebar</aside>
<aside class="right">Right sidebar</aside>
</section>
<footer>Footer</footer>
</main>
По цифрам не очень то и понятно, но, вроде правильно. Верстка через float будет работать во всех браузерах. Можно и flexbox использовать, но, это на любителя.
Виртуальный выделенный сервер (VDS) становится отличным выбором
написал сайт, хочу сделать чтобы он загружался как-нибудь красивочто-то типо загрузки с 0 до 100 процентов и потом медленное отображение сайта...
В настоящее время я использую градиент SVG, чтобы применить эффект fade-out для патчейЭто позволяет начать путь с непрозрачностью 100% в точке x0 и постепенно...
Проблема заключается в следующем, есть HTML, к примеру: