Методи горизонтального та вертикального розміщення блоків на сторінці
Існує кілька способів розташування структурних елементів в ряд в горизонтальній площині. Найбільш корисними, з точки зору практичного застосування, є:
- метод «Float»
- метод «Inline-block»
- метод «Table-cell"
Кожен з них має свої переваги, області застосування і недоліки.
Всі структурні елементи HTML можна умовно розділити на:
- Інлайнові (вбудовані) - типу img, span і їм подібні. У них не можна змінювати фон і задавати їм довільні лінійні розміри.
- Блокові - займають всю ширину батьківського блоку, завжди починаються з нового рядка - p, h, div.
Метод «Float»
Як вже відомо, блоковий елемент розміщується з нового рядка незалежно від заданої йому ширини (width). Для розміщення блоків горизонтально можна застосувати властивість float.
Властивість float використовується для позиціонування та компонування на веб-сторінках.
Властивість float може мати одне з наступних значень:
- left - Елемент плаває зліва від контейнера
- right - Елемент плаває праворуч від контейнера
- none - Елемент не плаває (буде відображатися тільки там, де це відбувається в тексті). Це значення за замовчуванням
- inherit - Елемент успадковує значення float батьківського елемента
При створенні макета веб-сторінок потрібно завжди буде вибудовувати блокові області поруч одна з одною (наприклад, область лівої колонки, область з контентом і правої колонки). Звичайні блоки в CSS розташовуються один під одним.
Щоб розташувати блокт горизонтально, потрібно застосувати властивість Float: left (right)
Для того, щоб перервати обтікання елементів з якогось конкретного місця, потрібно застосувати властивість :
<div style="clear: both;"></div>
Властивість Clear
Властивість clear вказує, які елементи можуть плавати поруч з очищеним елементом і з якого боку.
Властивість clear може мати одне з наступних значень:
- none - Дозволяє використовувати плаваючі елементи з обох сторін. Це значення за замовчуванням
- left - З лівого боку не допускаються плаваючі елементи
- right- З правого сторони не дозволені плаваючі елементи
- both - Плаваючі елементи не дозволені ні зліва, ні справа
- inherit - елемент успадковує значення Clear батьківського елемента
Якщо елемент плаває вліво, то очищати теж треба вліво.
Плаваючий елемент буде продовжувати плавати, але очищений елемент буде відображатися під ним на веб-сторінці.
Якщо наближчому блоку до обтічного елемента не вистачає місця по ширині, то він переноситься на наступний рядок. Це добре помітно на блоках, загальна ширина яких перевищує 100%:
Приклад розташування блоків горизонтально методом float:
Приклад реалізації горизонтального меню методом float:
Приклад реалізації горизонтального меню методом float:
Приклад реалізації горизонтального меню методом float:
Метод «Inline-block»
display: inline-block генерує блочно-рядковий елемент, який по суті є рядковим, але зберігає блокові властивості - дозволяє змінювати лінійні розміри, задавати поля, відступи і т.д.
Блочно-рядковий елемент має такі властивості:
- висота і ширина блоку визначається автоматично по вмісту і значенням відступів (padding)
- висота і ширина блоку може бути задана фіксована
- Відсутній ефект схлопування кордонів
Одним з поширених застосувань display: inline-block є створення горизонтальних навігаційних посилань (меню сайту):
Є декілька способів прибрати відступи між елементами:
- подібрати відємні значення margin:
margin-right: -4px;
- вказати font-size: 0 для батьківського блока і font-size ≠0 для інлайнового;
ul { font-size: 0px;} li {font-size: 32px;}
- … Написати код в один рядок
<li>Відступи</li><li>між</li><li>блоками</li>
Приклад реалізації горизонтального меню методом inline-block
Приклад застосування методу inline-block до блоків div:
Приклад застосування методу inline-block до блоків div:
Метод «Table»
Табличний підхід довгий час був стандартом верстки, що в першу чергу пояснювалося простотою і інтуїтивною зрозумілістю розмітки. Швидше за все, саме це і послужило причиною появи табличного форматування в CSS.
Властивості display: table (table-cell, inline-table), дозволяють виконувати табличне форматування елементів без застосування HTML таблиць.
Для горизонтального розміщення блоків потрібен батьківський елемент, який має властивість display: table, і дочірні елементи (комірки), що мають властивість display: table-cell:
- На відміну від методів «Inline-block» і «float», при зменшенні ширини вікна веб-браузера, осередки не переміщаються вниз.
- У цьому методі немає можливості задавати властивість margin для осередків псевдотаблиці.
Найчастіше цей метод застосовують для притискання підвалу сторінки до нижньої межі вікна браузера.
Макети веб-сторінок
Приклад реалізації двохколонкового макету веб-сторінки методом Float:
Завдання 1
Створити галерею іконок смайлів за зразком
Реалізувати галерею за допомогою маркованого списку, який розташований горизонтально, застосувати метод float:let і inline-block
Теж саме завдання вирішити якщо у галереї картинки мають різні розміри: