Статьи

8 советов, которые помогут вам получить лучшее от Sass

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 — все еще довольно новая технология, поэтому мы продолжаем изучать новые лучшие практики с ней. Если у вас есть свои предложения, не стесняйтесь комментировать.