Статьи

Сетка системы Bootstrap против Сьюзи: сравнение

В настоящее время при разработке веб-сайтов мы можем выбирать из множества сеточных структур. Из многих фреймворков одним из самых любимых и, тем не менее, ненавистных фреймворков является Bootstrap .

Сегодня я хотел бы познакомить вас с немного менее известной структурой, которая завоевала популярность у многих людей — Сьюзи . В этой статье я покажу сравнение между сеткой Сьюзи и Bootstrap, чтобы вы могли полностью понять, что такое Сьюзи, и захотите ли вы попробовать ее.

Что такое Сьюзи?

Чтобы ответить на этот вопрос, мы должны сначала ответить «Что такое сетка?»

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

Базовый пример сетки

Эти вертикальные линии помогают разделить страницу на два вида вертикальных пространств. Мы называем более широкое пространство столбцом, а более узкое пространство — желобом. Где мы упорядочиваем и размещаем элементы — это то, что мы называем макетом.

Сетка столбов и желобов

В прошлом использовалось много видов сеточных структур, которые вы можете узнать. Вот некоторые примеры:

  • Сетка 960
  • Сетка 1140px
  • начальная загрузка
  • Фонд

Все эти рамки имеют одну общую черту. У каждого из них уже есть сетка, и вы можете настроить ее в ограниченной степени.

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

Вот для чего Сьюзи.

Сьюзи — это верстка двигателя. Он предоставляет вам инструменты для создания настраиваемой структуры сетки, которая соответствует потребностям вашего сайта. Это дает вам гибкость и свободу играть с вашим дизайном.

Что такое Bootstrap?

Bootstrap — это больше, чем просто сетка. Это полнофункциональный фреймворк и инструментарий, который предоставляет нам:

  • Сеточная система
  • Стили для общих веб-элементов, таких как навигация, формы, оповещения и значки.
  • jQuery плагины для сложных элементов, таких как аккордеоны и карусели.

Как только вы поймете, что такое Susy и Bootstrap, легко заметить, что мы не можем логически сравнивать между ними. Это принципиально разные вещи для начала.

Поэтому самое близкое сравнение, которое мы можем провести, это Сьюзи и система сетки в Bootstrap. Есть несколько вещей, которые мы можем сравнить, когда смотрим на это таким образом. Вот некоторые вещи, которые мы рассмотрим в этой статье:

  • Препроцессор Язык
  • Использование разметки
  • Возможность настройки сетки
  • Возможность реагировать на несколько точек останова
  • Соединение HTML и CSS
  • Документация и Сообщество

Препроцессор Язык

Языки препроцессора важны, потому что вам нужны инструменты, чтобы соответствовать вашему рабочему процессу, а не наоборот. Давайте сначала проясним, что работает на чем.

Хотя Bootstrap изначально создавался с Less , теперь его можно использовать как с Sass, так и Less . Таким образом, язык не является препятствием для использования Bootstrap.

Последняя версия Susy (Susy 2) работает только с Sass версии 3.3 и выше, поскольку требует использования карт Sass . Существует также более старая версия, если вы можете использовать Sass только с версией ниже 3.3. К сожалению, Сьюзи не поддерживает Меньше.

Использование разметки

Давайте рассмотрим простой пример для сравнения разметки Bootstrap и Susy.

Пример макета

Bootstrap требует использования классов, таких как .row и .col-md-4 всей разметке для правильного оформления HTML.

Это также то место, где возникает большинство критических замечаний Bootstrap. Критики утверждают, что эти классы являются презентационными классами, которых не должно быть в разметке.

Вот разметка, которая требуется Bootstrap с некоторыми примерами основанных на сетке классов:

 <div class="container-fluid"> <div class="row"> <div class="col-md-8 content"><h2>Content</h2></div> <div class="col-md-4 sidebar"><h2>Sidebar</h2></div> </div> </div> 

Для сравнения, вот что требует Сьюзи.

 <div class="wrap"> <div class="content"><h2>Content</h2></div> <div class="sidebar"><h2>Sidebar</h2></div> </div> 

HTML-код Сьюзи намного проще и семантичнее по сравнению с Bootstrap. Однако недостаточно просто написать HTML-код с помощью Susy. Вам нужно будет добавить несколько стилей в .content и .sidebar чтобы они правильно отображались.

Давайте сделаем быструю настройку, чтобы продемонстрировать, как работает susy.

Во-первых, обратите внимание, что Bootstrap применяет желоба в качестве отступов к обоим краям каждого столбца.

Водосточные желоба

По умолчанию Сьюзи применяет желоба в качестве полей справа от каждого столбца. Чтобы создать ту же сетку, что и Bootstrap, вам нужно изменить настройку gutter-position на карте $susy .

 $susy: ( gutter-position: inside ) 

Для каждой сетки Susy вам нужно будет добавить container миксин для класса .container . В случае выше, контейнер будет .wrap и имеет максимальную ширину 1140 пикселей.

 .wrap { @include container(1140px); } 

В нашем примере с Bootstrap используются 8 столбцов для контента и 4 столбца для .sidebar . Вам нужно будет использовать span mixin в Susy, чтобы создать макеты для .content и .sidebar , которые будут занимать 8 столбцов и 4 столбца соответственно.

 .content { @include span(8 of 12); } .sidebar { @include span(4 of 12); } 

Разметка для Susy более чистая по сравнению с Bootstrap, но для запуска и запуска начальной сетки требуется больше работы, потому что Susy требует от вас их настройки самостоятельно, в то время как Bootstrap уже предоставил вам необходимые стили.

Возможность настроить сетку

Bootstrap предлагает вам возможность настраивать ваши сетки в определенной степени. Вы можете свободно изменять такие вещи, как:

  • Число столбцов
  • Размер желоба
  • Размеры 4 доступных точек останова ( xs , sm , md и lg )

Вы можете настроить эти сетки из двух разных областей:

  1. Измените их через вкладку настройки или
  2. Измените переменные в части _variables любого препроцессора, который вы используете (Sass или Less).

В обоих случаях столбцы и желоба находятся в разделе «система координат», а медиазапросы — в разделе «точки останова медиазапросов».

Сьюзи, с другой стороны, позволяет вам многое изменить. Вы можете изменить такие вещи, как:

  • Число столбцов
  • Размер каждого отдельного столбца
  • Размер желоба
  • Как расположены желоба
  • Количество точек останова
  • Размеры точек останова
  • Поток документов слева направо или справа налево
  • Боксовая модель для сетки

… и многое другое.

Хотя другие системы сетки, такие как Singularity и GridsetApp , более известны асимметричными сетками, Susy также позволяет вам использовать такие сетки, если вы знаете, как их настроить. Вот некоторые примеры великолепных асимметричных макетов: это , это и это .

Мне особенно нравится последний выпуск Натана Форда, и он успешно воссоздал ту же асимметричную компоновку с Сьюзи . Больше нет необходимости придерживаться стандартной сетки. Сьюзи позволяет вам безумно творчески подходить к сеткам, которые вы или ваши дизайнеры создаете.

Способность легко реагировать на несколько точек останова

Как я уже упоминал выше, Bootstrap позволяет вам использовать до 4 различных точек останова для вашей сетки: xs , sm , md и lg . Эти точки останова записываются прямо в классы Bootstrap для сетки.

В приведенном выше примере, если вы изменили размер браузера до 991px, .content станет 100% контейнера, а .sidebar опустится до следующего столбца.

Предполагая, что вы хотите, чтобы .content и .sidebar половину экрана, когда в меньшем окне просмотра (ниже 991px), нередко видеть HTML, который содержит несколько аргументов точки останова, например:

 <div class="container-fluid"> <div class="row"> <div class="col-xs-6 col-md-8 content"><h2>Content</h2></div> <div class="col-xs-6 col-md-4 sidebar"><h2>Sidebar</h2></div> </div> </div> 

Принимая во внимание, что когда вы делаете это с помощью Susy, вы изменяете CSS вместо HTML. HTML-код для Susy остается, как мы видели ранее, без добавления чего-либо:

 <div class="wrap"> <div class="content"><h2>Content</h2></div> <div class="sidebar"><h2>Sidebar</h2></div> </div> 

Вместо этого вам нужно будет добавить точку останова (скажем, 991px) в файл Sass.

При этом можно перейти от подхода «сначала к мобильному» и объявить .content и .sidebar каждый, чтобы они .content .sidebar половину экрана. После 991px .content займет 8 столбцов, а .sidebar 4 столбца:

 .content { @include span(6 of 12); @media (min-width: 980px) { @include span(8 of 12); } } .sidebar { @include span(6 of 12); @media (min-width: 980px) { @include span(4 of 12); } } 

Bootstrap требует от вас аккуратного кодирования с классами HTML, и это иногда сбивает меня с толку. Когда я кодирую с помощью Bootstrap, я всегда должен помнить конкретные точки останова и должен включать правильную аббревиатуру точек останова в свои таблицы, если я хочу, чтобы они отвечали правильно.

Сьюзи, с другой стороны, оставляет HTML-код в покое и просит вас тщательно кодировать в файле Sass. Я настоятельно предпочитаю оставлять свои контрольные точки в таблице стилей, потому что мне намного легче познавать, что происходит.

В зависимости от ваших предпочтений может подойти Bootstrap или Susy. Я лично предпочитаю Susy, потому что с помощью Susy теперь я могу безопасно отделить мой HTML с помощью CSS. Что подводит меня к следующему пункту.

Соединение HTML и CSS

Любой нетривиальный сайт сегодня должен содержать много HTML и CSS. Чем теснее связаны HTML и CSS, тем сложнее поддерживать код.

Только представьте, вернулись ли мы к тому времени, когда весь CSS был закодирован прямо в HTML с использованием атрибута style . Использование классов в HTML, таких как .col-xs-6 , .col-md-4 и .row , аналогично использованию атрибута style .

Если у вас есть несколько элементов HTML, для которых требуется определенный макет с классом .col , количество раз, когда вам нужно включить эти классы, увеличивается. Что, если дизайн должен измениться, а .content должен опуститься до 7 столбцов вместо 8? Вы должны вернуться и изменить все классы HTML везде?

 <div class="col-md-7 content"> <h2>Content</h2> </div> 

Для меня это действительно трудно поддерживать.

Мое личное предпочтение — использовать Susy и хранить эти презентационные классы во внешнем CSS, к которому они принадлежат. Например, в Susy, если мне нужно было изменить .content на 7 столбцов, я должен изменить только использованный мной span mixin и сделать его 7 столбцами вместо 8!

 .content { @include span(7 of 12); } 

Я думаю, что это намного легче поддерживать, потому что HTML и CSS теперь разделены.

Поскольку при использовании Susy у вас будет возможность свободно управлять HTML и CSS, теперь вы можете применять различные методы CSS-архитектуры, такие как SMACSS , OOCSS и BEM, не задумываясь о том, как они повлияют на ваш HTML.

Документация и Сообщество

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

Документация и сообщество Bootstrap определенно надежны. Всякий раз, когда у вас возникают проблемы, вы можете публиковать свои вопросы на StackOverflow или других форумах по кодированию, и кто-то обязательно сможет вам помочь.

Сообщество Susy, однако, не такое большое (пока), и документация не такая надежная. В настоящее время в интернете также отсутствуют тематические исследования о том, как создать сайт с помощью Susy, и это действительно помешало многим подобрать его. Чтобы бороться с этим, я написал книгу об изучении Сьюзи , поэтому, пожалуйста, проверьте это, если вам интересно узнать об этом.

Вывод

Хотя Susy и Bootstrap являются принципиально разными инструментами, мы можем ясно увидеть, в чем различия, если мы сравним их две сеточные системы. Как я уже отмечал выше, я твердо верю, что у Сьюзи лучшая базовая система по сравнению с Bootstrap.

Если вам интересно узнать больше о Сьюзи, зайдите на официальный сайт , ознакомьтесь с документацией или возьмите 4 бесплатных главы из моей книги .