Статьи

Семантическая разметка с Фондом 5 и Sass

В одной из моих предыдущих статей я сравнивал сеточные системы Foundation 5 и Bootstrap 3 .

Однако на этот раз я выйду за рамки основ сеточной структуры Фонда. Тем не менее, я покажу вам, как создавать больше семантических сеток, используя преимущества встроенных Sass-миксов. Чтобы продемонстрировать это, я реконструирую демонстрационную страницу вышеупомянутой статьи. Но сначала позвольте мне представить проект, который будет использоваться для этой статьи.

Структура проекта

Используя интерфейс командной строки Foundation , я создал проект Compass . Его структура может быть показана ниже:

ASSS

Следите за следующими папками:

Имя папки Описание
Фонд Содержит все активы Фонда (css, scss partials, js).
СКС Содержит файлы, которые вы можете использовать для настройки Foundation.
таблицы стилей Содержит выходной файл CSS.

Файл app.scss определяет компоненты, которые будут включены в наш проект. По умолчанию все они импортированы. Однако в нашем случае мы решили импортировать четыре из них. Это происходит потому, что нас интересуют только миксины, которые находятся в трех частичных файлах ( _block-grid.scss , _grid.scss , _buttons.scss ). Более того, мы хотим сохранить типографские стили Foundation и, следовательно, мы также импортируем _type.scss .

В дополнение к предопределенным компонентам файл app.scss может содержать также и собственные стили. Вот структура нашего файла:

Screen-Shot-2015-03-01-в-15.18.44

Ниже приведен путь к пользовательской части:

Screen-Shot-2015-03-01-в-15.17.00

Кроме того, мы должны ограничить вывод CSS (уменьшить его размер). Фактически, мы хотим, app.css файл app.css включал только типографские стили Foundation и наши собственные. По этой причине мы устанавливаем следующие значения переменных в false :

  • include-html-grid-classes
  • include-html-block-grid-classes
  • include-html-button-classes

Мы можем изменить их значения в частичном файле _settings.scss :

Screen-Shot-2015-03-01-в-14.44.31

Наконец, что не менее важно, все файлы этого проекта можно найти здесь .

Давайте продолжим, рассмотрев три основных миксина Фонда. Пожалуйста, имейте в виду, что примеры этих миксов доступны во втором проекте . Вот как это выглядит:

Screen-Shot-2015-03-02-в-22.13.58

Ряды

Миксин grid-row позволяет вам определять строки вашей сетки. Ниже его параметр:

параметр Описание Значение по умолчанию
поведение Регулирует ширину строки и / или вложенной строки. ложный

И вот возможные значения этого параметра:

Ценности Описание
ложный Используйте эту опцию, когда хотите обернуть столбцы внутри строки. Это даст ему значение свойства max-width . Кроме того, он установит свои свойства margin-left и margin-right auto .
коллапс Используйте эту опцию, когда хотите обернуть столбцы внутри строки. Это даст ему значение свойства max-width . Более того, он установит все свои поля на 0 .
гнездо Используйте эту опцию, когда вы хотите создать вложенную строку. Это даст ему отрицательное значение свойства margin-left и отрицательное значение margin-right .
гнездо коллапса Используйте эту опцию, когда вы хотите создать вложенную строку. Это установит все его поля на 0 .

Колонны

Mixin grid-column генерирует ваши столбцы. Следующая таблица показывает его параметры:

параметр Описание Значение по умолчанию
столбцы Количество желаемых столбцов. ложный
последний столбец Это последний столбец? ложный
центр Центрировать эти столбцы? ложный
смещение Количество столбцов для смещения. ложный
От себя Количество столбцов для толкания. ложный
вытащить Количество столбцов, чтобы тянуть. ложный
коллапс Удалить отступ столбца? ложный
поплавок Переместить эту колонку? правда
позиция Тип позиционирования. ложный

Блок Сетка

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

Значение Описание Значение по умолчанию
за строкой Количество элементов для отображения в строке. ложный
расстояние Количество ems для заполнения каждого элемента блока. 0.625rem
включают в себя интервал- Добавляет отступ к элементу списка. правда
базовый стиль Применяет базовый стиль к сетке блоков. правда

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

На данный момент, мы надеемся, мы готовы создать нашу демонстрационную страницу.

На следующем снимке экрана вы можете взглянуть на желаемый макет для одного из наших разделов:

Ф.Ф.

Основываясь на ширине области просмотра, мы делаем следующие предположения:

Ширина окна Описание
≤640px Каждая статья покрывает всю ширину родительского контейнера.
От 641 до 1024 пикселей Установите значение параметра columns в 6 . Это означает, что каждая статья покрывает 50% ширины их контейнера.
≥1025px Установите значение параметра columns в 3 . Это означает, что каждая статья покрывает 25% ширины контейнера.

Вот соответствующий HTML:

 <section class="services"> <h2>What we can do for you</h2> <article> <div> <i class="fa fa-bar-chart fa-4x"></i> <h4>Statistics</h4> <p> <!-- content --> </p> <a href="#">Learn more</a> </div> </article> <article> <!-- content --> </article> <article> <!-- content --> </article> <article> <!-- content --> </article> </section> 

Наш код Sass:

 .services { @include grid-row; article { @include grid-column(12); @media #{$medium-up} { @include grid-column(6); } @media #{$large-up} { @include grid-column(3); } } } 

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

 .services { width: 100%; margin-left: auto; margin-right: auto; max-width: 62.5rem; } .services article { padding-left: 0.9375rem; padding-right: 0.9375rem; width: 100%; float: left; } @media only screen and (min-width: 40.063em) { .services article { width: 50%; float: left; } } @media only screen and (min-width: 64.063em) { .services article { width: 25%; float: left; } } 

Примечание. Для простоты я включил только некоторые правила из скомпилированного CSS. Если вы хотите увидеть полный CSS, который выводит Foundation, взгляните на файл app.css .

Таким же образом, давайте продолжим наш второй пример. Ниже приведены стили, которые мы хотим применить к элементу footer :

нижний колонтитул

Опять же, мы структурируем это с учетом некоторых предположений:

Ширина окна Описание
≤640px Каждый элемент div охватывает всю ширину своего родительского контейнера.
≥641px Установите значение параметра columns в 4 . Это означает, что каждый элемент div занимает около 33,33% ширины контейнера.

Кроме того, мы используем преимущество mixin block-grid для включения вложенной строки в последний элемент div .

HTML-код может быть показан ниже:

 <footer> <section> <div> <h4>About Us</h4> <!-- content --> </div> <div> <h4>Our Mission</h4> <!-- content --> </div> <div> <h4>Find Us</h4> <ul> <!-- content --> </ul> </div> <section> </footer> 

Вот наш код Sass:

 footer { section { @include grid-row; div { @include grid-column(12); @media #{$medium-up} { @include grid-column(4); } } ul { @include block-grid(2); } } } 

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

 footer section { width: 100%; margin-left: auto; margin-right: auto; max-width: 62.5rem; } footer section div { padding-left: 0.9375rem; padding-right: 0.9375rem; width: 100%; float: left; } footer ul > li { float: left; width: 50%; padding: 0 0.625rem 1.25rem; list-style: none; } @media only screen and (min-width: 40.063em) { footer section div { width: 33.33333%; float: left; } } 

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

Вывод

В этой статье я представил вам три основных компонента Foundation, которые вы можете использовать для создания более чистого и более семантического HTML-кода. В качестве следующего шага, я призываю вас погрузиться в его файлы Sass и изучить все миксины (46 с текущей версией). К счастью, документация действительно очень хорошая, поэтому я надеюсь, что у вас не возникнет проблем с их пониманием! Таким образом, у вас будет возможность комбинировать мощные функции этой платформы вместе с вашими собственными настройками.