Дополнительно
Улучшенный способ установки расстояния между элементами flexbox
Чтобы установить минимальное расстояние между элементами flexbox, я использую margin: 0 5px
для .item
и margin: 0 -5px
для container. Для меня это кажется хаком, но я не могу найти лучшего способа сделать это.
[Пример][1]
#box {
display: flex;
width: 100px;
margin: 0 -5px;
}
.item {
background: gray;
width: 50px;
height: 50px;
margin: 0 5px;
}
<div id='box'>
<div class='item'></div>
<div class='item'></div>
<div class='item'></div>
<div class='item'></div>
</div>
648
20
border-spacing
для таблиц (за исключением CSS свойстваgap
, которое не очень хорошо поддерживается в большинстве браузеров, caniuse).Поэтому добиться того, о чем вы просите, немного сложнее.
По моему опыту, самый "чистый" способ, который не использует
:first-child
/:last-child
и работает без каких-либо изменений вflex-wrap:wrap
, это установитьpadding:5px
для контейнера иmargin:5px
для дочерних элементов. Это создаст10px
зазор между каждым дочерним элементом и между каждым дочерним элементом и его родителем.[Demo](http://jsfiddle.net/7XD8s/)
Это не хак. Тот же метод используется Bootstrap и его сетки, хотя, вместо маржи, загрузочный использует отступы для своей суровостью.
адаптируемых блоков CSS и в Calc()
Здравствуйте, ниже-это мое рабочее решение для всех браузеров, поддерживающих спецификации Flexbox. Никакого отрицательного поля, не хаки, не обойти, чистый CSS.
[Скрипку Демо][1]
в
в .элемента { дисплей: флекс; флекс-направление: подряд; флекс-обертывание: обертывание; оправдать-содержание: пространство-между; }
в
Вы можете использовать прозрачные границы.
Я размышлял над этим вопросом, пытаясь построить гибкую модель сетки, которая может вернуться к модели таблиц + таблица-ячейка для старых браузеров. И границы для желобов колонок показались мне лучшим подходящим вариантом. Т.е. у ячеек таблицы нет полей.
Например.
Также обратите внимание, что для flexbox необходимо
min-width: 50px;
. Гибкая модель не будет работать с фиксированными размерами, если вы не сделаетеflex: none;
на конкретном дочернем элементе, который вы хотите сделать фиксированным и, следовательно, исключить из числа"гибких"
. http://jsfiddle.net/GLpUp/4/. Но все колонки вместе сflex:none;
уже не являются гибкой моделью. Вот что-то более близкое к гибкой модели: http://jsfiddle.net/GLpUp/5/Таким образом, вы можете нормально использовать поля, если вам не нужно возвращение табличных ячеек для старых браузеров. http://jsfiddle.net/GLpUp/3/
Установка
background-clip: padding-box;
будет необходима при использовании фона, так как в противном случае фон будет перетекать в прозрачную область границы.Это будет работать для всех случаев, даже если есть несколько строк или любое количество элементов.
Мы используем [
отображение: сетка;
]1 и его свойства.в
в
Недостатком данного способа является в Mobile Опера мини не будет поддерживаться и на ПК это работает только после того, как в IE10.
Примечание Для полной совместимости браузера, включая ИЕ11, пожалуйста, использовать Autoprefixer
ОТВЕТ
Дон'т думаю, что это старое решение, это's по-прежнему один из лучших, если вы хотите только одну строку элементы и будет работать со всеми браузерами.
Этот метод используется сочетание УСБ брат, так что вы можете манипулировать им много других способов, но если ваша комбинация-это неправильно, это может вызвать проблемы также.
Приведенный ниже код будет делать трюк. В этом методе, нет необходимости, чтобы дать
маржа: 0 -5 пикселей;
к#Поле
фантик.Рабочий образец для вас:
в
в
Вы можете использовать
& > * + *
в качестве селектора для эмуляции флекс-зазор (на одну строку):в
в
Если вам нужна поддержка гибкий обертывание, вы можете использовать элемент программы-оболочки:
в
в
Позвольте'ы сказать, если вы хотите установить
значение 10px
пространство между элементами, вы можете просто установить.пункт {маржи-право:значение 10px;}
для всех, и сбросить его в последний раз.пункт:в прошлом-ребенок {маржи-право:0;}`Вы также можете использовать селектор общего родственный
~
или+
родственный установить левое по пунктам, кроме первого.пункт ~ .пункт {маржи-слева:значение 10px;}
или.пункт:не(:в прошлом-ребенок) {маржи-право: значение 10px;}
Модель Flexbox настолько умно, что оно автоматически пересчитывает и равномерно распределяет сетки.
в
в
Если вы хотите разрешить гибкий обруч, см. Следующий пример.
в
в
Я нашел решение, которое базируется на общих селектор брат,
~
, и позволяет бесконечной вложенности.См. этот код рабочий пример пера
В основном, внутри контейнеров столбца, каждый ребенок, который предшествует другой ребенок попадает в верхнее поле. Кроме того, внутри каждого контейнера подряд, каждый ребенок, который предшествует другим достается левому краю.
в
в
Переходя от Сава'ы ответ, здесь'ы немного улучшенная версия, которая позволяет установить фиксированный интервал между элементами без окружающих полей.
http://jsfiddle.net/chris00/s52wmgtq/49/
Также в комплект входит сафари на "-в WebKit-флекс" по версии.
А контейнер Flex с -х (минус) маржа и гибкий предметы с х (положительные) маржа или прокладка как привести в желаемый визуальный результат: Гибкий предметы исправлена разрыв 2х между друг друга.
Похоже, это просто вопрос предпочтений, следует ли использовать маржи или обивка на элементы изгиба.
В этом примере, элементы Flex являются динамически масштабируется в целях обеспечения фиксированного зазора:
Я использовал это для завернутых и фиксированную ширину столбцов. Ключевым моментом здесь является
расч()
Образец СКС
Полный образец сайт CodePen
В конце концов они добавят этот пробел свойство элемента. До тех пор вы могли бы использовать CSS сетки, вместо которой уже есть "щель" собственность, и только одну строку. Приятнее, чем иметь дело с полями.
С адаптируемых блоков, создавая водостоки-это боль, особенно когда накрутка идет речь.
Вы должны использовать отрицательные поля (как показано в вопросе):
... или изменить HTML (как показано в другой ответ):
... или что-то еще.
В любом случае, вам нужен грязный хак, чтобы заставить его работать, потому что на основе не'т предоставить "
в флекс-Гапа в
" особенность (по крайней мере сейчас).Вопрос желобов, однако, является простым и легким в верстку сетки.
Таблицы спецификаций обеспечивает свойства, которые создают пространство между элементами сетки, игнорируя при этом расстояние между элементами и контейнер. Этими свойствами являются:
сетка-колонки-ГАП
сетка-строка-пробел
сетка-ГАП
(сокращенное оба свойства выше)Недавно, спецификация была обновлена, чтобы соответствовать УСБ коробка выравнивания модуля, который обеспечивает набор свойств выравнивания для использования во всех моделях коробки. Поэтому свойства сейчас:
разрыв
(стенография)Однако, не все сетки-поддержка браузеров поддержка новых свойств, поэтому я'будете использовать оригинальные версии в демо ниже.
Также, если расстояние между элементами и контейнер,
отступ
на контейнер работает просто отлично (см. Третий пример в демо ниже).Спецификации:
в
в
Более подробная информация:
Используя адаптируемых блоков в своем решении я'вэ используется в <код>обосновать содержание</код> собственность на родительский элемент (контейнер) и я'вэ указанного поля внутри в <код>в гибком основании на< код> По свойствам элементов. Проверить фрагмент кода ниже:
в
в
Здесь'с моим решением, что не'т требует установки любых классов на дочерние элементы:
Использование:
Тот же метод может быть использован для нормальной гибкий строк и столбцов в дополнение к встроенным пример, приведенный выше, и расширенный с классами для расстояния другие, чем в 4px.
Почему бы не сделать это такой:
При этом используется смежными одноуровневый селектор, чтобы дать все.элемент элементы, кроме первого
запас-ушел
. Благодаря спецификации Flexbox, это даже приводит к одинаковой ширины элементов. Это также может быть сделано с маржи-топ с вертикальным расположением элементов и, конечно.Я часто использовать оператор + для таких случаев
в
в
Я считаю, что проще всего это сделать с помощью процентов и просто позволить полям соответствовать вашей ширине.
Это означает, что в итоге у вас получится что-то вроде этого, если использовать ваш пример
Это означает, что ваши значения основаны на ширине, что может быть не всем удобно.
Собственность # Усс
пробел
:Появился новый
разрыв
свойства CSS для нескольких столбцов, адаптируемых блоков и макетов сетки, которая работает в некоторых браузерах сейчас! (См. Могу ли я использовать ссылка 1; Ссылка 2).в
в
Как писать, это работает только в Firefox, к сожалению.
Columnify - Соло класс для n столбцов
Адаптируемых блоков и СКС
Адаптируемых блоков и CSS
в
в
Играть с ним на [JSFiddle][1].