Ранее была опубликована статья «С чего начать изучение и использование SASS/SCSS?» и назрел вопрос вполне логичный вопрос: «В чем разница между SASS и SCSS?». Тема интересная, поэтому давайте разбираться.
Когда речь идет о Sass, как правило, мы подразумеваем препроцессор и язык в целом.
Тем не менее, используя Sass (препроцессор) мы можем использовать два различных синтаксиса:
- Sass (отступы);
- SCSS (CSS-подобный синтаксис).
Немного истории
Первоначально Sass являлся частью другого препроцессора — Haml, который придумали и написали разработчики из Ruby.
Поэтому стили Sass использовали Ruby-подобный синтаксис, без скобок, без точек с запятой и строгих отступов, например:
// Переменная
!primary-color= hotpink
// Примесь
=border-radius(!radius)
-webkit-border-radius= !radius
-moz-border-radius= !radius
border-radius= !radius
.my-element
color= !primary-color
width= 100%
overflow= hidden
.my-other-element
+border-radius(5px)
По сравнению с синтаксисом CSS есть ощутимая разница.
Переменная задается через !, а не $, символ присвоения значения =, а не :.
Но так Sass выглядел до версии 3.0, выпущенной в мае 2010 года, в которой был представлен совершенно новый синтаксис под названием SCSS или Sassy CSS.
Его целью было приблизить синтаксис Sass к CSS, сделав его более совместимым с CSS:
// Переменная
$primary-color: hotpink;
// Примесь
@mixin border-radius($radius) {
-webkit-border-radius: $radius;
-moz-border-radius: $radius;
border-radius: $radius;
}
.my-element {
color: $primary-color;
width: 100%;
overflow: hidden;
}
.my-other-element {
@include border-radius(5px);
}
SCSS определенно более близок к CSS, чем Sass. Разработчики Sass потрудились над тем, чтобы сделать оба синтаксиса ближе друг к другу, заменив ! (знак переменной) и = (знак присвоения) на $ и : из CSS.
Поэтому при запуске нового проекта вы можете задуматься, какой синтаксис использовать. Позвольте мне помочь принять Вам решение.
Плюсы синтаксиса Sass с отступами
Хотя этот синтаксис может казаться вам немного странным, но у него есть несколько интересных моментов. Прежде всего, он короче и его легче набирать. В нем нет скобок и точек с запятой, они не нужны.
В нем не нужны @mixin или @include, когда достаточно простого символа: = и +.
Также в Sass присутствуют чистые стандарты кодирования из-за использования отступов. Так как неправильный отступ может сломать всю таблицу стилей .sass, здесь в первую очередь обеспечивается, чтобы код был чистым и надлежащим образом отформатированным.
Существует только один метод составления кодов Sass: составлять их правильно.
Не забывайте, что отступы имеют логическое значение в Sass. Когда применяется отступ блока селектора, это означает, что это вложенный селектор.
Например:
.element-a
color: hotpink
.element-b
float: left
... выводит следующий код CSS:
.element-a {
color: hotpink;
}
.element-a .element-b {
float: left;
}
Простой факт смещения .element-b на один уровень вправо означает, что он является дочерним элементом от .element-a, что приводит к изменению результативного CSS-кода. Так что, будьте осторожны с отступами!
Полагаю, что синтаксис на основе отступов больше понравится команде, работающей в основном с Ruby/Python, нежели команде PHP/Java программистов (но это не точно).
Плюсы SCSS синтаксиса
Во-первых, он полностью совместим с CSS. Это означает, что вы можете переименовать файл CSS в .scss, и он будет работать, как ни в чем не бывало.
Создание SCSS, полностью совместимого с CSS, всегда было приоритетом для поддержки Sass с самого момента релиза SCSS, и, на мой взгляд, это серьезный аргумент.
Кроме того, они стараются следить, за тем, что может стать валидным синтаксисом CSS в будущем, и реализовать это (отсюда @directives).
Так как SCSS совместим с CSS, он практически не требует дополнительного обучения. Синтаксис почти тот же: в конце концов, это просто CSS с некоторыми дополнениями.
Это важно для начинающих разработчиков: они смогут быстро начать составлять код, почти ничего не зная о Sass.
Кроме того, он более читаем, так как конкретные конструкции уже имеют смысл. Когда вы видите @mixin, вы знаете, что это объявление примеси; когда вы видите @include, вы знаете, что это вызов примеси.
Нет никаких привязок, и все имеет смысл без интерпретации.
Также почти все существующие инструменты, плагины и демо-презентации для Sass разрабатываются с помощью синтаксиса SCSS. Этот синтаксис становится все более ориентированным на профессионалов и выбирается ими по умолчанию (если не является единственно возможным).
В основном в силу указанных выше причин. Например, становится все труднее найти подсветку чистого синтаксиса Sass с отступами; как правило, доступны только варианты подсветки SCSS.
Заключение
Выбор в любом случае остается за Вами, но если у вас нет действительно веских причин использовать синтаксис с отступами, я бы настоятельно рекомендовал использовать SCSS, а не Sass. Это не только более просто, но и более удобно. Если Вы совсем новичок, то SCSS — это то, что нужно. Сходство с CSS не отпугнет Вас от изучения верстки на препроцессорах. Но после уже можно рассмотреть вариант использования Sass в своих проектах. Главное не бояться использовать новое технологии в своей работе!
P.S. Обратите внимание, Sass никогда не обозначается аббревиатурой из прописных букв, независимо синтаксис ли это или язык программирования. В то время как SCSS всегда обозначается большими буквами.
Перевод статьи «What’s the Difference Between Sass and SCSS?»
Комментарии
Цифровой
31.10.2017
А где в чистом CSS используется знак $? Что-то не припомню )
Мимо проходил
25.01.2018
$ используется в качестве селектора, посмотрите тут — https://www.w3schools.com/cssref/trysel.asp
tpverstak
06.11.2017
В первом предложении просто говорится о CSS, а уже дальше по смыслу новое предложение, которое ни как не относится к самому CSS