Sass создает синтаксически удивительные таблицы стилей, или, по крайней мере, это то, что он должен делать.
При эффективном использовании Sass помогает создавать масштабируемый и СУХОЙ CSS. Однако при неправильном использовании Sass может увеличить размер файла и добавить ненужный или повторяющийся код.
Ниже приведен ряд советов и советов, которые помогут вам извлечь максимум пользы из Sass…
1. Структурируйте Sass
Получение правильной структуры вашего сайта с самого начала жизненно важно для любого нового проекта Sass. Использование партиалов позволяет разбить CSS на более мелкие, более управляемые блоки кода, которые легче поддерживать и разрабатывать.
Частичные файлы создаются с использованием подчеркивания и не выводятся как отдельные файлы CSS. Каждый фрагмент должен быть импортирован с использованием основного файла Sass (global.scss) в корне папки Sass.
Например, вот пример структуры папок, чтобы продемонстрировать это:
vendor/
base/
|
|-- _variables.scss
|-- _mixins.scss
|-- _placeholders.scss
framework/
modules/
global.scss
Такая структура папок обеспечивает удобство работы с сайтом и добавления в него. Например, новые модули можно легко добавить в папку модулей, а затем добавить в global.scss с помощью @import
Чтобы продемонстрировать, вот пример файла global.scss:
/* VENDOR - Default fall-backs and external files.
========================================================================== */
@import 'vendor/_normalize.scss';
/* BASE - Base Variable file along with starting point Mixins and Placeholders.
========================================================================== */
@import 'base/_variables.scss';
@import 'base/_mixins.scss';
@import 'base/_placeholders.scss';
/* FRAMEWORK - Structure and layout files.
========================================================================== */
@import 'framework/_grid.scss';
@import 'framework/_breakpoints.scss';
@import 'framework/_layout.scss';
/* MODULES - Re-usable site elements.
========================================================================== */
@import 'modules/_buttons.scss';
@import 'modules/_lists.scss';
@import 'modules/_tabs.scss';
И как побочный эффект, вы можете проверить обширный пост Хьюго по архитектуре Sass для получения дополнительных советов в этой области.
2. Используйте Sass-переменные более эффективно
Переменные являются одной из наиболее простых функций Sass, но иногда они используются неправильно. Создание соглашения об именовании для всего сайта необходимо при работе с переменными. Без них их становится сложнее понять и использовать повторно.
Вот несколько советов по созданию полезных переменных:
- Не будьте расплывчаты, когда называете свои переменные.
- Имейте и придерживайтесь соглашения об именах (Модульный, БЭМ и т. Д.)
- Убедитесь, что использование переменной оправдано.
Вот несколько хороших примеров:
$orange: #ffa600;
$grey: #f3f3f3;
$blue: #82d2e5;
$link-primary: $orange;
$link-secondary: $blue;
$link-tertiary: $grey;
$radius-button: 5px;
$radius-tab: 5px;
И несколько плохих примеров:
$link: #ffa600;
$listStyle: none;
$radius: 5px;
3. Уменьшите использование Mixin
Миксин — это отличный способ многократно включать разделы кода на одном сайте. Однако включение миксина — это то же самое, что копирование и вставка стилей по всему файлу CSS. Это создает массу дублирующегося кода и может раздуть ваш файл CSS.
Поэтому миксин следует использовать только при наличии аргумента для быстрого создания измененных стилей.
Вот пример:
@mixin rounded-corner($arc) {
-moz-border-radius: $arc;
-webkit-border-radius: $arc;
border-radius: $arc;
}
Этот миксин с rounded-corner
$arc
.tab-button {
@include rounded-corner(5px);
}
.cta-button {
@include rounded-corner(8px);
}
Плохой пример может выглядеть так:
@mixin cta-button {
padding: 10px;
color: #fff;
background-color: red;
font-size: 14px;
width: 150px;
margin: 5px 0;
text-align: center;
display: block;
}
Этот миксин не имеет аргументов и поэтому его лучше написать в качестве заполнителя , что подводит нас к пункту 4.
4. Охватите заполнители
В отличие от миксинов, заполнители могут использоваться несколько раз без добавления дубликата кода. Это делает их более дружественным вариантом для вывода СУХОГО CSS:
%bg-image {
width: 100%;
background-position: center center;
background-size: cover;
background-repeat: no-repeat;
}
.image-one {
@extend %bg-image;
background-image:url(/img/image-one.jpg");
}
.image-two {
@extend %bg-image;
background-image:url(/img/image-two.jpg");
}
И скомпилированный CSS:
.image-one, .image-two {
width: 100%;
background-position: center center;
background-size: cover;
background-repeat: no-repeat;
}
.image-one {
background-image:url(/img/image-one.jpg") ;
}
.image-two {
background-image:url(/img/image-two.jpg") ;
}
Повторный код в заполнителе выводится только один раз, при этом к отдельным селекторам применяются только уникальные стили. Если не используется, стили заполнителя не выводятся вообще.
В соответствии с пунктом 3, заполнители могут использоваться вместе с миксинами, чтобы уменьшить дублирование кода и при этом сохранить гибкость миксина…
/* PLACEHOLDER
============================================= */
%btn {
padding: 10px;
color:#fff;
curser: pointer;
border: none;
shadow: none;
font-size: 14px;
width: 150px;
margin: 5px 0;
text-align: center;
display: block;
}
/* BUTTON MIXIN
============================================= */
@mixin btn-background($btn-background) {
@extend %btn;
background-color: $btn-background;
&:hover {
background-color: lighten($btn-background,10%);
}
}
/* BUTTONS
============================================= */
.cta-btn {
@include btn-background(green);
}
.main-btn {
@include btn-background(orange);
}
.info-btn {
@include btn-background(blue);
}
5. Используйте функции для расчетов
Функции используются для выполнения расчетов. Функция Sass не выводит никакого CSS. Вместо этого он возвращает значение, которое можно использовать в CSS. Это полезно для расчетов, которые будут сделаны по всему сайту.
Например, функции полезны для вычисления процентной ширины данного элемента:
@function calculate-width ($col-span) {
@return 100% / $col-span
}
.span-two {
width: calculate-width(2); // spans 2 columns, width = 50%
}
.span-three {
width: calculate-width(3); // spans 3 columns, width = 33.3%
}
6. Заказать работу
Поместите все миксины, функции, заполнители и переменные в их соответствующий частичный файл. Хранение блоков кода вместе обеспечит их простоту редактирования и повторного использования в будущем.
Элементы всего сайта должны храниться вместе в базовой папке. Базовая папка должна содержать глобальные переменные, такие как шрифты и цветовые схемы:
$font-primary: 'Roboto', sans-serif;
$font-secondary: Arial, Helvetica, sans-serif;
$color-primary: $orange;
$color-secondary: $blue;
$color-tertiary: $grey;
Специфичные для модуля миксины, функции и переменные должны храниться в правильном частичном файле модуля:
$tab-radius: 5px;
$tab-color: $grey;
7. Ограничить вложенность
Чрезмерное использование вложенных правил в Sass может вызвать множество проблем, от сложного кода до чрезмерной специфики и чрезмерной зависимости от HTML-структуры страницы. Эти вещи могут вызвать проблемы в дальнейшем и потенциально увеличить необходимость включения !important
Вот несколько золотых правил для вложения:
- Никогда не заходите глубже, чем на 3 уровня.
- Убедитесь, что вывод CSS чистый и пригоден для повторного использования.
- Используйте вложение, когда это имеет смысл, а не как вариант по умолчанию.
8. Держите вещи простыми
Заключительный пункт, который я сделаю в этом посте, состоит в том, чтобы сделать вещи максимально простыми. Цель Sass — написать более понятный и управляемый CSS. Прежде чем создавать какие-либо новые миксины, переменные или функции, убедитесь, что их присутствие улучшит разработку, а не усложнит ситуацию. Все функции Sass полезны при использовании в правильных ситуациях и в модерации.
Создание бесконечного списка переменных без четкого использования или сложной функции, которую трудно понять кому-либо, кроме автора, не является намерением и не будет способствовать разработке или созданию СУХОГО CSS.
Вывод
Вот именно для этого списка советов Sass. Вы можете не согласиться со всем этим. Sass — все еще довольно новая технология, поэтому мы продолжаем изучать новые лучшие практики с ней. Если у вас есть свои предложения, не стесняйтесь комментировать.