Задать вопрос

Как позиционируют блоки сегодня?

Изучил основы HTML&CSS, взялся за один макет, сверстал вкривь-вкось, вернулся к основам. Читаю и вижу:
  1. float
  2. inline-block
  3. position: relative => absolute (+ fixed)
  4. flexbox
  5. CSS Grid

Я действительно разрываюсь между всем этим. Ладно с гридами, полгода-год и можно использовать. А что актуально сейчас? Может, что-то упустил? Понимаю, что для лучшего понимания надо изучить всё. Мой вопрос о том, что штудировать усердней и использовать, чтобы верстать сайты. Скажем, вот такие.
Также: если есть объемлющие статьи/документации о позиционировании, разметке, сетках (хоть на английском), дайте, пожалуйста, ссылки. Потому что берясь за новый макет, рисую на листе бумаге как объединить элементы в блоки, а когда сажусь за редактор кода, впадаю в ступор. Не знаю, с чего начать. Один макет сделал, начав его с примера на другом сайте, просто отталкиваясь от float: left одному сайдбару, float: right - другому. А дальше попиксельно margin-top, margin-right, text-align: center, line-height.
P.S. Большую часть статей в рунете про позиционирование читал. Они все либо небольшого объема, либо похожи друг на друга. Про флексбоксы гораздо больше информации, чем про остальные способы. Есть ли возможность адекватно разместить блоки по странице с их помощью? Не в Metro-стиле квадратиками по странице или просто колонками-рядами, а буквально попиксельно, как в том макете, о котором тут уже писал дважды.
  • Вопрос задан
  • 710 просмотров
Подписаться 4 Оценить Комментировать
Решения вопроса 1
Не пытайтесь найти универсальный способ, его нет.
Использовать нужно то, что актуально для конкретного элемента и конкретных требований к кроссбраузерности.

Элементарная сетка из блоков:
IE10+ => flexbox
IE9- => float + clearfix
IE9- и разная высота блоков в строке (картинка + 1-2 стоки текста под ней) => inline-block
в какой-то ситуации тут даже display: table будет иметь право на жизнь

"Прилипающее" при прокрутке меню:
position: fixed
position: absolute + js
position: sticky + js fallback

Кнопка с иконкой и текстом:
inline-block + vertical-align: middle для обоих элементов
position: absolute для иконки и padding для кнопки
display: flex для кнопки

Ну и т.д.

Учитесь решать конкретные задачи и искать для конкретных задач лучший способ.

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

Я требую от дизайнеров использовать сетку, за исключением каких-то хитрых промо. И в общем-то проблемы отсутствия сетки в макете не встречал уже давно.

Считаю, что БЭМ - как идея организации стилей, наименования и решения проблемы отсутствия неймспэйсов в css - лучшее, что есть на сегодняшний день. Да, css-модули это интересно, но их просто открыв в блокноте styles.css не реализуешь.

Получается следующая идея.

Есть структурные блоки. Например, в классическом варианте это будет шапка, контент и подвал, сайдбар и основной контент, любая другая внутренняя структура, собранная из колонок сетки.

Есть независимые блоки, которые помещаются в структурные и в идеале должны в независимости от того, куда их воткнули выглядеть и работать как нужно.

Это позволяет быстро разметить страницу и реализовать адаптив, а так же не изобретать классы вроде header-left, footer-right в каждом блоке.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@kulaeff
Front-end developer
Добавлю, что float - зло. А еще есть display: table и display: table-cell.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы