Как проверить наличие пробелов в макете Flexbox

Firefox реализовал gap для макета flexbox, в то время как другие браузеры, такие как Chrome, поддерживают только gap для макета сетки. Это вызывает различия между браузерами, если вы добавляете gap в контейнер flexbox. Функция CSS @supports была создана для ситуаций, когда браузеры еще не поддерживают определенные функции. Так как же проверить поддержку gap во flexbox?

<style>
.flex {
  display: flex;
  gap: 20px;
}
</style>

<section class = "flex">
  <div>Item One</div>
  <div>Item Two</div>
</section>

Обратите внимание: даже если я использую @supports grid-gap вместо gap, Firefox все равно применит пробел к контейнеру flexbox, в то время как Chrome ничего не применит, поэтому это решение не сработает.

Я ищу последовательность, так как это будет огромной проблемой в будущем, если мы начнем применять пробелы к контейнерам flexbox, и это работает в новых реализациях браузерами, но не в более старых реализациях спецификации без возможности тестирования поддержки. .

Я НЕ ищу решение для JavaScript.

почему бы не создать макет с поддерживаемыми функциями, пока пробел не будет хорошо поддерживаться?

Temani Afif 28.03.2019 00:13

для флексбоксов зазор имеет значение только для макетов, где гибкие элементы заполняет ось сгиба, а если они сворачивать в несколько строк.. почему бы не использовать вместо этого margin - см. несколько примеров here, here и here

kukkuz 28.03.2019 02:20

Макет уже построен с использованием flexbox и полей по умолчанию для браузеров, которые не поддерживают сетку. Для браузеров, которые поддерживают сетку, существует прогрессивное улучшение (с использованием @supports), позволяющее использовать зазор и сетку и избавиться от полей. Проблема в том, что Firefox поддерживает сетку, но также поддерживает пробел на flexbox. Поэтому я не могу избавиться от отрицательных полей. Итак, нет ли способа отличить поддержку пробела в CSS браузера во flexbox без JavaScript? Потому что это именно то, для чего @supports должен был быть разработан.

Daryl 28.03.2019 15:16
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
15
3
3 325
2

Ответы 2

Насколько я понимаю, нет никакого способа добиться этого. Это все еще открытая дискуссия

https://github.com/w3c/csswg-drafts/issues/3559.

https://medium.com/@schofeld/mind-the-flex-gap-c9cd1b4b35d8

Дополнительное примечание: вы, вероятно, захотите отметить запрос на добавление поддержки в Chromium:

https://bugs.chromium.org/p/chromium/issues/detail?id=762679

Старый пост, но в любом случае - помимо новой поддержки MacOS и iOS "промежутка" для Flexbox, вам все еще нужно предоставить его для более старых версий MacOS и iOS. По сути, простая проверка с помощью @supports (gap: ... ) ничего не даст, потому что Safari думает: «О, это пробел в Gridbox». Но - если вам нужно сделать эту проверку - вам не нужно будет проверять поддержку "гэпа". Вы можете написать ранее современный код со всем этим «зазором», а затем просто использовать @support not (соотношение сторон: 1/1) (например, вам просто нужно проверить, действительно ли старый Safari не поддерживает такой тег css) — и затем внутри вы можете написать резервные варианты для старого Safari. Отлично работает)

Другие вопросы по теме