Трехколоночной варіант • Мідна поляна

Роблячи черговий шаблон для Maxsite CMS, зіткнувся з цікавою ситуацією.

Оригінал-макет складався з 3 блоків, включаючи середній, обведений в рамку.

Все б нічого, але іноді обов'язково будуть виникати моменти, коли висота центральної частини через невеликої кількості контенту менше висоти сайдбарі. Така поведінка мені не подобалося, геометрія макета порушується:

Був потрібен спосіб, що відповідає принципу «висота центрального стовпчика повинна бути такою ж, як і у самого високого сайдбара». Побродивши по інтернету, переконався, що правило «все вже придумано до нас», стосовно до верстки теж працює. Сергій Чікуенок опублікував чудову статтю про колонки однакової висоти. У замітці «розбір польотів» вівся на прикладі двоколонковому макета, однак, за словами автора, нічого не заважає на основі представленої техніки зробити і три колонки.

Але перш ніж привести код і розібратися в деталях, невеликий відступ про механізм, що забезпечує потрібний результат.

Уявіть, є блок, якому визначено властивість float (відмінне від none), а всередині нього, наприклад, ще два плаваючих блокових елемента. Яка буде висота зовнішнього блоку? Все просто - він повністю вмістить в себе нашу парочку і його вертикальний розмір буде в точності дорівнює висоті одного з дочірніх елементів. Зрозуміло, ширина блоків не повинна бути забута.

У разі, коли властивість float контейнера не задано, такого ж ефекту можна домогтися, якщо вказати йому {overflow: hidden;} або відразу після внутрішніх блоків додати «чистильника» на кшталт <div style = "clear: both;"> </ div> .

Тепер варіація на задану тему.

HTML:

<Div class = "wrapper"> <div class = "wrap-in"> <div class = "page"> Lorem ipsum </ div> <div class = "sidebar-left"> Lorem ipsum </ div> <div class = "sidebar-right"> Lorem ipsum </ div> <div class = "clear"> </ div> </ div> </ div>

і CSS:

.wrapper {width: 90%; margin: 0 auto;} .wrap-in {width: 60%; margin: 0 auto; border: 1px solid black; background: # c0c0c0;} .page {float: left; width: 100%; margin-right: -100%;} .sidebar-left {position: relative; left: -34%; float: left; width: 33%; background: # 4682b4;} .sidebar-right {position: relative; left: 34%; float: right; width: 33%; background: # 82b346;} .clear {clear: both;}

Погляньте на готову конструкцію .

Рамковий контейнер .wrap-in завжди буде приймати висоту одного зі своїх нащадків, оскільки всі вони зроблені «плаваючими». Щоб бічні колонки не плуталися під ногами вони виведені за межі .wrap-in за допомогою відносного позиціонування. Негативне праве поле у ​​центральній сторінки .page дозволяє сайдбарі не помітити її ширини і підтягнутися максимально вгору. Додаткова обгортка .wrapper просто присутній, позначаючи межі в цілому. Її втрата суті не змінює; але не зовнішнього вигляду.

Проблем з посиланнями-якорями немає, контент в HTML-файлі йде першим, підтримка фіксованого або процентної ширини. Браузери: IE 6 +, Fx 3+, Safari 3+ (Win), Opera 9.6+, Google Chrome 2+, хоча щодо шостого навіть тут не можна бути впевненим. Осел, негідник, може підкласти свиню, коли її зовсім не чекаєш.

Завдання, озвучена на початку поста вирішена, але їжі для роздумів додалося. А чи не замахнутися вам на 3-стовпчик макет з «чесними» колонками рівної висоти?

Завантажити (css в зовнішньому файлі): 3-col-centr-border.zip 162

Яка буде висота зовнішнього блоку?
А чи не замахнутися вам на 3-стовпчик макет з «чесними» колонками рівної висоти?

Уважаемые партнеры, если Вас заинтересовала наша продукция, мы готовы с Вами сотрудничать. Вам необходимо заполнить эту форму и отправить нам. Наши менеджеры в оперативном режиме обработают Вашу заявку, свяжутся с Вами и ответят на все интересующее Вас вопросы.

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: