#html #css #вёрстка #flexbox
Я новичок во фронтенде, изучаю вопрос создания сайта с нуля. Последнее время буквально мучает вопрос, что считают бывалые в этом деле насчет верстки сайта целиком на флексах (flex)? Вроде как и резина реализуется, и адаптив одновременно. Или же первые попытки лучше делать по старинке ДИВами и их размещать флоатами? Какая техника предпочтительнее? P.S. Разумеется, надо попробовать и то и то самому и решить, но хотелось бы некой конкретики по этому поводу.
Ответы
Ответ 1
Однозначно стоит изучать flexbox в первую очередь. Единственные доводы в сторону float: старые браузеры (IE9-). поддержка и понимание работы существующего кода (на данный момент существует действительно очень много кода, использующего float). Принципиальные различия Они принципиально отличаются. float присваивается элементами, а display: flex или display: inline-flex; присваивается контейнерам и оказывают влияние на расположение элементов контейнера. Когда блоку присвоен display: flex или display: inline-flex;, его элементы игнорируют свойства float, clear и vertical-align. Предостережение Собираюсь сравнивать flexbox и float на небольшом подмножестве возможностей flexbox на котором они сравнимы. Скажу сразу, что не рассмотрены или рассмотрены вскользь такие аспекты работы flexbox (которые невоплотимы через float, кроме некоторых случаев многострочной разметки): многострочная разметки (когда элементы могут разрастаться на несколько строк). Достигается через установку контейнеру flex-wrap: wrap; или flex-wrap: wrap-reverse;. Через float элементы разве что могут располагаться по левому краю (через float: left;) либо просто по правому краю (через float: right) с необходимостью инвертировать порядок расположения элементов. Отдельная большая тем для flexbox из-за его огромных возможностей. расположение элементов в стоблец (когда элементы располагаются не в строчку). Достигается через установку контейнеру flex-direction: column; или flex-direction: column-reverse;. Отдельная большая тема для flexbox из-за его огромных возможностей. возможности flex-элементов растягиваться и сужаться с помощью свойств flex-grow и flex-shrink. Советую детально изучить эту непростую тему. как flex-элементы работают с margin: auto; (margin занимает оставшееся пространство в соответствующем направлении). сочетание flexbox и абсолютного позиционирования. взаимодействие flexbox-элементов c отрицательными margin и z-index (можно регулировать кто-то на кого "залазит" без абсолютного позиционирования). Установим положительный z-index для первого элемента, что он "залазил" на второй (если уберём — то будет наоборот): .flex { display: flex; } .flex-item { /* Просто для демонстрации */ color: white; font-size: 2rem; padding: 20px; } .flex-item:nth-child(1) { background-color: cornflowerblue; /* Зададим чтобы первый "налазил" на второй */ z-index: 1; } .flex-item:nth-child(2) { background-color: lime; margin-left: -20px; }flexbox и таблицы. Можно tr установить display: flex; и получить адаптивность для строк таблицы. Например мы можем инвертировать расположение элементов в строках таблицы: tr { display: flex; flex-direction: row-reverse; } td { border: 1px solid gray; }OneTwo
1-1 | 1-2 |
2-1 | 2-2 |
One
Two
Three
Four
Five
One
Two
Three
Four
Five
One
Two
Three
Four
Five
One
Two
Three
Four
Five
Ответ 2
Единственный "недостаток" флексов - это их отсутствие в IE9 и ниже. Но так как Вы только начинаете изучать верстку, а их доля неуклонно снижается (на данный момент - менее 2,5% на IE8 и IE9 вместе взятые), то через некоторое время проблема отсутствия флексов в браузере перейдет из области проблем разработчика в область проблем пользователя. Перед версткой страниц div-ами была верстка таблицами, но Вы же не собираетесь изучать такой анахронизм. Медленно, но верно в такой анахронизм, в данный момент, превращается верстка на div-ах. Поэтому целесообразнее вкладывать большую часть усилий в изучение флекс-ов, с расчетом на будущее. Если же поддержка древних браузеров будет необходима, то для них существуют различные костыли. Но верстку на div-ах тоже не стоит полностью исключать, так как, будучи профессиональным разработчиком, Вы непременно столкнетесь с кучей готовых проектов, которые нужно будет то немного подправить, то слегка улучшить. Тут некоторый опыт по div-ам и пригодится.
Комментариев нет:
Отправить комментарий