Flexbox vs Twitter Bootstrap (или аналогичная структура)

145

Недавно я обнаружил Flexbox, когда искал решение сделать divs одной и той же высотой, в зависимости от самого высокого.

Я прочитал следующую страницу на CSS-tricks.com, и он убедил меня, что Flexbox - очень мощный модуль для изучения и использования. Тем не менее, это также заставило меня задуматься о том, что Twitter Bootstrap (и аналогичные структуры) предлагают одни и те же функции (+, конечно, намного больше) с их сетчатыми системами.

Теперь вопросы: Каковы плюсы и минусы Flexbox? Есть ли что-то, что нельзя сделать с Flexbox, что можно сделать с помощью такой структуры, как Bootstrap (конечно, чисто говоря о сетке)? Какой из них быстрее при внедрении на веб-сайте?

Я предполагаю, что только для grid-системы он умнее для использования Flexbox, но что, если вы уже используете фреймворк, есть ли что-то Flexbox?

Есть ли какие-либо причины для выбора Flexbox "grid-системы" в рамках фреймворка?

  • 5
    Я использую Flexbox с Bootstrap.
  • 2
    Взгляните на Zurb Foundation для приложений . он полностью построен на основе Flexbox Grid System
Показать ещё 3 комментария
Теги:
flexbox

3 ответа

96

По нескольким причинам flexbox намного лучше, чем бутстрап:

  • Bootstrap использует float для создания сетчатой ​​системы, о которой многие говорят, не предназначен для Интернета, где flex-box делает обратное, сохраняя гибкость в отношении размера и содержимого элементов; такая же разница, как использование пикселей против em/rem, или как управление вашими div только с использованием полей и отступов и никогда не устанавливая заранее определенный размер.

  • Bootstrap, поскольку он использует float, требуется clearfix после каждой строки, или вы получите несогласованные divs разной высоты. Flex-box не делает этого и вместо этого проверяет самый высокий div в контейнере и придерживается его высоты.

Единственная причина, по которой я бы пошел с загрузкой через flex-box, - это отсутствие поддержки браузера (в основном IE) (уже умереть). И иногда вы получаете другое поведение от Chrome и Safari, хотя оба используют один и тот же движок webkit.

Edit:

BTW, если единственная проблема, с которой вы сталкиваетесь, - это столбцы с одинаковой высотой, для этого существует довольно много решений:

  • Вы можете использовать display: table для родителя, а display: table-cell; - для ребенка. См. Как получить ту же высоту в отображении: table-cell

  • Вы можете использовать абсолютное позиционирование для каждого div:
    position: absolute; top: 0; bottom: 0;

  • Существует также решение jquery/JS, и другое решение, которое я не могу вспомнить на данный момент, я попытаюсь добавить позже.

Edit:

Также проверьте http://chriswrightdesign.com/experiments/flexbox-adventures/ и https://scotch.io/tutorials/a-visual-guide-to-css3-flexbox-properties о том, как работает гибкая коробка.

Изменить 2: https://kyusuf.com/post/almost-complete-guide-to-flexbox-without-flexbox

  • 1
    Спасибо за ваш комментарий. Я не смог найти никаких объяснений того, что было «лучше» из этих двух, поэтому я надеюсь, что мой вопрос (и ваши, и будущие ответы) помогут людям решить. К счастью, IE 11 сейчас занимает большую долю рынка, чем предыдущие три версии вместе взятых (из которых flexbox поддерживает flexbox ), поэтому, на мой взгляд, его можно использовать безопасно. Каково ваше мнение об использовании комбинации фреймворка и flexbox ? Конечно, не обращая внимания на сеточную систему фреймворка.
  • 2
    Flexbox может быть использован для создания более мощной грид-системы более простым способом, но сам по себе не является грид-системой. Более того, в упрощенных сеточных системах представлены некоторые идеи, а ZURB Foundation for Apps использует flexbox для макета
Показать ещё 8 комментариев
5

Я не использую Flexbox (я прочитал об этом и, кажется, замечательно), но im the bootstrap frontend dev. Я предлагаю вам протестировать страницы печати Flexbox, прежде чем принимать окончательное решение. Вы знаете... иногда стили печати - страшная головная боль, и Bootstrap помогает мне, когда мне приходится разрабатывать форматы печати. ​​

  • 0
    вот почему вы должны использовать сетку с плавающей точкой только для печатаемых элементов div в сочетании с классами начальной загрузки
0

Я боюсь, что вы пропустили еще одну статью о трюках CSS:

Примечание: макет Flexbox наиболее подходит для компонентов приложения и мелкомасштабных макетов, в то время как макет сетки предназначен для более масштабных макетов.

Не означает, что вы не можете попробовать, но просто подумайте дважды. И все зависит от нужной поддержки браузера в конце.

  • 24
    Убедитесь, что вы понимаете, что в статье говорится о новом появившемся макете Grid, а не о сетке начальной загрузки.
  • 5
    Должен сказать, что я скучал по этому! :) Спасибо за исправление.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню