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






Насколько я понимаю, нет никакого способа добиться этого. Это все еще открытая дискуссия
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. Отлично работает)
почему бы не создать макет с поддерживаемыми функциями, пока пробел не будет хорошо поддерживаться?