В одной из моих предыдущих статей я сравнивал сеточные системы Foundation 5 и Bootstrap 3 .
Однако на этот раз я выйду за рамки основ сеточной структуры Фонда. Тем не менее, я покажу вам, как создавать больше семантических сеток, используя преимущества встроенных Sass-миксов. Чтобы продемонстрировать это, я реконструирую демонстрационную страницу вышеупомянутой статьи. Но сначала позвольте мне представить проект, который будет использоваться для этой статьи.
Структура проекта
Используя интерфейс командной строки Foundation , я создал проект Compass . Его структура может быть показана ниже:
Следите за следующими папками:
Имя папки | Описание |
---|---|
Фонд | Содержит все активы Фонда (css, scss partials, js). |
СКС | Содержит файлы, которые вы можете использовать для настройки Foundation. |
таблицы стилей | Содержит выходной файл CSS. |
Файл app.scss
определяет компоненты, которые будут включены в наш проект. По умолчанию все они импортированы. Однако в нашем случае мы решили импортировать четыре из них. Это происходит потому, что нас интересуют только миксины, которые находятся в трех частичных файлах ( _block-grid.scss
, _grid.scss
, _buttons.scss
). Более того, мы хотим сохранить типографские стили Foundation и, следовательно, мы также импортируем _type.scss
.
В дополнение к предопределенным компонентам файл app.scss
может содержать также и собственные стили. Вот структура нашего файла:
Ниже приведен путь к пользовательской части:
Кроме того, мы должны ограничить вывод CSS (уменьшить его размер). Фактически, мы хотим, app.css
файл app.css
включал только типографские стили Foundation и наши собственные. По этой причине мы устанавливаем следующие значения переменных в false
:
-
include-html-grid-classes
-
include-html-block-grid-classes
-
include-html-button-classes
Мы можем изменить их значения в частичном файле _settings.scss
:
Наконец, что не менее важно, все файлы этого проекта можно найти здесь .
Давайте продолжим, рассмотрев три основных миксина Фонда. Пожалуйста, имейте в виду, что примеры этих миксов доступны во втором проекте . Вот как это выглядит:
Ряды
Миксин 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 с текущей версией). К счастью, документация действительно очень хорошая, поэтому я надеюсь, что у вас не возникнет проблем с их пониманием! Таким образом, у вас будет возможность комбинировать мощные функции этой платформы вместе с вашими собственными настройками.