Что делать — Отклеился шлейф от тачскрина
Пайка шлейфа тачскрина — инструкция.
Для современных внутренних интерфейсов соединения отдельных узлов обязательным атрибутом считается наличие внутреннего шлейфа. Функцией таких соединений считается подвижное сочленение электрической платы, отдельных моделей и других узловых схем. В случае, если отклеился шлейф от тачскрина, нужно сразу же приступить к ремонтным работам.
Среди наиболее распространенных типов подключения шлейфов можно назвать несколько.
-
Пайка – требует соблюдение всех этапов технологического процесса. Считается самым надежным способом, если использовать для этого высококачественное оборудование. В случае отклеивания шлейфа от тачскрина при пайке, отдельные компоненты могут выйти полностью из строя.
-
Применение различных механических сочленений – зажимы, вставки. Не требуется использовать дополнительное оборудование или иметь особые навыки. В то же время для такого способа характерна низкая надежность из-за того, что оторвался шлейф или он может не плотно прижаться, а также происходит окисление контактов.
-
Наклейка на проводящий ток клея или клейкой ленты.
Разновидности токопроводящего клея для шлейфа
Токопроводящий клей способствует обеспечению надежного и быстрого сцепления при минимальных габаритах. Существует несколько разновидностей современных токопроводящих клеев:
-
изотропный – используется в однородной среде, не существуют какие-либо ограничения на направления по распространению тока;
-
анизотропные – ток распределяется согласно определенному направлению.
За счет токопроводящего клея прохождение тока будет осуществляться строго перпендикулярно. Следует учитывать, что на использование любой клеящей смеси существуют определенные ограничения. Более того, понадобится также соблюдать температурные и влажностные режимы, следить за тем, чтобы пыль и другие мелкие частицы отсутствовали. Отдельным аспектом, на который также следует обратить внимание считается соблюдение минимально требуемого зазора между контактами.
Приклеивание шлейфа к плате
-
Очищение остатков предыдущего соединения, используя при этом изопропиловый спирт.
-
Применение анизотропной клеящей пленки – следует сделать акцент на правильном расстоянии между контактами. В случае небольшого зазора есть вариант получения короткого замыкания.
-
Снятие первого защитного слоя и приклеивание пленки на плату.
-
Отсоединить шлейф и очистить второй защитный слой.
-
Правильное сопоставление контактов шлейфа и контактов платы, приложение шлейфа и равномерное соединение с поверхностью платы. Для последнего действия понадобится приложить определенные усилия.
Проводя такие работы, следует следить за тем, чтобы в воздухе полностью отсутствовала пыль и мелкие частицы. В случае осуществления проклейки шлейфа в домашних условиях, оптимальным вариантом будет приклеить материал в ванной комнате.
Большинство пользователей ошибочно полагают, что выполнить такие работы в домашних условиях не является возможным. Если отошел шлейф от дисплея, то выполнить ремонтные работы самостоятельно возможно, если использовать для этого специальное оборудование. Более того, в обязательном порядке понадобится придерживаться определенного алгоритма действий.
Монтаж шлейфа при помощи токопроводящей клейкой ленты имеет полное сходство с процессом соединения шлейфа и платы. Различие может быть связано только с поддерживаемыми дисплейными модулями и минимально рекомендуемом зазоре между контактами. В частности, для некоторых токопроводящих пленок или клеев понадобится нагрев или приложить большие усилия. Перед тем, как покупать запчасти для смартфонов или приступать к ремонтным работам, следует деталь изучить спецификацию пленки или клея.
Как перепаять шлейф тачскрина при его поломке
Пайка шлейф сенсорного єкрана
Спаять шлейф тачскрина из нескольких проводов или дорожек необходимо тогда, когда возникают механические повреждения устройства или гаджета из-за каких-то определенных причин. Возможно внутрь прибора попала влага или были повреждены контакты при неаккуратном обращении.
В большинстве случаев, возникает усугубление ситуации, связанное с отсутствием возможности полноценной замены гибкой ленты. При таком раскладе можно обратиться к мастерам специализированных сервисов с просьбой о поиске подходящих запчастей. В таком случае, выполнить самостоятельную перепайку шлейфа тачскрина будет возможным, если есть соответствующие навыки и специализированное оборудование.
Особенности ремонтных работ по шлейфу
Восстанавливать нарушенные соединения необходимо в том случае, если для поврежденного шлейфа или отдельных контактным сборок не удалось найти полноценную замену. Пайка шлейфа тачскрина поможет исправить положение вещей при повреждении исключительно незначительной части проводников.
Для этого достаточно будет использовать только миниатюрный паяльник и запчасти для мобильных телефонов. Если специальные инструменты и опыт пайки отсутствует, оптимальным вариантом будет воспользоваться услугами ремонтной мастерской. При противоположном раскладе, шлейф может выйти полностью из строя.
Перед тем, как приступить к самостоятельной пайке шлейфа, следует учитывать определенные факторы. В частности, нужно обратить внимание на:
-
степень повреждения шлейфа;
-
сложность разборки гаджета;
-
срочность предстоящих работ.
К примеру, если мобильное устройство нормально функционирует при отсутствии какой-либо из кнопок, то перепайка шлейфа тачскрина скорее всего не потребуется. При таком раскладе, достаточно будет перепаять подводку к каким-либо контактам. Чтобы самостоятельно починить поврежденный шлейф, предварительно понадобится подготовка расходных материалов и инструментов:
-
пинцет;
-
флюсовый спиртовой раствор;
-
канифоль и легкоплавкий припой;
-
провод, для которого характерно наличие лакового покрытия;
-
-
паяльник;
-
дисплейные модули.
Перед выполнением пайки шлейфа у дисплея, понадобится фиксация подлежащего к восстановлению участка. С этой целью можно использовать двухстороннюю клейкую ленту. За счет надежного закрепления обеспечивается механическая жесткость и дополнительная прочность паяных соединений. Далее сенсорный экран или место контакта должно быть очищено от изоляционного слоя с помощью специализированных инструментов. В свою очередь, понадобится кисточка, чтобы нанести ранее подготовленный канифольный раствор тонким слоем.
После того, как контакт будет основательно прогрет, надо будет проверить припой на наличие излишков. В случае обнаружения понадобится их удаление. Дальнейшим этапом будет прикладывание кусочка проводника к одному из концов шлейфа.
Необходимость в наращивании шлейфа
При обнаружении обрыва между подвижными частями, понадобится выполнение процедуры наращивания. С этой целью можно будет использовать схожую по структуре вставку, технические характеристики которой имеют полное соответствие с восстанавливаемыми ленточками. На этом этапе особое внимание следует уделить полной совместимости между соединяемыми участками шлейфа. В конце понадобится только осуществить пайку каждой из соединяемых частей. При аккуратном выполнении ремонтных работ, работоспособность гаджета полностью восстановится.
Следует отметить, что актуальность современных моделей мобильных телефонов достаточно быстро теряется за счет выхода новых версий устройств. При этом комплектующие к таким девайсам представлены по доступной цене. Весомых денежных затрат требует установка компонентов. Следует учитывать, что выполнение ремонта шлейфа вполне возможно в домашних условиях, в случае наличия необходимых инструментов. Достаточно придерживаться определенной последовательности действий. Если при диагностике были обнаружены другие неисправности, то понадобится их одновременное устранение.
Восстановление подключения гибкого шлейфа ЖК-экрана
Сегодня расскажу про довольно интересный случай восстановления гибкого шлейфа экрана прибора. Шлейф имеет дорожки в виде токопроводящего напыления и очень тонкий. Рассмотрим всё на примере ремонта металлодетектораПрибор поступил с заявленной неисправностью – не работает ЖК-экран. При этом сам прибор функционирует нормально, звуковая и световая индикация работают. Устройство уже довольно возрастное (2007 год выпуска), но вполне функциональное и востребованное, так что ремонт целесообразен.
Перед разбором не забываем извлечь батарейку и все работы проводим при отсутствии питания, дабы случайным замыканием не повредить устройство окончательно.
Крепёжные шурупы прячутся под наклейками двух нижних ножек.
Снимаем переднюю крышку, а также пластиковый держатель дисплея.
Шлейф подключён к плате приклеиванием – не самый удобный в плане ремонта метод. Присмотревшись, можно заметить, что несколько первых дорожек слегка оторваны от платы и повреждены. Из-за этого на экране и отсутствует изображение – прижав оборванное место можно наблюдать на дисплее некоторые работающие сегменты.
Сложно сказать, что послужило причиной. Возможно, деградация клея от времени. Но я больше склоняюсь к механическому воздействию – либо неудачное падение, либо неаккуратное вмешательство извне.
Приклеить назад шлейф нереально, поэтому придумал другой способ – небольшой переходник для соединения.
Для начала очень аккуратно полностью отрываем шлейф от платы. После начинается самый долгий и тонкий процесс. Напылённые дорожки на шлейфе покрыты белым силиконом для защиты. Его-то и нужно бережно удалить, не повредив при этом дорожки. Делал это под микроскопом скальпелем, что заняло около 2 часов. Очищаем 1-2 мм по всей ширине шлейфа.
Фото под микроскопом. Выглядит не очень аккуратно, но не забываем, что всё очень мелкое. После этого ещё дополнительно покрыл очищенные места токопроводящим клеем. После высыхания проверяем отсутствие замыканий между дорожками. Если они есть, то аккуратно ликвидируем их, счищая клей скальпелем.
Далее нам необходимо найти кусок платы с контактными площадками, шаг которых соответствует шагу дорожек на шлейфе. Небольшой лайфхак: если нет специальной линейки для измерения шага контактов, можно взять кусочек какого-нибудь полупрозрачного материала (в моём случае это стикер-закладка) и, приклеив его на шлейф, наметить проходящие дорожки. А потом использовать данный шаблон для поиска необходимой платы. Шаг дорожек данного шлейфа идеально совпал с шагом контактов PCI Express.
Поэтому твёрдой рукой вытаскиваем дорогущую видеокарту из системника и… В общем, донорская видеокарта в очередной раз нам послужит. Выпиливаем из неё два кусочка, как на фото ниже. Не забываем оставить по краям место для крепежа. Детали полностью идентичные по размерам.
К контактам нам необходимо подпаять тонкие провода. Аккуратно залуживаем около 1 мм каждой дорожки. Чтобы это легко сделать, заклеиваем остальную часть дорожки каптоновым скотчем, а оставшееся место залуживаем.
И припаиваем к ним проводки. взял самый тонкий МГТФ-провод, длина каждого около 5 см. И так 24 раза.
Далее начинаем собирать бутерброд. Совмещаем очищенные места шлейфа с контактами на плате. Я дополнительно использовал кусок скотча для удержания шлейфа после совмещения.Накладываем сверху места контакта силиконовую прокладку (взял со старого дисплея). Была в наличии только такая, но можно было и потоньше.
Сверху вторая платка и затягивается винтами.
По картинкам понять проще, чем по описанию. Кстати, внимательный читатель по фото выше может заметить, что что-то не так. Припаянные провода явно отличаются от описанных выше. Дело в том, что окончательно собрать прибор удалось только с третьей попытки.
В первый раз я взял китайские провода для перемычек, но по факту они оказались очень жёсткими, да ещё и недостаточной длины, поэтому пришлось от них отказаться и вернуться с своему любимому МГТФ. Хотя у китайских проводов был несомненный плюс – различие цветов, что помогало при монтаже, а с белым МГТФ пришлось вдвойне внимательней быть, чтобы не перепутать местами.
Во второй раз до меня дошло, что металлические болты рядом с катушкой сенсора металлодетектора как-то не совсем правильно, поэтому их заменил на пластиковый крепёж (фото не сделал, к сожалению). В принципе, в устройстве есть возможность перекалибровать его и оно успешно функционировало с металлическими болтами, но решил не рисковать – вдруг это скажется на чувствительности – и заменил на пластиковые.
Далее подпаиваем провода новосозданного переходника к площадкам на плате детектора.
И дальше – проверка. И весьма успешная. На автотесте все сегменты экрана работают.
Пластиковый держатель экрана пришлось также немного «доработать напильником», а именно удалить левый упор, место которого занял наш переходник.
Провода аккуратно уложились сбоку. Для надёжности место пайки к плате устройства дополнительно укрепил термоклеем.
При сборке дополнительно следим, чтобы эти провода не попали случайно между половинками корпуса. Время покажет степень надёжности данной конструкции.
Шлейф дисплея
Сортировать: По умолчаниюПо имени (A — Я)По имени (Я — A)По цене (возрастанию)По цене (убыванию)По рейтингу (убыванию)По рейтингу (возрастанию)По модели (A — Я)По модели (Я — A)24364896120
Код товара: 4386
0
Наличие: На складе
Код товара: 3956
0
Наличие: На складе
гибкая пленка | CSS-уловки
Свойство flex-wrap
является подсвойством модуля «Гибкая компоновка блока».
Он определяет, будут ли гибкие элементы размещаться в одной строке или могут быть объединены в несколько строк. Если установлено несколько линий, он также определяет поперечную ось, которая определяет направление, в котором укладываются новые линии.
Напоминание: поперечная ось — это ось, перпендикулярная главной оси. Его направление зависит от направления главной оси.
Свойство flex-wrap
принимает 3 разных значения:
-
nowrap
( по умолчанию ): однострочный, который может вызвать переполнение контейнера -
wrap
: многострочный, направление определяетсяflex-direction
-
wrap-reverse
: многострочный, противоположный направлению, заданномуflex-direction
Синтаксис
гибкая пленка: nowrap | упаковка | перемотка
.flex-container {
flex-wrap: обертка;
}
Демо
В следующей демонстрации:
- Красный список установлен на
nowrap
- Желтый список установлен на
wrap
- Для синего списка установлено значение
с перемоткой назад
Примечание: для flex-direction
установлено значение по умолчанию: строка
.
См. Демонстрацию Pen Flex-wrap: CSS-Tricks (@ css-tricks) на CodePen.
Сопутствующие объекты
Другие ресурсы
Поддержка браузера
Desktop
Chrome | Firefox | IE | Edge | Safari |
---|---|---|---|---|
21 * | 28 | 11 | 12 | 6,1 * |
Mobile / Tablet
Android Chrome | Android Firefox | Android | iOS Safari |
---|---|---|---|
90 | 87 | 4.4 | 7,0-7,1 * |
Для получения дополнительной информации о том, как смешивать синтаксисы, чтобы получить лучшую поддержку браузера, обратитесь к этой статье (CSS-Tricks) или этой статье (DevOpera).
Flexbox — Изучите веб-разработку
Flexbox — это метод одномерного макета для размещения элементов в строках или столбцах. Элементы изгибаются, чтобы заполнить дополнительное пространство, и сжимаются, чтобы поместиться в меньшее пространство. В этой статье объясняются все основы.
Долгое время единственными надежными инструментами, совместимыми с кроссбраузерностью, доступными для создания макетов CSS, были такие вещи, как поплавки и позиционирование.Это нормально, и они работают, но в некотором смысле они также довольно ограничивают и расстраивают.
Следующие простые требования к компоновке либо трудно, либо невозможно выполнить с помощью таких инструментов любым удобным и гибким способом:
- Вертикальное центрирование блока содержимого внутри его родительского элемента.
- Заставляет все дочерние элементы контейнера занимать равное количество доступной ширины / высоты, независимо от того, сколько ширины / высоты доступно.
- Делает все столбцы в макете с несколькими столбцами одинаковой высоты, даже если они содержат разное количество содержимого.
Как вы увидите в следующих разделах, flexbox значительно упрощает множество задач по разметке. Давайте копаться!
В этой статье мы предложим вам выполнить серию упражнений, которые помогут вам понять, как работает flexbox. Для начала вы должны сделать локальную копию первого стартового файла — flexbox0.html из нашего репозитория github — загрузить его в современный браузер (например, Firefox или Chrome) и взглянуть на код в редакторе кода. Вы также можете увидеть это вживую здесь.
Вы увидите, что у нас есть элемент
с заголовком верхнего уровня внутри и элемент
, содержащий три
s.Мы собираемся использовать их для создания стандартного трехколоночного макета.
Для начала нам нужно выбрать, какие элементы должны быть размещены в виде гибких блоков. Для этого мы устанавливаем специальное значение display
для родительского элемента элементов, на которые вы хотите повлиять. В этом случае мы хотим разместить элементы
, поэтому мы устанавливаем это на
:
раздел {
дисплей: гибкий;
}
Это приводит к тому, что элемент
Итак, это единственное объявление дает нам все, что нам нужно — невероятно, правда? У нас есть макет с несколькими столбцами с столбцами одинакового размера, и все столбцы имеют одинаковую высоту. Это связано с тем, что значения по умолчанию, присвоенные гибким элементам (дочерним элементам гибкого контейнера), настроены для решения таких распространенных проблем, как эта.
Для ясности, давайте повторим, что здесь происходит. Элемент, которому мы присвоили display
, значение flex
, действует как элемент уровня блока с точки зрения того, как он взаимодействует с остальной частью страницы, но его дочерние элементы размещаются как гибкие элементы.В следующем разделе более подробно будет объяснено, что это означает. Также обратите внимание, что вы можете использовать значение display
для inline-flex
, если вы хотите разместить дочерние элементы элемента как гибкие элементы, но чтобы этот элемент вел себя как встроенный элемент.
Когда элементы размещаются как гибкие, они располагаются по двум осям:
- Основная ось — это ось, проходящая в направлении расположения гибких элементов (например, в виде строк на странице или столбцов вниз по странице.) Начало и конец этой оси называются основным началом и основным концом .
- Поперечная ось — это ось, проходящая перпендикулярно направлению, в котором располагаются гибкие элементы. Начало и конец этой оси называются перекрестным началом и перекрестным концом .
- Родительский элемент, для которого установлено значение
display: flex
(
в нашем примере), называется гибким контейнером . - Элементы, расположенные как гибкие коробки внутри гибкого контейнера, называются гибкими элементами (элементы
в нашем примере).
Помните об этой терминологии при просмотре последующих разделов. Вы всегда можете вернуться к нему, если запутаетесь в каком-либо из используемых терминов.
Flexbox предоставляет свойство под названием flex-direction
, которое указывает, в каком направлении движется основная ось (в каком направлении расположены дочерние элементы flexbox) — по умолчанию для него установлено значение , строка
, что заставляет их располагаться подряд в направлении, в котором работает язык вашего браузера по умолчанию (слева направо, в случае английского браузера).
Попробуйте добавить следующее объявление в ваше правило
:
flex-direction: столбец;
Вы увидите, что это возвращает элементы в макет столбцов, как это было до того, как мы добавили какой-либо CSS. Прежде чем двигаться дальше, удалите это объявление из своего примера.
Примечание : Вы также можете расположить гибкие элементы в обратном направлении, используя значения row-reverse
и column-reverse
.Поэкспериментируйте и с этими значениями!
Одна проблема, которая возникает, когда у вас есть фиксированная ширина или высота в вашем макете, заключается в том, что в конечном итоге ваши дочерние элементы flexbox переполняют свой контейнер, нарушая макет. Взгляните на наш пример flexbox-wrap0.html и попробуйте просмотреть его в реальном времени (возьмите локальную копию этого файла, если хотите следовать этому примеру):
Здесь мы видим, что дети действительно вырываются из своего сосуда. Один из способов исправить это — добавить следующее объявление к правилу
:
flex-wrap: пленка;
Также добавьте следующее объявление в свое правило
:
flex: 200 пикселей;
Попробуйте сейчас; вы увидите, что макет выглядит намного лучше с этим включенным:
Теперь у нас есть несколько строк — в каждую строку помещается столько дочерних элементов flexbox, сколько имеет смысл, и любое переполнение перемещается на следующую строку.Объявление flex: 200px
, установленное для статей, означает, что каждая из них будет иметь ширину не менее 200 пикселей. Позже мы обсудим это свойство более подробно. Вы также можете заметить, что последние несколько дочерних элементов в последней строке стали шире, так что вся строка по-прежнему заполнена.
Но мы можем сделать больше. Прежде всего, попробуйте изменить значение свойства flex-direction
на row-reverse
— теперь вы увидите, что у вас все еще есть многострочный макет, но он начинается с противоположного угла окна браузера и течет в обратном направлении. .
Здесь стоит отметить, что существует сокращение для flex-direction
и flex-wrap
— flex-flow
. Так, например, вы можете заменить
flex-direction: ряд;
flex-wrap: обертка;
с
flex-flow: обертывание строк;
Давайте теперь вернемся к нашему первому примеру и посмотрим, как мы можем контролировать, какую долю пространства занимают гибкие элементы по сравнению с другими гибкими элементами. Запустите вашу локальную копию flexbox0.html или возьмите копию flexbox1.html в качестве новой отправной точки (посмотрите ее вживую).
Сначала добавьте следующее правило внизу вашего CSS:
артикул {
гибкость: 1;
}
Это безразмерное значение пропорции, которое определяет, сколько из доступного пространства вдоль главной оси будет занимать каждый гибкий элемент по сравнению с другими гибкими элементами. В этом случае мы даем каждому элементу
одно и то же значение (значение 1), что означает, что все они будут занимать равное количество свободного места, оставшегося после установки таких вещей, как заполнение и маржа.Это относительно других гибких элементов, а это означает, что присвоение каждому гибкому элементу значения 400000 будет иметь точно такой же эффект.
Теперь добавьте следующее правило под предыдущим:
артикул: nth-of-type (3) {
гибкость: 2;
}
Теперь, когда вы обновитесь, вы увидите, что третий
занимает в два раза больше доступной ширины, чем два других. Всего доступно четыре пропорциональных единицы (так как 1 + 1 + 2 = 4). Первые два гибких элемента имеют по одной единице каждый, поэтому они занимают 1/4 доступного пространства каждый.Третий состоит из двух блоков, поэтому он занимает 2/4 доступного пространства (или половину).
Вы также можете указать значение минимального размера внутри значения гибкости. Попробуйте обновить существующие правила статьи следующим образом:
артикул {
flex: 1 200 пикселей;
}
article: nth-of-type (3) {
flex: 2 200 пикселей;
}
Это в основном гласит: «Каждому гибкому элементу сначала будет предоставлено 200 пикселей доступного пространства. После этого остальная часть доступного пространства будет распределена в соответствии с пропорциональными единицами.»Попробуйте обновить, и вы увидите разницу в том, как разделяется пространство.
Реальную ценность flexbox можно увидеть в его гибкости / быстродействии — если вы измените размер окна браузера или добавите еще один элемент
, макет продолжит работать нормально.
flex
— это сокращенное свойство, которое может указывать до трех различных значений:
- Безразмерная величина пропорции, которую мы обсуждали выше. Это можно указать индивидуально, используя расширенное свойство
flex-grow
. - Второе безразмерное значение пропорции —
flex-shrink
— которое вступает в игру, когда гибкие элементы переполняют свой контейнер. Это указывает, какая часть переполнения отбирается из размера каждого гибкого элемента, чтобы они не переполняли свой контейнер. Это довольно продвинутая функция flexbox, и мы не будем рассматривать ее дальше в этой статье. - Минимальное значение размера, которое мы обсуждали выше. Это можно указать индивидуально, используя стандартное значение
flex-base
.
Мы бы не советовали использовать длинные свойства flex, если в этом нет необходимости (например, чтобы переопределить что-то ранее установленное). Они приводят к написанию большого количества дополнительного кода и могут несколько сбивать с толку.
Вы также можете использовать функции Flexbox для выравнивания гибких элементов по главной или поперечной оси. Давайте рассмотрим это, посмотрев на новый пример — flex-align0.html (также посмотрите его вживую) — который мы собираемся превратить в аккуратную гибкую кнопку / панель инструментов. На данный момент вы увидите горизонтальную строку меню с некоторыми кнопками, зажатыми в верхнем левом углу.
Сначала возьмите локальную копию этого примера.
Теперь добавьте следующее в конец CSS примера:
div {
дисплей: гибкий;
align-items: center;
justify-content: пространство вокруг;
}
Обновите страницу, и вы увидите, что кнопки теперь хорошо отцентрированы по горизонтали и вертикали. Мы сделали это с помощью двух новых свойств.
align-items
управляет расположением гибких элементов на поперечной оси.
- По умолчанию значение
stretch
, которое растягивает все гибкие элементы для заполнения родительского элемента в направлении поперечной оси. Если родительский элемент не имеет фиксированной ширины в направлении поперечной оси, тогда все гибкие элементы станут такими же длинными, как и самый длинный гибкий элемент. Вот так в нашем первом примере по умолчанию были столбцы одинаковой высоты. - Значение
center
, которое мы использовали в приведенном выше коде, заставляет элементы сохранять свои внутренние размеры, но центрироваться вдоль поперечной оси.Вот почему кнопки в нашем текущем примере центрированы по вертикали. - Вы также можете иметь такие значения, как
flex-start
иflex-end
, которые будут выравнивать все элементы в начале и конце поперечной оси соответственно. См.align-items
для получения полной информации.
Вы можете переопределить поведение align-items
для отдельных гибких элементов, применив к ним свойство align-self
. Например, попробуйте добавить в свой CSS следующий код:
button: first-child {
align-self: гибкий конец;
}
Посмотрите, какой это эффект, и удалите его снова, когда закончите.
justify-content
управляет расположением гибких элементов на главной оси.
- Значение по умолчанию —
flex-start
, что заставляет все элементы располагаться в начале главной оси. - Вы можете использовать
flex-end
, чтобы они сидели на конце. -
center
также является значением дляjustify-content
и заставит гибкие элементы располагаться в центре главной оси. - Значение, которое мы использовали выше,
пробел вокруг
, полезно — оно распределяет все элементы равномерно вдоль главной оси, с небольшим пространством, оставленным с обоих концов. - Есть еще одно значение,
пробел между
, которое очень похоже напробел около
, за исключением того, что оно не оставляет места на обоих концах.
Мы хотели бы предложить вам поиграть с этими значениями, чтобы увидеть, как они работают, прежде чем продолжить.
Flexbox также имеет функцию изменения порядка расположения гибких элементов, не влияя на исходный порядок. Это еще одна вещь, которую невозможно сделать традиционными методами верстки.
Код для этого прост; попробуйте добавить следующий CSS в пример кода панели кнопок:
button: first-child {
заказ: 1;
}
Обновите, и теперь вы увидите, что кнопка «Улыбка» переместилась в конец главной оси.Давайте поговорим о том, как это работает, немного подробнее:
- По умолчанию все гибкие элементы имеют значение порядка
- Элементы Flex с установленными для них значениями более высокого порядка будут отображаться в порядке отображения позже, чем элементы с значениями более низкого порядка.
- Элементы Flex с одинаковым значением порядка будут отображаться в их исходном порядке. Итак, если у вас есть четыре элемента со значениями порядка 2, 1, 1 и 0, установленными для них соответственно, их порядок отображения будет 4-м, 2-м, 3-м, затем 1-м.
- 3-й элемент появляется после 2-го, потому что он имеет то же значение заказа и находится после него в исходном порядке.
Вы можете установить отрицательные значения порядка, чтобы элементы появлялись раньше, чем элементы с нулевым значением. Например, вы можете сделать так, чтобы кнопка «Румянец» появлялась в начале главной оси, используя следующее правило:
button: last-child {
заказ: -1;
}
С помощью flexbox можно создавать довольно сложные макеты. Совершенно нормально сделать гибкий элемент также и гибким контейнером, чтобы его дочерние элементы также располагались как гибкие коробки.Взгляните на complex-flexbox.html (также посмотрите его вживую).
HTML для этого довольно прост. У нас есть элемент Давайте посмотрим на код, который мы использовали для макета. Прежде всего, мы устанавливаем дочерние элементы Затем мы устанавливаем некоторые значения гибкости для самих Далее выбираем первые Наконец, мы задали размер кнопки, но, что более интересно, мы дали ей значение гибкости 1 авто.Это дает очень интересный эффект, который вы увидите, если попытаетесь изменить ширину окна браузера. Кнопки будут занимать столько места, сколько могут, и располагаться как можно больше на одной линии, но когда они больше не могут удобно поместиться на одной линии, они выпадают, чтобы создать новые линии. Поддержка Flexbox доступна в большинстве новых браузеров — Firefox, Chrome, Opera, Microsoft Edge и IE 11, более новых версиях Android / iOS и т. Д.Однако вы должны знать, что все еще используются старые браузеры, которые не поддерживают Flexbox (или поддерживают, но поддерживают его действительно старую, устаревшую версию). Пока вы просто учитесь и экспериментируете, это не имеет большого значения; однако, если вы планируете использовать flexbox на реальном веб-сайте, вам необходимо провести тестирование и убедиться, что ваш пользовательский опыт по-прежнему приемлем в максимально возможном количестве браузеров. Flexbox немного сложнее некоторых функций CSS. Например, если в браузере отсутствует тень CSS, сайт, скорее всего, по-прежнему можно будет использовать.Однако отсутствие поддержки функций flexbox, вероятно, полностью нарушит макет, сделав его непригодным для использования. Мы обсуждаем стратегии решения проблем кроссбраузерной поддержки в нашем модуле кроссбраузерного тестирования. В этой статье мы рассмотрели многое, но можете ли вы вспомнить самую важную информацию? Вы можете найти дополнительные тесты, чтобы убедиться, что вы сохранили эту информацию, прежде чем двигаться дальше — см. Проверка своих навыков: Flexbox. На этом мы завершаем наш обзор основ flexbox.Мы надеемся, что вам понравилось, и вы хорошо поиграетесь с этим, пока вы продвигаетесь вперед в своем обучении. Далее мы рассмотрим еще один важный аспект макетов CSS — сетки CSS. гибкое направление строка (по умолчанию)
ряд-обратный
столбец
столбец-обратный гибкая пленка , переносятся ли элементы в следующий столбец строки (применяется только в том случае, если общая ширина и высота элементов больше, чем у контейнера) nowrap (по умолчанию)
сворачивать
перемотка justify-content выравнивание по оси xy гибкий старт (по умолчанию)
гибкий конец
центр
пространство вокруг
пространство между align-items выравнивание по оси yx растянуть (по умолчанию)
исходный уровень
центр
гибкий старт
гибкий конец align-content применяется только в том случае, если имеется более одного столбца строк с элементами растянуть (по умолчанию)
центр
гибкий старт
гибкий конец
пространство вокруг
пространство между Когда дело доходит до размера, гибкие элементы внутри гибкого контейнера ведут себя
новый способ использования «гибкого блока» в CSS, который может сбивать с толку
первый.Даже с явным определением свойств ширины / высоты размер flex
элементы «гибкие» по умолчанию или изменяются в зависимости от размера контейнера на
воспользоваться доступным пространством внутри него (или его отсутствием). Мы можем
конечно, измените это поведение, но вот как гибкие элементы ведут себя вне
box, и отсюда возникает большая путаница. Управление размером гибких элементов в основном зависит от свойства гибкости, добавлен к каждому отдельному элементу гибкости . Самый распространенный способ получить это свойство
состоит в том, чтобы установить его в целое число, чтобы определить размер гибкого элемента как часть
общая ширина.Допустим, мы хотим создать 3
расположение столбцов одинаковой ширины; мы могли бы сделать это, добавив Здесь мы даем каждому элементу гибкости значение гибкости 1, что в сумме дает 3
в итоге. Это означает, что каждый гибкий элемент занимает 1/3 от общего пространства, что делает
они равны по ширине. Итак, мы можем представить целое число, назначенное каждому гибкому
свойство как часть общей ширины, при этом общая ширина равна
значения всех свойств В этом случае мы делим общую ширину гибкого контейнера на 4
частей, при этом средний столбец получает две части, в то время как
оставшиеся два столбца получают по 1 порции.Это делает средний столбец дважды
такой же большой, как и два других. Свойство Мы уже видели, как присвоить свойству Ключ к созданию фиксированной ширины первого столбца (гибкого элемента),
никогда не растет и не сжимается — это следующий код CSS: Здесь мы установили для свойства Вместо установки Здесь мы настраиваем 3 свойства: Вам решать, идти ли по маршруту « Взгляните на свойство И наконец, что не менее важно, мы приходим к Допустим, у нас есть элемент Однако мы хотим, чтобы фактический порядок отображения был
другое, сначала идет элемент Давайте объединим все, что мы узнали в этом разделе, чтобы создать
полноразмерная трехколоночная компоновка с использованием CSS Flexbox и преимуществ CSS и HTML: Выход: В этом руководстве мы рассмотрели основные части, составляющие CSS Flex.
Модуль Box, и то, как он ранее затруднял построение макетов на прогулке
парк. Как упоминалось в начале урока, как только вы начнете сгибаться,
трудно не продолжать это делать! Конец учебника Это, безусловно, самый распространенный вопрос о гибкости, который мне задают.На самом деле, я помню, как сам гуглил именно об этом, когда еще только гадал с помощью flexbox. Проверяя свою историю поиска в Google, похоже, что в прошлом году я искал вариант «гибкая основа против ширины против минимальной ширины» 4 раза. Поговорим о расслаблении! Давайте ответим на этот вопрос сегодня и, надеюсь, избавим вас от поисков в будущем. Вот формула, которую следует запомнить: content -> width -> flex-base (limited by max | min-width) Для определения размера гибкого элемента окончательная гибкая основа ограничена минимальной шириной а max-width — , все, что имеет значение — . ПРИМЕЧАНИЕ: Спецификация flexbox называет это «гипотетическим основным размером», но гораздо проще думать о нем как об окончательной гибкой основе. Если Если Давайте проиллюстрируем эту формулу, поместив несколько гибких элементов в гибкий контейнер размером 1000 пикселей: Давайте поместим элементы размером 200 на 200 пикселей, которые определяют ширину В нашем гибком контейнере достаточно места, поэтому наши элементы отлично вписываются в него: В этом примере не было указано гибкое основание До сих пор установка ширины Давайте посмотрим, что произойдет, если мы установим гибкую основу Как видите, когда указано Наша последняя гибкая основа Запомните формулу гибких элементов: content -> width -> flex-base (limited by max | min-width) Единственное, что имеет значение, — это финальный флекс-базис.Лучшая практика — просто использовать Окончательное значение Несмотря на то, что для нашего гибкого базиса Теперь давайте установим минимальную ширину Несмотря на то, что мы указали 100 пикселей для нашего гибкого базиса Теперь мы понимаем, что ширина Вы, наверное, заметили, что на всех наших иллюстрациях мы визуализировали размер гибких элементов с до , которые они поместили в гибкий контейнер. Мы сделали это, потому что это именно то, чем является Допустим, мы хотели поместить еще больше из этих Перед тем, как войти в контейнер, каждый из них занимал бы 200 пикселей, или всего 1600 пикселей.Но в нашем контейнере доступно только 1000 пикселей. Когда не хватает места для всех элементов Все элементы начинались с ширины 200 пикселей, но поскольку у нас не хватало пространство они сжимались с одинаковой скоростью, пока все не умещались (125 пикселей каждое). Степень усадки и есть соотношение Часто у нас остается много места после того, как складываются последние Мы можем указать нашим гибким элементам расти, чтобы заполнить доступное пространство после их помещения в гибкий контейнер. В этом суть свойства Рост и сжатие — огромная часть крутости flexbox, и это то, что делает его таким отличным инструментом для адаптивного дизайна пользовательского интерфейса.Обучающая игра Flexbox Zombies более подробно описывает Надеюсь, теперь вы видите разницу между Вот проблема: если вы хотите создать макет flexbox с несколькими рядами элементов, как вы контролируете, какой элемент в какой строке окажется? Предположим, вы хотите создать макет, который выглядит примерно так, с тремя сложенными элементами и чередующимися элементами полной ширины: Распространенным способом управления расположением и размером гибких элементов является использование Нет свойства, которое мы можем установить для гибкого элемента, чтобы он разбивался на новую строку, но мы можем вставить свернутую строку (вы можете думать об этом как о Давайте рассмотрим некоторые сценарии, когда вы, возможно, захотите это использовать, и рассмотрим некоторые интересные методы компоновки, которые он позволяет нам использовать. Обратите внимание, что для всех приведенных ниже примеров кода требуется и предполагается, что у вас есть гибкий контейнер с Использование элемента для перехода к новой гибкой строке дает интересный эффект: мы можем пропустить указание ширины любого элемента в нашем гибком макете и полностью полагаться на разрывы строк для определения потока нашей сетки. Начнем с простого примера.Скажем, у нас есть два элемента, показанные рядом (они настроены на рост с Мы можем вставить элемент разрыва строки между элементами, чтобы они оба занимали 100% доступного пространства: Это создает макет с двумя вертикально расположенными элементами во всю ширину (я добавил границу к Как это работает? Поскольку мы сказали, что Мы можем использовать эту технику для создания макета в верхней части сообщения, разбивая до и после каждого четвертого элемента: Это создаст макет в верхней части сообщения в блоге.По сути, элемент не перейдет в новую строку, если мы не вставим элемент разрыва строки: Опять же, нам не нужно указывать ширину ни для одного из этих элементов. Тот же метод будет работать для столбцов, если у нас есть гибкий контейнер с Такой подход с использованием элементов разрыва строки для определения макета определенно добавляет некоторого раздувания и шума в наш HTML, но при правильном использовании он может стать мощным инструментом.Мы можем, например, использовать его для создания макета кирпичной кладки только с помощью CSS и динамически позиционировать разрывы с помощью свойства Предположим, мы хотим создать этот макет: И предположим, что мы хотим сделать это, установив различные значения Если мы хотим добавить еще одну строку элементов ниже этой строки: Мы не смогли бы сделать это, не прибегая к установке Уютно, но не то, что нам нужно.Однако, если мы вставим ломающийся элемент, мы можем построить этот макет, распределив все пространство с помощью Получение желаемого макета со всеми размерами, определенными пропорционально с помощью И если есть сценарий, когда нам нужно пять элементов в первой строке, нам не нужно изменять какой-либо CSS, чтобы это работало, мы можем просто добавить эти элементы перед разрывом строки: Все, что вам нужно добавить в свой CSS для использования элементов разрыва строки, — это эти два класса (единственное различие между этими двумя классами состоит в том, что ширина Вы, безусловно, могли бы достичь того же эффекта или аналогичных эффектов, вложив гибкие блоки и имея один гибкий элемент для каждой строки, и во многих случаях просто используя гибкую основу Flexbox, или Flexible Box Layout, — это новый режим макета в CSS3, предназначенный для компоновки сложных приложений и веб-страниц. В CSS 2.1 были определены четыре режима макета, которые определяют размер и положение боксов на основе их отношений с их родственными и родительскими блоками: блочный макет , предназначенный для компоновки документов, который размещает элементы на странице вертикально; встроенный макет , предназначенный для горизонтального размещения текста внутри блочных контейнеров; макет таблицы , предназначенный для размещения двумерных данных в табличном формате; и позиционируемый макет разработан для очень явного позиционирования без особого учета других элементов в документе. Flexbox похож на блочную компоновку, за исключением того, что в ней отсутствуют многие свойства, которые можно использовать в блочной компоновке, такие как поплавки и столбцы. Но опять же, он обладает большей гибкостью для распределения пространства и выравнивания контента способами, которые часто необходимы веб-приложениям и сложным веб-страницам. Он решает многие другие проблемы компоновки, с которыми мы боролись и пытались решить в течение очень долгого времени, такие как вертикальное центрирование, например, среди многих других. Flexbox позволяет размещать элементы в контейнере, упорядочивать и (пере) упорядочивать их, выравнивать и распределять пространство между ними (и / или вокруг них), независимо от их размера. Это позволяет сделать их буквально гибкими — элементы внутри контейнера можно растягивать и сжимать, чтобы вместить доступное пространство, и их размер можно изменять пропорционально друг другу, а любое доступное пространство между ними или вокруг них может быть распределено между ними на основе пропорция, которую вы можете указать. Используя flexbox, вы также можете размещать элементы внутри контейнера в любом направлении: горизонтальном или вертикальном, называемом направлениями гибкости; вы не привязаны к одному направлению, как в других режимах макета. Это позволяет создавать более адаптивные и отзывчивые макеты, которые адаптируются к изменениям макета на экранах разных размеров и ориентации. И последнее, но не менее важное: вы можете изменить визуальный порядок элементов внутри контейнера, не влияя на их фактический порядок в разметке.Это означает, что вы можете изменить порядок, в котором определенные элементы отображаются на странице, сохраняя при этом их порядок в разметке. Это полезно, когда вы хотите выделить определенные элементы, например, избранную запись в блоге, даже если эти элементы не идут первыми в разметке. Первым шагом к использованию Flexbox является создание гибкого контейнера .Дочерние элементы гибкого контейнера называются гибкими элементами и размещаются внутри гибкого контейнера с использованием свойств Flexbox. Некоторые свойства Flexbox применяются к контейнеру, другие — к элементам Flex. Гибкий контейнер создается путем установки свойства Дисплей Дочерние элементы гибкого контейнера, гибкие элементы, размещаются с использованием макета Flexbox. Любой элемент за пределами гибкого контейнера не зависит от макета Flexbox, определенного на нем, и будет отображаться, как обычно на странице. Прежде чем перейти к свойствам Flexbox, которые управляют и настраивают макет Flexbox, есть два понятия и термины, с которыми вы должны сначала ознакомиться: гибкие оси , и гибкие линии , . В отличие от блочного и встроенного макета, макет которого основан на блочном и встроенном направлениях потока, гибкий макет основан на направлениях гибкости . Концепция направлений изгиба основана на концепции осей , , которые определяют направления, вдоль которых укладываются элементы изгиба. На следующем рисунке показаны оси, определенные в гибком контейнере: В зависимости от значений свойств Flexbox элементы гибкости будут располагаться внутри гибкого контейнера, следуя либо главной оси , либо поперечной оси . Перед использованием макета Flexbox необходимо ознакомиться с этими концепциями.Все в макете Flexbox относится к этим двум осям. Гибкие элементы в гибком контейнере размещаются и выравниваются в пределах гибких линий , гипотетической линии, используемой для группировки и выравнивания гибких элементов внутри своего контейнера. Линии изгиба следуют за главной осью. Гибкий контейнер может быть однострочным или многострочным , в зависимости от свойства На приведенной выше иллюстрации предполагается, что режим записи — это режим слева направо (LTR).Гибкая линия следует направлению текста, который в режиме слева направо — слева направо, сверху вниз. Однако, если вы измените направление текста с помощью свойства Кроме того, при изменении режима записи направления как главной оси, так и поперечной оси также изменятся.Например, в раскладке на японском языке основная ось расположена вертикально, а поперечная ось — горизонтальна. См. Пример в разделе свойств Дополнительные сведения о возможных режимах и направлениях записи см. В модуле CSS Writing Modes Module и в записи свойства Свойство Возможные значения имеют следующие значения: Обратите внимание, что обратные значения не меняют порядок боксов; подобно Следующая демонстрация иллюстрирует результат применения четырех значений Ниже приведена та же демонстрация с другим режимом записи. Направленность текста установлена на Здесь стоит отметить, что у гибкого контейнера изначально есть одна гибкая линия, и гибкие элементы размещаются на этой единственной строке, даже если это означает, что они будут переполнять контейнер. Чтобы элементы переносились по нескольким строкам, используется свойство Свойство Возможные значения имеют следующие значения: Следующая демонстрация иллюстрирует результат применения четырех значений Все элементы гибкости будут пытаться уместиться на одной линии, как вы можете видеть в демонстрации. Используя разные значения Свойство flex-flow является сокращением для установки свойств Начальное значение свойства В следующих примерах показан результат применения различных значений Обратите внимание, что направления Свойство Возможные значения имеют следующие значения: В следующей демонстрации показан результат применения различных значений Свойство Возможные значения имеют следующие значения: Следующая демонстрация показывает результат применения различных значений Когда значение Обратите внимание, что свойство Свойство Возможные значения имеют следующие значения: Обратите внимание, что только гибкие контейнеры с несколькими линиями всегда имеют свободное пространство на поперечной оси для линий, которые необходимо выровнять, потому что в гибких контейнерах с одной линией единственная линия автоматически растягивается, чтобы заполнить пространство (это поведение по умолчанию). Следующая демонстрация показывает результат применения различных значений Элементы Flex по умолчанию отображаются и размещаются в том же порядке, в каком они появляются в исходном документе.Свойство Свойство Затем гибкий контейнер размещает свое содержимое в порядке изменения порядка документов, начиная с порядковой группы с наименьшим номером и далее вверх. Элементы с одинаковой порядковой группой располагаются в том порядке, в котором они появляются в исходном документе . Начальный порядок всех гибких элементов равен нулю (0). , и гибкие элементы отображаются в том порядке, в котором они появляются в исходном коде. Свойство Обратите внимание, что порядок, в котором гибкий элемент появляется внутри своего контейнера, изменяется только на экране, а не в исходном документе .Это означает, что программы чтения с экрана будут читать гибкие элементы в том порядке, в котором они появляются в источнике документа, а не в порядке, указанном с помощью свойства Это свойство может быть полезно для изменения порядка сообщений в блогах, например, когда вы можете захотеть разместить сообщение в блоге в начале страницы, даже если эта статья уже не самая последняя. Будет сохранен логический порядок, доступный для программ чтения с экрана, и статью можно будет визуально заменить, не влияя на доступность. Попробуйте изменить порядок элементов в следующем гибком контейнере, чтобы увидеть, как они переупорядочиваются визуально. Элементы Flex могут быть выровнены по поперечной оси текущей строки гибкого контейнера, аналогично Возможные значения имеют следующие значения: В следующей демонстрации элементы выравниваются внутри гибкого контейнера сначала с помощью свойства Свойство Если гибкие элементы расположены на гибкой линии так, что они не занимают всего пространства на этой строке, вы можете «расширить» гибкие элементы, чтобы они заполняли всю строку.Объем доступного пространства в строке можно распределить между элементами гибкости в соответствии с определенной пропорцией, которую можно указать с помощью свойства Например, вы можете распределить пространство между гибкими элементами так, чтобы один из этих элементов всегда занимал в два раза больше места, чем другие. Это можно сделать, установив для свойства Попробуйте ввести другие значения для свойства Обратите внимание, что свойство Свойство Свойство Если сумма основных размеров (см. Понятия и терминологию) всех гибких элементов больше, чем основной размер гибкого контейнера, вы можете указать, насколько вы хотите «сжать» гибкие элементы.Величина, на которую основные размеры гибких элементов превышают основной размер контейнера, является отрицательным пространством. Используя свойство Например, вы можете распределить пространство между гибкими элементами так, чтобы один из этих элементов всегда занимал в два раза больше отрицательного пространства, чем другие.Вы можете сделать это, установив для свойства Элементы в следующей демонстрации размещены внутри контейнера, имеющего основной размер Обратите внимание, что свойство Свойство Свойство За исключением Если указанная основа гибкости Свойство В следующей демонстрации Свойство Когда элемент является гибким элементом, вместо основного свойства размера (свойства ширины или высоты, см. Понятия и терминологию) используется Начальное значение - Если значение Если свойство Если значение flex-base опущено, оно устанавливается на Начальные значения свойств Ниже приведены некоторые из распространенных значений Обратите внимание, что по умолчанию гибкие элементы не сжимаются ниже минимального размера содержимого (длины самого длинного слова или элемента фиксированного размера). Чтобы изменить это, установите свойство Измените значение свойства Flexbox предоставляет нам простые решения для некоторых из самых старых проблем и «святого Грааля» в веб-дизайне. Вертикальное центрирование долгое время было одним из самых востребованных решений CSS.С Flexbox центрировать элемент внутри контейнера становится проще простого. Вы начинаете с создания гибкого контейнера: Затем, используя свойство Вот и все! Независимо от размера элемента, он всегда будет центрирован внутри своего контейнера.Ниже представлена живая демонстрация приведенного выше примера кода. Одна из многих вещей, которые мы обычно пытаемся выполнить для наших проектов, но не имеем прямого способа сделать это в CSS, - это создать макет с несколькими столбцами (скажем, с двумя или тремя столбцами), в котором все столбцы имеют одинаковую высоту. независимо от того, сколько контента в каждом из них. Это типично для макетов блогов с двумя столбцами или макетов журналов с несколькими столбцами. Используя flexbox, создать столбцы одинаковой высоты так же просто, как 1 2 3. Мы будем использовать очень простую разметку для простого блога. Мы хотим, чтобы боковая панель имела ту же высоту, что и основной раздел, независимо от количества контента в каждом из них.Раньше мы использовали хакерский путь к этому, используя, среди прочего, такие методы, как искусственные столбцы. Используя Flexbox, мы можем достичь одинаковых высот вот так: Затем вы можете установить ширину и коэффициенты увеличения / уменьшения гибкости, используя свойство Используя медиа-запросы, вы можете изменить макет двух столбцов и наложить их друг на друга на небольших экранах, используя свойство Как упоминалось ранее, вы также можете изменить порядок отображения элементов, используя свойство Прикрепить нижний колонтитул к нижней части страницы, даже если содержимое страницы над нижним колонтитулом меньше, чем область просмотра, - это то, что почти каждому из нас приходилось делать в какой-то момент. Некоторое время в сети было несколько методов, позволяющих это сделать, но все они полагаются на знание высоты нижнего колонтитула; без знания высоты нижнего колонтитула эти методы не сработают. Flexbox позволяет нам легко прикрепить нижний колонтитул к нижней части страницы (хотя и не исправлять). Вы начинаете с вертикальной укладки гибких элементов, используя CSS прост: Ниже приведена живая демонстрация, показывающая приведенный выше код в действии: Еще один способ помощи Flexbox - это размещение элементов навигации. До появления flexbox мы могли размещать элементы, используя встроенные, встроенные блочные или блочные дисплеи, либо размещая элементы рядом друг с другом. Итак, если навигация занимает все горизонтальное пространство, а элементы недостаточно широки (по тексту), чтобы заполнить это пространство, они будут сброшены либо вправо, либо влево, с большим пространством на Другая сторона.Если бы вы разложили их, чтобы заполнить пространство, вам нужно было бы установить указанную ширину и выполнить необходимые для этого вычисления, а затем добавить отступы и возможные поля для разнесения элементов. Как вы уже догадались, Flexbox значительно упрощает распространение элемента навигации. Используя Более того, вы можете превратить его в вертикальную навигацию с элементами, наложенными друг на друга на небольших экранах, также очень просто. Ниже приведена живая демонстрация приведенного выше кода. Flexbox может намного больше. Филип Уолтон создал популярную страницу под названием «Решено с помощью Flexbox», которая демонстрирует «проблемы, которые когда-то было трудно или невозможно решить с помощью одного лишь CSS, а теперь решаются тривиально легко с помощью Flexbox». Зои Микли Гилленуотер также выступила с прекрасным докладом на SmashingConf под названием «Повышение уровня с помощью Flexbox». В ее презентации представлено множество практических примеров использования Flexbox, а также способы начать использовать Flexbox сегодня, не беспокоясь о старых браузерах, обеспечивая достойную альтернативу этим браузерам.
, содержащий три
s. Третий
содержит три раздел - статья
статья
статья - div - кнопка
кнопка div
кнопка div
кнопка
кнопка
так, чтобы они располагались как гибкие блоки.
раздел {
дисплей: гибкий;
}
. Обратите особое внимание на второе правило — мы устанавливаем для третьего
его дочерние элементы, также расположенные как гибкие элементы, но на этот раз мы размещаем их как столбец.
артикул {
flex: 1 200 пикселей;
}
article: nth-of-type (3) {
flex: 3 200 пикселей;
дисплей: гибкий;
flex-flow: колонка;
}
flex: 1 100px;
, чтобы обеспечить ему минимальную высоту 100 пикселей, затем мы устанавливаем его дочерние элементы (элементы
) так, чтобы они также располагались как гибкие элементы. Здесь мы раскладываем их в ряд и выравниваем по центру доступного пространства, как мы это делали в примере с отдельными кнопками, который мы видели ранее.
article: nth-of-type (3) div: first-child {
flex: 1 100 пикселей;
дисплей: гибкий;
flex-flow: перенос строк;
align-items: center;
justify-content: пространство вокруг;
}
кнопка {
гибкость: 1 авто;
маржа: 5 пикселей;
размер шрифта: 18 пикселей;
высота строки: 1,5;
}
: flex
Настройка гибких элементов Размеры и порядок
Настройка гибких элементов Размеры и порядок:
flex
и заказ
недвижимость flex: 1
к каждому
гибкий элемент:
div.flexcontainer {
дисплей: гибкий;
мин-высота: 100vh; / * устанавливаем минимальную высоту контейнера равной высоте области просмотра * /
}
div.columns {
гибкость: 1;
отступ: 10 пикселей;
}
div.columns: nth-of-type (odd) {
фон: #eee;
}
Рисунок 6a: 3 гибких элемента одинаковой ширины с использованием свойства гибкости flex
суммируются.Следующий пример изменяет предыдущий пример так, чтобы
средний столбец вдвое шире двух оставшихся, что дает шлейф
значение 2, в то время как другие элементы гибкости получают значение 1:
div.flexcontainer {
дисплей: гибкий;
мин-высота: 100vh; / * устанавливаем минимальную высоту контейнера равной высоте области просмотра * /
}
div.columns {
гибкость: 1;
отступ: 10 пикселей;
}
div.columns: nth-of-type (2) {
гибкость: 2;
}
div.columns: nth-of-type (odd) {
фон: #eee;
}
Рисунок 6b: 3 гибких элемента со средним столбцом, вдвое превышающим ширину двух других, с использованием свойства гибкости —
Свойство Flex
более подробно и возможные значения flex
на самом деле является сокращенным свойством для трех свойств: flex-grow
, flex-shrink
и flex-base
. Хотя мы можем объявить последние 3
свойства индивидуально для управления размером гибкого элемента, W3C
спецификации побуждают нас использовать сокращенное свойство flex
всякий раз, когда
возможно, так как автоматически сбрасывает значения любого из
3 неиспользуемых свойства для наиболее распространенного варианта использования.Следующая таблица
перечислены наиболее распространенные допустимые значения для свойства flex
и его
в полном синтаксисе: Значение ключевого слова Flex Эквивалент: Flex: <рост> <усадка> <основа> Описание изгиб: начальный шлейф: 0 1 авто Размер элемента Flex основан на любой заявленной ширине / высоте.
свойства, хотя разрешено усадить (до минимума
размер содержимого), если места недостаточно. гибкость: авто шлейф: 1 1 авто Размер элемента Flex основан на любой заявленной ширине / высоте.
свойства, хотя разрешено как увеличивать , так и уменьшать в
размер основан на доступном пространстве внутри гибкого элемента. изгиб: нет шлейф: 0 0 авто Размер элемента Flex основан на любой заявленной ширине / высоте.
properties и не могут увеличиваться или уменьшаться в размере .Это делает любой
свойство width / height внутри гибкого элемента ведет себя как обычно
вне вселенной Flex Box. изгиб: положительное целое число flex: целое число 1 0 Элемент Flex получает заявленную часть свободного места
(целое число) относительно общего количества частей всего гибкого трубопровода
контейнер (каждому участвующему гибкому элементу должна быть назначена часть
к нему). flex
целое число для размера a
элемент гибкости как часть общей ширины.Еще одно распространенное значение:
« none
«, что, как описано выше, делает гибкий элемент
негибкий, позволяя добавлять в него любое свойство ширины / высоты
полностью контролировать его габариты. Объединяя две идеи, давайте изменим
наш макет из 3 столбцов до следующих размеров: Макет Flexbox с одним фиксированным элементом гибкости
div.flexcontainer {
дисплей: гибкий;
мин-высота: 100vh; / * устанавливаем минимальную высоту контейнера равной высоте области просмотра * /
}
div.columns {
отступ: 10 пикселей;
-webkit-box-sizing: border-box;
-moz-box-sizing: рамка-рамка;
размер коробки: рамка-рамка; / * делаем заполнение частью объявленной ширины, а не дополнительно * /
}
div.columns: nth-of-type (1) {
фон: #eee;
flex: нет; / * делаем этот гибкий элемент негибким, чтобы свойство width полностью контролировало его ширину * /
ширина: 250 пикселей;
}
div.columns: nth-of-type (2) {
гибкость: 7;
}
div.columns: nth-of-type (3) {
гибкость: 3;
фон: #eee;
}
Рисунок 6c: 3 гибких элемента, столбец 1 всегда имеет ширину 250 пикселей дел.columns: nth-of-type (1) {
flex: нет; / * делаем этот гибкий элемент негибким, чтобы свойство width полностью контролировало его ширину * /
ширина: 250 пикселей;
}
flex
значение « none
», что в основном делает этот flex
элемент негибкий (не может увеличиваться или уменьшаться). Тогда любая шириной
собственность мы
declare становится единственным определителем ширины гибкого элемента. — Альтернативный способ создания гибкого элемента фиксированной ширины
flex
на « none
» и использования свойства « width
» для
определить фиксированную ширину гибкого элемента, мы можем сделать то же самое, просто
свойство flex
.Ключ в том, чтобы использовать немного более длинный синтаксис, который устанавливает
свойства flex-grow
, flex-shrink
и flex-base
по отдельности: div.columns: nth-of-type (1) {
flex: 0 0 250 пикселей; / * альтернативный способ указать фиксированную ширину для гибкого элемента * /
}
flex-grow
, flex-shrink
и flex-base
индивидуально для создания гибкого элемента с фиксированной шириной 250 пикселей,
явно указав, что целевой элемент гибкости: flex-grow
: 0) flex-shrink
:
0) flex-base
: 250 пикселей) flex: none
» или « flex: 0 0
«для создания гибкого элемента фиксированной ширины; конечный результат по существу
тоже самое.Однако 2-й метод более универсален, так как позволяет вам устанавливать
явная ширина по умолчанию для гибкого элемента, но в то же время необязательно
сделать его гибким, когда есть достаточно места — или не хватает места для поддержания этого
фиксированная ширина. Например: div.columns: nth-of-type (1) {
flex: 0 1 250 пикселей; / * Указываем фиксированную ширину, но позволяем ей уменьшаться, если гибкий контейнер недостаточно велик для его размещения * /
}
Попробуйте сами
flex
на пробу
сами, чтобы лучше понять, как это работает.Запускаем flex
игровая площадка ниже и измените свойство flex
внутри трех гибких элементов.
Измените размер браузера, чтобы увидеть, как ширина увеличивается или уменьшается (или нет) в зависимости от
введенные вами значения:
Детская площадка: « флекс
» собственность Изменение порядка отображения элементов гибкости:
порядок
собственность заказу
собственности. В виде
его название подразумевает, что он позволяет вам изменять порядок отображения гибких элементов
относительно своих сверстников, независимо от порядка элементов в исходном коде.Это означает, что вы можете физически упорядочить свой контент в одном направлении в пределах источника.
код, но отображать их визуально в другом порядке. Заказ
свойство просто принимает целое число как допустимое (отрицательное) значение. Добавлено внутри
участвующих гибких элементов, чем ниже значение, тем выше
порядок отображения
элемент гибкости относительно других участников.
с 3 элементами внутри него —
, и
элемент.Внутри источника мы хотим, чтобы элемент
был
появляются первыми, чтобы указать поисковым системам и программам чтения с экрана свои
важность: <основной>
, затем
, и, наконец, .Это можно сделать просто
используя заказ
свойство
: main {
дисплей: гибкий;
}
статья{
заказ: 2; / * статья появляется второй * /
}
nav {
заказ: 1; / * сначала появляется навигация * /
}
в стороне{
заказ: 3; / * в стороне появляется третий * /
}
Собираем все вместе — трехколонный макет Flexbox
flex
для точного управления размерами гибких элементов и
свойство order
для изменения порядка отображения:
<стиль>
основной{
дисплей: гибкий;
justify-content: пробел между; / * разделяем гибкие элементы, не оставляя места на левом и правом краях * /
выравнивание текста: центр;
мин-высота: 100vh; / * устанавливаем минимальную высоту на 100% высоты окна просмотра * /
размер шрифта: 2em;
}
main> * {
радиус границы: 5 пикселей;
фон: серый;
цвет белый;
}
статья{
гибкость: 1; / * гибкая ширина * /
маржа справа: 10 пикселей; / * добавляем правое поле * /
заказ: 2; /* Отобразить заказ */
}
nav {
flex: 0 1 250 пикселей; / * фиксированная ширина 250 пикселей, хотя разрешено уменьшаться, если гибкий контейнер становится слишком маленьким * /
маржа справа: 10 пикселей; / * добавляем правое поле * /
заказ: 1; /* Отобразить заказ */
}
в стороне{
flex: 0 1 200 пикселей; / * фиксированная ширина 200 пикселей, хотя разрешено уменьшаться, если гибкий контейнер становится слишком маленьким * /
заказ: 3; /* Отобразить заказ */
}
@media screen и (max-width: 600px) {
основной{
flex-direction: столбец;
мин-высота: авто;
}
main> * {
flex: нет;
маржа: 0;
нижнее поле: 10 пикселей;
}
}
<основной>
Рисунок 7: Расположение столбцов Flexbox 3.Щелкните, чтобы просмотреть живой пример. Заключение
Разница между шириной и гибкостью
flex-base
не указан, то flex-base
возвращается к свойству width
элемента. width
не указана, тогда гибкая основа
возвращается к вычисленной ширине содержимого элемента.
контейнер {
дисплей: гибкий;
ширина: 1000 пикселей;
}
в наш гибкий контейнер.
шт. {
ширина: 200 пикселей;
высота: 200 пикселей;
}
наших элементов
, поэтому по умолчанию было выбрано flex-base: auto
, который падает вернемся к шириной
(200 пикселей).
эквивалентна установке гибкой основы
.
для этих элементов, для которых уже задана ширина
.
шт. {
ширина: 30 пикселей;
гибкая основа: 250 пикселей;
}
flex-base
, ширина
наших боксов игнорируется, поэтому нам даже не нужно его указывать:
item {
гибкая основа: 250 пикселей;
}
для каждого элемента составляет 250 пикселей. И поскольку у нас достаточно места для всего этого, они отлично впишутся в свой гибкий контейнер: flex-base
вместо ширины или высоты. Тем более, что в Safari все еще есть старая ошибка flexbox, из-за которой он не может правильно применять гибкую усадку к элементам, которые используют высоту
вместо flex-base
. flex-base
ограничено минимальной шириной
и максимальной шириной
элемента. Посмотрите, что происходит, когда мы устанавливаем предел max-width
для наших гибких элементов:
item {
гибкая основа: 250 пикселей;
максимальная ширина: 100 пикселей;
}
было установлено значение 250 пикселей, он достиг предела максимальной ширины в 100 пикселей.Итак, наша последняя flex-base
в данном случае составляет 100 пикселей, и наши элементы поместятся в гибкий контейнер следующим образом:
и посмотрим, как это ограничивает нашу последнюю flex-base
:
шт. {
гибкая основа: 100 пикселей;
минимальная ширина: 250 пикселей;
}
, оно не могло быть ниже предела минимальной ширины в 250 пикселей. Итак, наш последний flex-base
составляет 250 пикселей, и наши гибкие элементы идеально вписываются в контейнер:
— это просто запасной вариант, когда flex-base
отсутствует, а min-width
и . max-width
— это только верхний и нижний пределы для окончательного flex-base
.Так что же такое flex-base
? flex-base
: размер гибких элементов до того, как они будут помещены в гибкий контейнер . Это идеальный или гипотетический размер элементов. Но flex-base
— это не гарантированный размер ! Как только браузер помещает элементы в свой гибкий контейнер, все меняется.В некоторых из приведенных выше примеров вы видели, что гибкие элементы идеально вписываются в свой гибкий контейнер, потому что общая сумма окончательных гибких базовых элементов
была точной шириной нашего контейнера (1000 пикселей). Это здорово, когда это происходит, но часто в гибком контейнере не хватает места или будет дополнительное пространство после того, как все его значения flex-base
складываются. flex-base: 200px
элементов в наш контейнер: на гибкой основе
(200 пикселей каждый), тогда гибкие элементы по умолчанию будут сжиматься на , чтобы соответствовать: flex-shrink
. Вы можете переопределить значение по умолчанию, чтобы определенные элементы сжимались быстрее (более высокий коэффициент) или медленнее (более низкий коэффициент) или вообще не сжимались (0). flex-base
всех элементов.
шт. {
гибкая основа: 100 пикселей;
}
flex-grow
. Значение по умолчанию — 0
, то есть не увеличивать. Давайте установим для каждого элемента значение flex-grow: 1
(все растут с одинаковой скоростью), чтобы заполнить оставшееся пространство:
item {
гибкая основа: 100 пикселей;
flex-grow: 1;
}
flex-shrink
и flex-grow
. width
и flex-base
, а также то, как min-width
и max-width
влияют на окончательную гибкую основу. Все вышеперечисленное применимо к height
, когда ваш flex-direction
равен column
или column-reverse
. Если вы хотите раз и навсегда освоить все возможности Flexbox, я настоятельно рекомендую подписаться на бесплатную обучающую игру Flexbox Zombies.Удачного флексбоксинга! Переход к новому ряду с помощью flexbox
ширины
или гибкой основы
; если мы установим ширину четвертого элемента равной 100%, он будет помещен в отдельную строку.Но что, если мы не хотим или не можем устанавливать ширину отдельных элементов, действительно ли это нужно? Или есть способ просто указать flexbox на разрыв строки в определенных точках?
) между двумя гибкими элементами, два достигают чего-то похожего . В сущности:
/ * Вставка этой свернутой строки между двумя гибкими элементами сделает
* гибкий элемент, который появляется после того, как он переходит в новую строку * /
.перерыв {
флекс-основа: 100%;
высота: 0;
}
display: flex
и flex-wrap: wrap
и что гибкие элементы добавляются в этот контейнер:
.container {
дисплей: гибкий;
flex-wrap: обертка;
}
Вставка гибкого элемента с разрывом строки
flex-grow: 1
, и у них нет определенной ширины
или flex-base
):
.break
element, чтобы проиллюстрировать его положение и поведение): .break
должен занимать 100% ширины контейнера (потому что мы установили flex-base: 100%
), ломающийся гибкий элемент должен располагаться в отдельной строке для этого. Он не может разделить строку с первым элементом, поэтому он перейдет в новую строку, в результате чего первый элемент останется в одной строке. Затем первый элемент будет расти, чтобы заполнить оставшееся пространство (поскольку мы установили flex-grow: 1
).Та же логика применима и ко второму элементу.
flex-direction: column
, и установите ширину
(а не высоту
) на 0
для нашего разрушающего элемента:
/ * Использовать свернутый столбец для перехода на новый столбец * /
.break-column {
флекс-основа: 100%;
ширина: 0;
}
order
. Мы также можем перейти к новой строке без изменения ширины любого элемента содержимого, и мы можем полагаться исключительно на flex-grow
для распределения пространства в макете сетки. flex-grow
для распределения пространства (вместо использования flex-base
или width
, которые вам придется пересчитать, как только вы добавите или удаленные элементы):
.элемент {flex-grow: 1; }
.item-wide {flex-grow: 3; }
flex-base
или ширины
хотя бы для некоторых элементов (или создания вложенного макета flexbox с одним гибким элементом для каждой строки). Если бы у всех элементов были разные значения flex-grow
, ничто не заставило бы их перейти в новую строку, все они просто втиснулись бы в одну строку вместе: flex-grow
:
.item {flex-grow: 1; }
.item-wide {flex-grow: 3; }
flex-grow
:
(а не высота
) должна быть установлена на 0
для элемент для сворачивания при использовании в макете столбца):
/ * Вставка свернутой строки между двумя гибкими элементами приведет к
* гибкий элемент, который появляется после того, как он переходит в новую строку * /
.перерыв {
флекс-основа: 100%;
высота: 0;
}
/ * Используйте свернутый столбец для перехода к новому столбцу * /
.break-column {
флекс-основа: 100%;
ширина: 0;
}
, ширину
или содержимое в гибких элементах, вероятно, предпочтительнее способ управления потоком элементов в макете flexbox. Но вставка гибких элементов с разрывом строки доступна и проста в использовании, она работает, и эта техника обладает некоторыми уникальными характеристиками, которые могут пригодиться. Flexbox | Codrops
Сводка свойств Flexbox
Создание гибкого макета: контейнер Flex и элементы
display
элемента на flex
или inline-flex
.
.flex-container {
дисплей: гибкий;
}
/* или же */
.flex-container {
дисплей: встроенный гибкий;
}
: flex
создает гибкий контейнер на уровне блоков; display: inline-flex
создает гибкий контейнер встроенного уровня. Гибкий контейнер становится гибким контекстом для своих прямых потомков. Понятия и терминология
Гибкие оси
ширина
или высота
, в зависимости от того, какое из них находится в главном измерении. ширины
или высоты
, которое находится в поперечном измерении. Гибкие линии
flex-wrap
: flex-wrap
. Каждая строка содержит хотя бы один гибкий элемент, если только сам гибкий контейнер не является полностью пустым. Режимы записи
direction
, направление гибкой линии также изменится, изменив направление расположения гибких элементов. flex-flow
. direction
. Свойства Flexbox: Свойства контейнера Flex
The
flex-direction
Свойство
flex-direction: строка | ряд-обратный | столбец | столбец-обратный
flex-direction
указывает, как элементы гибкости размещаются в гибком контейнере, путем установки направления главной оси гибкого контейнера.Это определяет направление, в котором располагаются гибкие элементы. На направление осей влияет режим письма и направленность текста (продолжить чтение)., строка
, за исключением того, что направления main-start и main-end меняются местами. Основная ось гибкого контейнера имеет противоположную ориентацию по сравнению с текущим режимом записи. будет горизонтальным по отношению к языку.
, за исключением того, что направления main-start и main-end меняются местами. writing-mode
и direction
, они изменяют только направление потока.Порядок рисования, порядок речи и последовательные порядки навигации не затрагиваются. flex-direction
к гибкому контейнеру. rtl
(справа налево). Посмотрите, как это влияет на направление главной оси и, следовательно, на направление, в котором расположены элементы. flex-wrap
(см. Следующий раздел). Гибкая пленка
Свойство
flex-wrap: nowrap | упаковка | перемотка
flex-wrap
управляет тем, является ли гибкий контейнер однострочным или многострочным, а также направлением поперечной оси, которое определяет направление, в котором новые линии укладываются на дюйм. flex-direction
выше). flex-direction
выше). wrap
, за исключением того, что перекрестное начало и поперечное направление меняются местами. Это означает, что дополнительные гибкие линии добавляются в направлении, противоположном поперечной оси. flex-wrap
к гибкому контейнеру.Обратите внимание, что для всех других свойств Flexbox установлены значения по умолчанию. flex-wrap
, вы можете изменить это и заставить их переноситься по нескольким строкам. Гибкий поток
Свойство
гибкий поток: <'гибкое направление'> <'гибкое обертывание'>
flex-direction
и flex-wrap
, которые вместе определяют основную и поперечную оси гибкого контейнера. flex-flow
представляет собой конкатенацию начальных значений свойств flex-direction
и flex-wrap
:
flex-flow: row nowrap;
flex-flow
к гибкому контейнеру. В примерах показан результат применения значений строки
и столбца
свойства flex-direction
с различными значениями из свойства flex-wrap
.Попробуйте изменить значения свойства flex-flow
, включив в него значения row-reverse
и column-reverse
свойства flex-direction
, чтобы увидеть, как это меняет макет. flex-flow
чувствительны к режиму записи. В вертикальном японском языке, например, гибкий контейнер row размещает свое содержимое сверху вниз, как показано в этом примере: The
justify-content
Property
justify-content: flex-start | гибкий конец | центр | пространство между | пространство вокруг
justify-content
выравнивает гибкие элементы вдоль главной оси текущей строки гибкого контейнера. Это делается после того, как были разрешены любые гибкие длины и любые автоматические поля. Обычно это помогает распределить дополнительное свободное пространство, оставшееся, когда либо все гибкие элементы в строке негибкие, либо гибкие, но достигли своего максимального размера.Он также дает некоторый контроль над выравниванием элементов, когда они выходят за пределы строки. flex-start
. В противном случае первый гибкий элемент в строке размещается на краю основного начала линии, последний гибкий элемент в строке находится на краю основного конца строки, а остальные гибкие элементы в строке распределяются таким образом что интервал между любыми двумя соседними элементами одинаков. center
. В противном случае гибкие элементы в строке распределяются таким образом, что расстояние между любыми двумя соседними гибкими элементами в строке является одинаковым, а расстояние между первым / последним гибкими элементами и краями гибкого контейнера составляет половину расстояния между гибкие элементы. justify-content
к гибкому контейнеру. Для других свойств Flexbox установлены значения по умолчанию. align-items
Property
align-items: flex-start | гибкий конец | центр | исходный уровень | протяжение
align-items
аналогично свойству justify-content
, но вместо выравнивания гибких элементов по главной оси, align-items
используется для выравнивания гибких элементов по поперечной оси (перпендикулярно к главная ось). min-height
/ min-width
/ max-height
/ max-width
.Обратите внимание, что если высота гибкого контейнера ограничена, это значение может вызвать переполнение содержимого гибких элементов. align-items
к гибкому контейнеру. Для других свойств Flexbox установлены значения по умолчанию. align-items
равно baseline
, обратите внимание, как базовая линия чисел в гибких элементах выровнена (появляется розовая линия). align-self
позволяет переопределить выравнивание, указанное в align-items
для отдельных гибких элементов. align-content
Свойство
align-content: flex-start | гибкий конец | центр | пространство между | космическое пространство | протяжение
align-content
выравнивает линии гибкого контейнера внутри гибкого контейнера, когда есть дополнительное пространство на поперечной оси, аналогично тому, как justify-content
выравнивает отдельные элементы внутри главной оси.Это свойство не действует, если гибкий контейнер имеет только одну строку. flex-start
. В противном случае поперечный край первой строки в гибком контейнере помещается на поперечный край содержимого гибкого контейнера, поперечный край последней строки в гибком контейнере помещается на поперечное содержимое. край гибкого контейнера, а оставшиеся линии гибкого контейнера распределяются таким образом, чтобы расстояние между любыми двумя соседними строками было одинаковым. flex-start
. В противном случае свободное пространство делится поровну между всеми линиями, увеличивая их поперечный размер. align-content
к гибкому контейнеру. Для всех свойств Flexbox установлены значения по умолчанию, за исключением того, что для свойства flex-wrap
установлено значение wrap
, чтобы элементы были распределены по нескольким строкам, поскольку, как упоминалось выше, только свойство align-content
работает с гибким контейнером, который является многострочным. Свойства Flexbox: Свойства элементов Flex
Заказ
Свойство
порядок: <целое число>
order
можно использовать для изменения этого порядка. order
управляет порядком, в котором гибкие элементы появляются в своем гибком контейнере, назначая их порядковым группам . Он принимает одно значение
, которое указывает, к какой порядковой группе принадлежит гибкий элемент. порядка
также может принимать отрицательные значения. order
. Порядок обхода по умолчанию для режимов последовательной навигации (например, циклический переход по ссылкам, например, с использованием nav-index
или tabindex
) также не изменяется (за исключением Firefox, который изменяет порядок обхода ссылок в зависимости от визуального порядка. ). Следовательно, вы должны использовать свойство order
только для визуального, а не логического изменения порядка содержимого. align-self
Свойство
выровнять себя: авто | гибкий старт | гибкий конец | центр | исходный уровень | протяжение
justify-content
, но в перпендикулярном направлении. align-items
устанавливает выравнивание по умолчанию для всех элементов гибкого контейнера.Свойство align-self
позволяет переопределить это выравнивание по умолчанию для отдельных гибких элементов. Чтобы полностью понять значения и концепции, лежащие в основе этого свойства, см. Описание свойства align-items
. auto
вычисляется как значение align-items
в контейнере элемента или stretch
, если элемент не имеет родителя.Другими словами, элемент будет выровнен на основе значения по умолчанию или значения, указанного для свойства align-items
. min-height
/ min-width
/ max-height
/ max-width
. Обратите внимание, что если высота гибкого контейнера ограничена, это значение может вызвать переполнение содержимого гибкого элемента. align-items
со значением center
.Любое значение, примененное к третьему элементу (с номером три) с использованием align-self
, переопределит значение, примененное с использованием align-items
. Измените значение свойства align-self
, чтобы увидеть, как это влияет на выравнивание элемента. The
flex-grow
Свойство
flex-grow: <число>
flex-grow
устанавливает коэффициент роста flex гибкого элемента.Коэффициент роста гибкости - <число>
, который определяет, насколько гибкий элемент будет расти относительно остальных гибких элементов в гибком контейнере при распределении положительного свободного пространства . Начальное значение - ноль (0), отрицательные числа недопустимы. flex-grow
. Чем выше значение flex-grow
, тем больше элемент может расти относительно других элементов. flex-grow
значение 2
(два).Элемент с flex-grow: 2
будет расти вдвое больше, чем элемент с flex-grow: 1
- он получит вдвое больше места, чем последний. Итак, на каждый пиксель, который получает второй элемент, первый увеличивается на два пикселя. flex-grow
в следующей демонстрации, чтобы увидеть, как растут элементы. flex-grow
можно анимировать, за исключением значений между нулевым (0) и другими значениями. flex-grow
обычно используется вместе со свойствами flex-shrink
и flex-base
в сокращенном свойстве flex
. Гибкая термоусадочная машина
Свойство
flex-shrink: <число>
flex-shrink
устанавливает коэффициент усадки flex гибкого элемента.Коэффициент усадки гибкого элемента равен <число>
, который определяет, насколько гибкий элемент будет сжиматься по сравнению с остальными гибкими элементами в гибком контейнере при распределении отрицательного свободного пространства . Коэффициент усадки при изгибе умножается на основу изгиба (см. flex-base
) при распределении отрицательного пространства. Начальное значение - ноль (1), что означает, что элементы не сжимаются по умолчанию, а отрицательные числа недопустимы. flex-shrink
, вы можете распределить это отрицательное пространство по гибким элементам. Отрицательное пространство распределяется пропорционально flex-base
, умноженному на flex-shrink
ratio, где гибкое основание является начальным основным размером гибкого элемента, до того, как свободное пространство распределяется в соответствии с коэффициентами гибкости. flex-shrink
значение 2
(два). Элемент с flex-shrink: 2
будет сжиматься вдвое больше, чем элемент с flex-shrink: 1
- он получает вдвое больше отрицательного пространства, чем последний. Таким образом, на каждый пиксель, на который сокращается второй элемент, первый элемент уменьшается на два пикселя. Чем выше значение flex-shrink
, тем больше элемент будет сжиматься по сравнению с другими элементами. 500 пикселей
.Каждый из четырех элементов имеет основную основу размера (или основу гибкости) 200 пикселей
. Предметы (вместе взятые), очевидно, имеют больший основной размер, чем контейнер. Поскольку это макет Flexbox, элементы автоматически сжимаются, чтобы поместиться в их контейнер. Однако с помощью свойства flex-shrink
можно управлять коэффициентом сжатия элементов. Попробуйте ввести другие значения для свойства flex-shrink
в следующей демонстрации, чтобы увидеть, как сжимаются элементы. flex-shrink
можно анимировать, за исключением значений между нулевым (0) и другими значениями. flex-shrink
обычно используется вместе со свойствами flex-base
и flex-grow
в сокращенном свойстве flex
. Гибкая основа
Свойство
гибкая основа: авто | <'ширина'>
flex-base
принимает те же значения, что и свойство width
, и задает основу гибкости: исходный основной размер (см. Концепции и терминологию) гибкого элемента, прежде чем свободное пространство будет распределено в соответствии с гибкостью коэффициенты (см. flex-shrink
и flex-grow
). auto
, flex-base
разрешается так же, как width
в горизонтальных режимах записи: процентные значения для свойства flex-base
устанавливаются относительно внутреннего основного размера гибкого контейнера. Кроме того, flex-base
определяет размер блока содержимого элемента, если иное не указано в свойстве box-sizing
.
равна auto
, используемая основа гибкости - это значение свойства основного размера гибкого элемента.(Это может быть ключевое слово auto
, которое определяет размер гибкого элемента в зависимости от его содержимого.) flex-base
обычно используется вместе со свойствами flex-shrink
и flex-grow
в сокращенном свойстве flex
. flex-base
используется в сокращенном варианте flex
. Свойства flex-shrink
и flex-grow
настроены таким образом, что элементы не растут и не сжимаются.Значение, указанное с использованием flex-base
, определяет основной размер каждого элемента. Попробуйте изменить значения всех трех свойств в сокращении flex
, чтобы увидеть, как изменяется ширина элементов. Например, попробуйте использовать другое значение flex-grow
, чтобы увидеть, как изменится размер элемента после распределения положительного пространства. The
flex
Свойство
гибкость: нет | [<'flex-grow'> <'flex-shrink'>? || <'гибкая основа'>]
flex
- это сокращенное свойство для установки свойств flex-grow
, flex-shrink
и flex-base
. flex
для определения основного размера элемента. Если элемент не является гибким элементом, flex
не действует. 0 1 авто
. Свойства flex-grow
и flex-shrink
не являются обязательными и могут быть опущены в декларации flex
. flex-grow
опущено, оно устанавливается на 1
. Обратите внимание, что 1
не является начальным значением свойства flex-grow
! Это только значение, используемое, когда flex-grow
опущено в сокращенном объявлении. flex-shrink
опущено, оно устанавливается на 1
. Обратите внимание, что коэффициент усадки при изгибе умножается на основу изгиба при распределении отрицательного пространства.(См. flex-shrink
) 0%
. flex-grow
и flex-shrink
отличаются от значений по умолчанию, если они не указаны в сокращении flex
. Это позволяет сокращению flex
лучше справляться с наиболее распространенными случаями. flex
и их значения: flex: 0 1 auto
, которое является начальным значением.Это значение определяет размер элемента на основе свойств width
/ height
. (Если свойство основного размера элемента равно , авто
, это изменит размер гибкого элемента на основе его содержимого.) Делает гибкий элемент негибким, когда есть положительное свободное пространство, но позволяет ему уменьшаться до своего минимального размера, когда есть недостаточно места. flex: 1 1 auto
. Это значение определяет размер элемента на основе свойств width
/ height
, но делает их полностью гибкими, так что они поглощают любое свободное пространство вдоль главной оси.Если все элементы либо flex: auto
, flex: initial
, либо flex: none
, любое положительное свободное пространство после изменения размеров элементов будет равномерно распределено между элементами с flex: auto
. flex: 0 0 auto
. Это значение определяет размер элемента в соответствии со свойствами width
/ height
, но делает гибкий элемент полностью негибким.Это похоже на исходный , за исключением того, что гибкие элементы не могут сжиматься даже в ситуациях переполнения.
flex:
. Это значение делает гибкий элемент гибким и устанавливает для гибкого базиса нулевое значение, в результате чего элемент получает указанную долю свободного пространства в гибком контейнере. Если все элементы в гибком контейнере используют этот шаблон, их размеры будут пропорциональны указанному коэффициенту гибкости. min-width
или min-height
. flex
в следующей демонстрации, чтобы увидеть, как оно влияет на гибкие элементы. Вы также можете использовать разные значения flex
для каждого элемента.Демонстрация настроена таким образом, что элементы имеют гибкую основу 100px
и не сжимаются и не растут. Поиграйте со значениями по своему вкусу, чтобы лучше понять, как свойство работает с разными значениями. Примеры
Вертикальное и горизонтальное центрирование
.container {
дисплей: гибкий;
}
justify-content
, вы центрируете элемент по главной оси (по горизонтали), а используя свойство align-items
, вы центрируете элемент по вертикали.
.container {
дисплей: гибкий;
align-items: center;
justify-content: center;
}
Многоколонный макет равной высоты «Святой Грааль»
.container {
дисплей: гибкий;
align-items: stretch;
}
flex
для любых значений. Ниже приведена живая демонстрация, показывающая в действии столбцы одинаковой высоты.Ширина двух столбцов задается с помощью свойства flex-base
как части сокращения flex
вместе с коэффициентом роста гибкости. flex-direction
.
@media screen и (max-width: 500 пикселей) {
.container {
flex-direction: столбец;
}
}
order
. Итак, если у вас есть три столбца, например, и один из этих столбцов содержит рекламу, и вы хотите, чтобы эти объявления отображались вверху или внизу на маленьких экранах или даже где-то посередине, вы можете один раз контролировать порядок отображения. столбцы накладываются друг на друга на экранах меньшего размера. липкий нижний колонтитул
flex-direction
. Затем у вас есть основной раздел содержимого для расширения / увеличения с помощью flex-grow
, тем самым сдвигая нижний колонтитул вниз до нижней части страницы. Однако высота страницы должна быть равна высоте области просмотра или больше.
тело {
дисплей: гибкий;
/ * убедитесь, что он не меньше окна просмотра * /
мин-высота: 100vh;
/ * раскладываем элементы по вертикали * /
flex-direction: столбец;
}
раздел.содержание {
flex-grow: 1;
}
Гибкая навигация
justify-content
, вы можете распределить элементы с промежутком между ними.
ul.navigation {
ширина: 100%;
дисплей: гибкий;
justify-content: пробел между;
}
@media screen и (max-width: 430px) {
.navigation {
flex-direction: столбец;
/ * другие общие стили при необходимости * /
}
}
И многое другое!