SCSS – @import, @mixin, @extend

Продолжаем рассматривать возможности SCSS. В этом посте сделаем обзор для SCSS @import, @mixin, @extend. Что это такое и как это использовать, будет изложено ниже и по-порядку 🙂

SCSS  @import - группируем код по разным файлам

SCSS @import - позволяет нам вынести часть CSS кода в отдельный файл и потом вызвать команду импорта для вставки его в основной документ. Но в отличии от такой же функции в CSS, которая делает импорт за счет дополнительного запроса на сервер, в языке SCSS команда импорта добавляет само содержимое документа (код) в файл куда импортируется и на выходи у нас весь код в одном документе.

Очень удобная штука, которая позволяет вынести  части кода в отдельный файл, например код для обнуления CSS свойств браузера, можно вынести в _reset.scss и по той же логике можно разбить и остальные части, это делает код чище, а работу с ним легче и понятнее.

Синтаксис использования SCSS @import:

Для использования импорта есть небольшое требование к именованию файла (который вы хотите импортировать), перед его названием необходимо поставить нижнее подчеркивание, например:  _reset.scss

Сам импорт выглядит таким образом: @import 'reset';

Как видно из примера (выше), код импортированного документа вставляется именно в то место, где он вызван, т.е. импортировать файл можно в любую часть документа, главное не забывать о видимости переменных.

Согласитесь, сопровождать SCSS документ намного удобнее, т.к. тело основного документа выглядит чище, код сгруппирован и перед глазами только самое важное.

ВАЖНО! Если вы поставили на отслеживание только файл style.scss, то все правки сделанные в импортируемых документах - не отслеживаются. Для этого можно все scss файлы закинуть в папку и поставить SASS следить за изменениями: sass --watch scss:css    где scss и css - это папки.

SCSS  @mixin - делаем миксы для CSS3 свойств с префиксами для разных браузеров

SCSS @mixin позволяет организовать различные CSS3 свойства с кучей префиксов для каждого браузера, организовать в один блок и сделать их написание простым и удобным, ровно в одну строку 🙂

Сделаем микс для CSS3 свойства - transition, как вы знаете для этого свойства каждому браузеру необходимо прописать свои префиксы совместимости и это весьма рутинная задача которую мы сейчас решим:

@mixin transition($property, $duration, $timing){
	-webkit-transition: $property $duration $timing;
	   -moz-transition: $property $duration $timing;
	    -ms-transition: $property $duration $timing;
	     -o-transition: $property $duration $timing;
	        transition: $property $duration $timing;
}

Синтаксис для @mixin:
@mixin название-микса ($переменные, $через, $запятую) {
               тут ваши CSS свойства с переменными ...
}

После того как микс создан его необходимо добавить к селектору, делается это так, внутри блока пишем: @include имя_микса

Как видим из примера создав один раз микс, мы можем его многократно использовать в разных блоках , плюс само написание громоздких CSS3 свойств превратилось в одну строку 😉

SCSS  @extend - расширяем CSS свойства одних селекторов за счет других

SCSS  @extend - позволяет нам делиться свойствами одного селектора с другими. Например у нас есть блок сообщений типа error, success, warning. В scss мы создаем блок с общими свойствами для каждого типа сообщений и добавляем его в их... смотрите пример:

 

.message {
  border: 1px solid #ccc;
  padding: 10px;
  color: #333;
}

.success {
  @extend .message;
  border-color: green;
}

.error {
  @extend .message;
  border-color: red;
}

.warning {
  @extend .message;
  border-color: yellow;
}

а на выходе мы получим сгруппированный CSS:

.message, .success, .error, .warning {
  border: 1px solid #ccc;
  padding: 10px;
  color: #333;
}

.success {
  border-color: green;
}

.error {
  border-color: red;
}

.warning {
  border-color: yellow;
}

Таким образом мы можем любой CSS селектор использовать для расширения, достаточно указать @extend имя_css_селектора;

 

На сегодня обзор возможностей SCSS в рамках этой статьи окончен, если у вас появились вопросы, пишите буду рад ответить 🙂

(4 голосов. Рейтинг: 4,00 из 5)
Загрузка...

Рубрика: SASS

Комментарии (2)

| RSS комментария

  1. Александр:

    Мне кажется, нужно в статью добавить самые распространенные mixin’s. Например, codepen.io/sawmac/pen/qGudy,codepen.io/ImagineProgramming/pen/HzwfJ.

    • Дмитрий Британ:

      Здравствуйте, Александр!
      Этот пост задумывался как обучающий и я не стал его грузить большим кол-вом кода.

Оставьте свой комментарий