Susy является вспомогательным инструментом, с помощью которого можно создавать гибкие настраиваемые CSS-сетки буквально на лету.
На момент написания статьи состоялся релиз Susy 2. Если у вас есть опыт работы с предыдущей версией этого фреймворка - Susy 1, то вам наверняка еще больше понравиться работа в Susy 2, так как эта версия предоставляет веб-разработчику еще большую гибкость.
Данное руководство по Susy 2 состоит из двух частей; в этой первой части будет показан процесс создания шаблона в фреймворке Susy 2.
Почему именно Susy 2
Как я уже упоминал ранее, Susy является вспомогательным инструментом, благодаря которому можно создавать гибкие сетки практически любого вида, без необходимости производить многочисленные рутинные вычисления. Преимуществом Susy в отделении CSS от HTML.
Если у вас до прочтения этой статьи был опыт работы с такими традиционными фреймворками, как Foundation или Bootstrap, то вы должны знать, что в этих фреймворках ширина колонок и контрольные точки
имеют фиксированные значения. Для изменения разметки необходимо добавлять классы к элементам в HTML-код (прим. переводчика - забыл, как называется случай, когда HTML-структура засорена чрезмерным количеством классов).1
breakpoints
Фреймворк Susy лишен такого недостатка - классы создаются непосредственно под необходимый случай и применяются к конкретной сетке.
Как мне кажется, этот момент довольно трудно понять сразу, так как является достаточно абстрактным понятием. Вместо того, чтобы пытаться бесконечно объяснять теорию, мне кажется гораздо лучшим для понимания воспользоваться практическим примером. Для этого создадим с помощью Susy 2 10-колоночный тестовый макет, нарисованный Arnaud Guera (AG) для официального сайта Susy 2:
Установка Susy 2
Если Susy вообще не установлен
Фреймворк Susy для своей работы нуждается в препроцессоре Sass. Поэтому, если у вас на локальном компьютере еще не установлены как Sass, так и Susy, то необходимо это сделать:
Если Susy уже установлен
Если фреймворк Susy уже установлен на вашем компьютере и также имеется Ruby RVM (Ruby Version Manager), то можно произвести обновление с помощью команды:
Если у вас эта команда не сработала, то это означает, что нужно попробовать другой способ или же сначала установить Ruby RVM.
Второй способ установки фреймворка Susy версии 2 несколько более “ручной”. Он предполагает, что сначала нужно деинсталлировать предыдущие версии Sass\Susy, а затем установить их снова. Этот способ является наилучшим, если необходимо избежать ошибок при обновлении (как в первом случае).
После успешной установки фреймворка Susy 2 на локальной машине, приступим к его базовой настройке.
Базовая настройка Susy 2
Точно также, как и в первой версии, необходимо в конфигурационном файле
указать, что фреймворк Susy должен быть включен в текущий проект:1
config.rb
Затем нужно импортировать фреймворк Susy 2 в таблицы стилей:
Версия 2 фреймворка Susy имеет список глобальных переменных, встроенных в него. Эти переменные можно изменить прямо в таблице стилей:
Можно поэкспериментировать с переменными и их значениями по умолчанию, чтобы посмотреть, ккая из них и за что отвечает. Более детальный обзор этих переменных будет произведен во второй части данного руководства.
Однако, можно смело использовать Susy 2 с настройками по-умолчанию. В моем случае, так как я предпочитаю работать с моделью
и единицами измерения 1
border-box
, то я изменю некоторые из переменных:1
rem
Обратите внимание на то, что Susy 2 использует по умолчанию “резиновый” шаблон. Это означает, что ширина всех внешних блоков-контейнеров задана в 100%.
Если же вы предпочитаете работать в Susy с фиксированными ширинами элементов и контрольными точками
, то просто измените значение переменной 1
breakpoints
на 1
math
. Главное отличие между двумя этими методами проявляется только тогда, когда настает потребность в превращении дизайна в RWD. Однако, этот вопрос будет рассмотрен позже, во второй части данного руководства.1
static
Также обратите внимание, что необходимо подключить к текущему проекту библиотеку Compass и файл нормализации стилей
(в первых двух строках):1
normalize.css
Базовый HTML и CSS для шаблона AG
HTML-каркас для данного шаблона будет выглядеть следующим образом:
В этом примере показан довольно сложный случай вложенности одних блоков в другие блоки.
Ниже представлен простой SCSS-код для сетки:
Все готово для погружения в плагин Susy. Но перед началом необходимо немного остановиться на деталях этого плагина.
Наиболее важные функции и миксины плагина Susy
Прежде чем приступать к созданию сеток с помощью Susy, стоит кратко рассказать о трех наиболее важных функциях и миксинах данного плагина. Если вам удастся сразу же разобрать с этими тремя вопросами, вы сможете создавать с помощью Susy сетки практически любого вида и сложности.
Миксин Container
Первое, что необходимо сделать в разметке - это включить миксин
. Тем самым подключаются все возможности плагина Susy для расчета и построения CSS-сеток.1
.container
Синтаксис этого миксина прост:
Необязательный параметр
позволяет указать для блока-обертки максимальную ширину 1
lenght
. Если параметр не указан, то плагин Susy будет принимать значение максимальной ширины по умолчанию - 1
max-width
.1
max-widht: 100%
Рабочий пример миксина
:1
container
Миксин span
Миксин span является основой плагина Susy. Обычно используется стандартный способ для вызова данного миксина:
Если до этого момента вы использовали плагин Susy версии 1, то должны были обратить внимание, что синтаксис этого миксина очень похож на синтаксис миксина
, с очень незначительными отличиями.1
span-column
Давайте подробно остановимся на всех тонкостях синтаксиса миксина
:1
span
- количество колонок с создаваемой разметке;1
width
- необязательный параметр, который позволяет разделить колонку с помощью одного или двух gutter;1
wide / wider
- указывает Susy, что дальше идут параметры, связанные с разметкой;1
of
- показывает ширину блока-обертки;1
layout
- необязательный параметр, который говорит о том, что это последний элемент в ряду.1
last
Пример создания колонки с помощью миксина
:1
span
Функция span
Функция
во многом очень похожа на одноименный миксин 1
span
, за тем исключением, что она только лишь возвращает ширину элемента. В случае использования функции span потребуются только параметры ширины колонки, ширины 1
span
и всего блока-обертки в целом.1
gutter
Прелесть использования функции
в том, что в этом случае нет необходимости в запоминании миксинов для работы в 1
span
или 1
margin
в плагине Susy, как это было в предыдущей его версии. Теперь можно использовать функцию 1
padding
для установки точного значения ширины отступа:1
span
Функция gutter
Функция
принимает только один аргумент:1
gutter
Это и все основные функции и миксины плагина Susy, которые необходимо знать для работы с ним.
Создание разметки с помощью плагина Susy
Первый шаг, который мы сделаем для превращения HTML-кода в нужную разметку, это подключим миксин
:1
container
Помимо миксина
, мы подключили еще один миксин - 1
container
, так как внутри блока-обертки будут располагаться плавающие блоки. Если взглянуть на результат компиляции в CSS, то все станет очевидным: миксин 1
clearfix
генерирует строки:1
container
а миксин
создает CSS-строки:1
clearfix
Прим. переводчика: я бы воспользовался более современной версией миксина для очистки потока -
. Данный миксин построен на методе, о котором говориться в статье известного CSS-гуру Никаласа Галлахера - A new micro clearfix hack.
1 pie-clearfix
Теперь перейдем к более мелким деталям разметки. Предположительно, вся ширина блока-контейнера будет у нас состоять из 10 колонок. На рисунке-эскизе будущий макет сайта должен состоять из трех колонок - двух узких боковых и одной центральной широкой.
Такую HTML-разметку мы и создали ранее в этой статье. Поэтому предположим, что две боковые колонки будут у нас шириной в 2 стобца из 10, а центральная колонка - из 6 столбцов из 10 ( 10 - (2 + 2) ).
Следовательно, блок с классами
и 1
.column_1
дописываем миксин:1
.column_3
Помимо этого, блоку с классом
дописываем еще один миксин 1
.column_3
, так как этот блок является последним в данном ряду:1
last
Если заглянем в скомпилированный CSS-код, то увидим простую картину. Всем блокам задается одинаковая ширина в процентах, правый
также в процентах. А вот если применен миксин 1
margin
, то плавание блока меняется на противоположное и убирается правый 1
last
:1
margin
Центральная колонка должна иметь у нас ширину в шесть столбцов и плавающие блоки внутри себя, поэтому задаем для нее два миксина:
… что дает в результате CSS-код:
Отлично! Рассмотрим далее наш пример. Внутри центральной колонки в одном ряду расположены два блока, которые в сумме занимают всю ширину блока-контейнера (в данном случае это центральная колонка). Поэтому для двух этих блоков зададим одинаковый миксин:
… и не забудем добавить для блока с классом
миксин 1
.column_2_1_2
, так как он последний в своем ряду и с ним будут происходить толчно такие же метаморфозы, как и в предыдущем случае:1
last
Смотрим на готовый CSS-код и видим, что ничего необычного не произошло - все предсказуемо:
В следующем ряду располагаются еще два блока, но уже с разной шириной: блок с классом
будет занимать 2 колонки из 6, а блок с классом 1
.column_2_2_1
- 4 колонки из 6.1
column_2_2_2
Кроме того, в блоке с классом
, в свою очередь, размещены еще два плавающих блока 1
column_2_2_2
, 1
column_2_3_1
, поэтому к нему нужно применить опять миксин 1
column_2_3_2
:1
clearfix
CSS-результат применения этих миксинов показан ниже:
Последним у нас идет блок, который занимает всю ширину своего блока-родителя. В нему мы применим миксин
и одновременно очистку через CSS-свойство 1
span(full)
.1
clear: both;
… чтобы получился CSS-результат:
Вот, в принципе, и все несложное построение разметки. Давайте взглянем на результат наших трудов в окне браузера:
Полный вариант кода можно посмотреть здесь - Susy Part 1
Думаю, на cегодня можно закруглиться с изучением Susy. Но, вообще эта тема очень интересная и положительная. В том плане, что для практической работы применение плагина Susy мне видится - в самый раз.
Это вам не неуклюжие 960gs или Blueprint. Тут все гибко и настраиваемо прямо на лету. Хочешь такую разметку - пожалуйста. А хочешь другую - да пожалуйста, Susy тебе пересчитает все в мгновение ока!
Думается мне, это не последняя статья, посвященная плагину Susy под библиотеку Compass.
Данная статья является вольным переводом и осмыслением оригинала - A Complete Tutorial to Susy 2