Статьи

Сверхбыстрые адаптивные макеты с Jeet

Сегодня для нас доступно множество систем сетки. Дизайнеры и фронтенд-разработчики могут экспериментировать с ними и выбирать те, которые лучше всего соответствуют их потребностям. CSS-фреймворки и шаблоны, такие как Bootstrap , Foundation и Skeleton, предлагают сетки, используемые тысячами людей.

В этой статье я бы хотел познакомить вас с Jeet , альтернативной сеточной системой, основанной на CSS-препроцессорах. Во-первых, я расскажу об основах этого, представив основные миксины. Затем я покажу вам, как построить проект, используя его возможности.

Что такое Джит

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

В отличие от многих других сеток, Jeet обеспечивает более гибкий подход для создания макетов. Вот его основные преимущества:

  1. Это не добавляет никакой дополнительной разметки.
  2. Он не ограничен конкретным размером столбца (например, сетка из 12 столбцов).
  3. Вы можете использовать дроби (например, 1/4), десятичные дроби (например, 0,75) или даже их комбинацию (например, 1,5 / 4) для создания желаемого макета.

Сетка предназначена для работы во всех основных браузерах, включая IE9 +. Если вы хотите ориентироваться на предыдущие версии IE, взгляните на шаблон Boy .

Начиная

Сетка поставляется в двух вариантах: один для Sass (SCSS), другой для Stylus. В зависимости от препроцессора, который вы хотите использовать, существует другой способ установки. На официальной странице Jeet описаны все шаги, которые вы должны выполнить, чтобы включить сетку в свои проекты.

Основываясь на версии Sass, я создал демонстрационный проект . Я буду ссылаться на это в следующем разделе. А пока давайте просто посмотрим на его базовую структуру:

jeet-demo/ ├── index.html ├── jeet/ │ ├── _functions.scss │ ├── _grid.scss │ ├── _settings.scss │ └── index.scss ├── style.css └── style.scss 

Вы можете получить все файлы для этого проекта, посетив этот репозиторий github .

На данный момент пришло время познакомиться с основными миксинами Джит.

Примечание: чтобы продемонстрировать, как работают миксины, я буду использовать синтаксис SCSS.

Контейнер

center Mixin позволяет вам горизонтально центрировать элемент. В большинстве случаев вы будете использовать этот миксин для определения элемента, который будет действовать как контейнер ваших столбцов. В таблице ниже приведены его параметры:

параметр Описание Значение по умолчанию
Максимальная ширина Установите max-width элемента 1410px
подушечка Укажите свойства padding-left и padding-right элемента 0

Вот пример этого миксина:

Чтобы восстановить правила, применяемые center миксином, используйте uncenter .

Колонны с желобами

Чтобы определить ваши столбцы, Jeet предоставляет column или column mixin. Следующая таблица описывает его параметры:

параметр Описание Значение по умолчанию
коэффициенты Установите width элемента относительно width его контейнера 1
смещение Укажите свойство margin-left элемента 0
цикл Определить сетку столбца n (на основе значения cycle ) 0
uncycle Отменить сетку, указанную переменной cycle 0
водосточный желоб Укажите свойство margin-right элемента 3

Переменные cycle и uncycle упрощают процесс создания многостолбцовых uncycle макетов. Вот пример:

Колонны без желобов

В дополнение к col column и column , есть также доступный смешиватель для создания ваших столбцов. Вы можете использовать это в случае, если вы не хотите, чтобы между ними были водостоки. Вот его параметры:

параметр Описание Значение по умолчанию
коэффициенты Установите width элемента относительно width его контейнера 1
смещение Укажите свойство margin-left элемента 0
цикл Определить сетку столбца n (на основе значения cycle ) 0
uncycle Отменить сетку, указанную переменной cycle 0

Ниже приведен пример этого миксина:

Столбцы с накоплением

Миксин stack помогает вам создавать столбцы с накоплением. Это удобная функция, особенно на экранах небольшого размера, когда меняется макет и элементы располагаются друг над другом. Вот его параметры:

параметр Описание Значение по умолчанию
подушечка Укажите свойства padding-left и padding-right элемента 0
Align Установите (если значение = true) свойство text-align элемента ложный

Пример использования этого поведения показан ниже:

Чтобы восстановить правила, применяемые в stack mixin, используйте unstack .

Заказ колонки

Jeet предоставляет shift миксин для упорядочивания колонок. Следующая таблица показывает его параметры:

параметр Описание Значение по умолчанию
коэффициенты Укажите, насколько далеко элемент будет перемещен по сравнению с его исходным положением. 0
Col-или-пролетный Укажите, имеет ли элемент желоб или нет колонка
водосточный желоб Укажите свойство margin-right элемента 3

Вы можете получить представление о том, как работает этот миксин, в следующем примере:

Чтобы восстановить правила, применяемые unshift shift , используйте unshift .

Абсолютное Центрирование

Используя миксин align вы можете align элемент по горизонтали и / или по вертикали. Чтобы воспользоваться этим преимуществом, вы также должны установить тип позиционирования родительского элемента как relative .

Параметр этого миксина показан ниже:

параметр Описание Значение по умолчанию
направление Определить тип выравнивания элемента и то и другое

Вот пример:

Собираем все вместе

Теперь давайте используем Jeet для создания макета нашего демо-проекта .

Сначала мы структурируем раздел, связанный с нашим портфолио.

Для небольших устройств (<450 пикселей) мы хотим, чтобы рабочие элементы были сложены. По умолчанию это происходит потому, что в разметке мы используем элемент figure , который является элементом уровня блока. Более того, когда окно браузера имеет ширину от 450 до 799 пикселей, нам нужно два элемента в строке. Наконец, для больших экранов (≥800 пикселей) каждая строка должна содержать четыре элемента.

Вот наш макет, основанный на последнем предположении:

Jeet Grid Пример 1

Ниже приведен фрагмент соответствующего HTML-кода:

 <div class="portfolio"> <figure> <img src="http://placehold.it/450/ededed/ededed"> <a href="#"> <figcaption>Work-1</figcaption> </a> </figure> ... </div> 

Вот наш код SCSS:

 @media screen and (min-width: 450px) { figure { @include col(1/2, $cycle: 2); } } @media screen and (min-width: 800px) { figure { @include col(1/4, $cycle: 4, $uncycle: 2); } } 

И скомпилированный CSS:

 @media screen and (min-width: 450px) { figure { float: left; width: 48.5%; margin-left: 0%; margin-right: 3%; } figure:nth-of-type(2n) { float: right; margin-right: 0%; } } @media screen and (min-width: 800px) { figure { float: left; width: 22.75%; margin-left: 0%; margin-right: 3%; } figure:nth-of-type(2n) { float: left; margin-right: 3%; } figure:nth-of-type(4n) { float: right; margin-right: 0%; } } 

Примечание: для простоты я включил только некоторые правила из скомпилированного CSS. Чтобы увидеть полный CSS, который выводит Jeet, посмотрите файл style.css .

Давайте работать над вторым примером.

Здесь мы будем структурировать социальные ссылки. Каждая ссылка будет занимать одну четвертую width контейнера. Для начала мы определим width их родительского элемента, используя center миксин. Затем мы устанавливаем их width используя преимущество col mixin.

Вот желаемый макет:

Jeet Grid Пример 2

Наша разметка:

 <div> <a href="#">Twitter</a> ... </div> 

Требуемый SCSS:

 div { @include center(700px); a { @include col(1/4); } } 

И полученный CSS:

 div { max-width: 700px; margin-right: auto; margin-left: auto; } div a { float: left; width: 22.75%; margin-left: 0%; margin-right: 3%; } div a:last-child { margin-right: 0%; } 

Примечание: опять же для простоты, я включил только некоторые правила из скомпилированного CSS. Чтобы увидеть полный CSS, который выводит Jeet, посмотрите файл style.css .

Вывод

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

Если вы уже использовали Jeet, сообщите нам об этом в комментариях ниже.