Что такое scss sass

Типичный верстальщик

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sass

Важные отличия между Sass и SCSS

Ранее была опубликована статья «С чего начать изучение и использование SASS/SCSS?» и назрел вопрос вполне логичный вопрос: «В чем разница между SASS и SCSS?». Тема интересная, поэтому давайте разбираться.

Тем не менее, используя Sass (препроцессор) мы можем использовать два различных синтаксиса:

Немного истории

Первоначально Sass являлся частью другого препроцессора — Haml, который придумали и написали разработчики из Ruby.

Поэтому стили Sass использовали Ruby-подобный синтаксис, без скобок, без точек с запятой и строгих отступов, например:

По сравнению с синтаксисом CSS есть ощутимая разница.

Поэтому при запуске нового проекта вы можете задуматься, какой синтаксис использовать. Позвольте мне помочь принять Вам решение.

Плюсы синтаксиса Sass с отступами

Хотя этот синтаксис может казаться вам немного странным, но у него есть несколько интересных моментов. Прежде всего, он короче и его легче набирать. В нем нет скобок и точек с запятой, они не нужны.

Существует только один метод составления кодов Sass : составлять их правильно.

Плюсы SCSS синтаксиса

Кроме того, они стараются следить, за тем, что может стать валидным синтаксисом CSS в будущем, и реализовать это (отсюда @directives ).

Нет никаких привязок, и все имеет смысл без интерпретации.

Заключение

Источник

Полный гайд по SCSS/SASS

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sass

Apr 10, 2019 · 9 min read

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sass

Далее я убуду использовать названия Sassy, Sass и SCSS, поэтому давайте определимся, так как концептуально разница не велика, будем считать, что это одно и тоже. Вы поймёте различия по мере изучения темы. Отмечу, что SCSS сейчас наиболее популярна, вероятно потому, что является наиболее поздней версией оригинального Sass синтаксиса (некоторые считают её лучшей).

Чтобы по-настоящему почувствовать преимущества Sass, вам нужно понять ключевые идеи этого метаязыка. Об этом мы и поговорим.

Весь Sass/SCSS код компилируетс я обратно в стандартный CSS, поэтому браузер понимает его и корректно выводит результат. Текущие версии браузеров не поддерживают Sass/SCSS непосредственно (как и другие препроцессоры), а стандартная спецификация CSS не предлагает нам альтернатив (пока).

Приступим!

Пока вы хотя бы раз не попробуете сгенерировать значения для свойств с помощью цикла, вы не познаете настоящую мощь Sassy CSS. Но мы начнём с основ SCSS и постепенно доберёмся до самого интересного.

Что такого есть в Sass/SCSS, чего нет в стандартном CSS?

Препроцессор Sass

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

Новый синтаксис

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

Несколько фактов для начала

CSS препроцессоры добавляют новый синтаксис в CSS.

Существует 5 CSS препроцессоров: Sass, SCSS, Less, Stylus и PostCSS.

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sass

На данный момент ни один браузер не поддерживает CSS препроцессоры напрямую. Вы можете свободно экспериментировать с любым из 5 препроцессоров на сервисе codepen.io. Кроме того, используя препроцессор, вы должны будете установить его к себе на веб-сервер.

Эта статья о SCSS, но другие препроцессоры имеют схожие функции, хотя синтаксис может отличаться.

Superset

Sassy CSS в любом своём проявлении является «расширением» языка CSS, а значит, всё что работает в CSS, работает и в Sass/SCSS.

Переменные

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sass

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sass

Вложенные правила

В стандартном CSS, вложенность достигается путём расстановки пробелов.

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sass

С помощью Sassy CSS этот код можно записать так:

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sass

Конечно, в итоге это всё скомпилируется в обычный CSS. Это просто синтаксис, но как видите, он выглядит чище и с меньшими повторениями.

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

Тем временем под капотом, препроцессор компилирует всё в стандартный код CSS (как в первом примере), чтобы браузер смог его отобразить. Мы лишь изменили способ написания CSS.

Оператор &

В Sassy CSS можно использовать оператор & (И), давайте посмотрим, как это работает.

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sass

В 5 строке мы видим &:hover, после компиляции, вместо символа &, подставляется имя родительского элемента, т.е. a:hover. В результате у нас получится такой код:

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sass

Миксины

Для объявления миксина используйте директиву @mixin (ещё это называют mixin rule).

Давайте создадим миксин, который определяет поведение элемента как Flex:

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sass

Вы можете передавать аргументы в @mixin, как если бы это была функция, а затем присваивать их свойствам CSS. Рассмотрим это в следующей части.

Кросс-браузерность. Пример

Некоторые экспериментальные фичи работают только в определённых браузерах.

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

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sass

Теперь нужно подключить ( @include) этот миксин в CSS класс:

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sass

Арифметические операции

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

Есть несколько неочевидных особенностей, которые следует учитывать, чтобы избегать ошибок.

Сложение

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sass

Убедитесь, что оба значения соответствуют одному формату.

Вычитание

Этот оператор работает так же, как и предыдущий.

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sass

Умножение

Для умножения используется звёздочка, как и в стандартном CSS calc(a * b).

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sass

Деление

Так как в стандартном CSS символ деления зарезервирован для других целей, есть некоторые особенности его использования. Например, font: 24/32px определяет размер шрифта 25px и line-height 32px. Т.е. символ деления используется для сокращённой записи свойств шрифта. Посмотрим, как работает SCSS, сохраняя совместимость со стандартным CSS.

Источник

SCSS — немного практики, часть I

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sass

Что такое SCSS

SCSS — «диалект» языка SASS. А что такое SASS? SASS это язык похожий на HAML (весьма лаконичный шаблонизатор), но предназначенный для упрощения создания CSS-кода. Проще говоря, SASS это такой язык, код которого специальной ruby-программой транслируется в обычный CSS код. Синтаксис этого языка очень гибок, он учитывает множество мелочей, которые так желанны в CSS. Более того, в нём есть даже логика (@if, each), математика (можно складывать как числа, строки, так и цвета). Возможно, некоторые возможности SCSS покажутся вам избыточными, но, на мой взгляд, лишними они не будут, останутся «про запас».

Отличие SCSS от SASS заключается в том, что SCSS больше похож на обычный CSS код. Пример SASS-кода:

И то же самое на SCSS:

Я выбрал SCSS в виду того, что он проще для восприятия коллегам с ним ещё не знакомым. Ещё стоило бы отметить что обычный CSS код вполне вписывается в SCSS синтаксис.

Установка и использование

—watch

Предположим, что у вас есть следующая структура проекта:

—update

Практика

import

Изначально, до использования SCSS, весь CSS код движка, с которым мне по долгу службы приходится работать, находился в 1-ом огромном style.css файле. Моя IDE (Netbeans (кстати, вот плагин для подсветки синтаксиса)) работала с ним с существенными тормозами. Разбивать же его на множество файлов поменьше, и, при необходимости, склеивать их в 1 ― никто не хотел. SCSS решает этот вопрос автоматически.

Итак, для того, чтобы включить содержимое файла _template.scss или template.scss пишем

@вложенность

Одна из самых желанных «фич» для CSS ― вложенность селекторов. Пример:

$variables

Переменные ― удобная штука. Определяются они так:

Переменные ― не константы, их можно менять по ходу кода 🙂 Одна из первых моих мыслей вылилась в _const.scss файл, который заключает в себе все базовые цвета, размеры шрифтов и пр.

Переменные у нас не типизированные, поэтому с равным успехом могут содержать строки, числа и цвета.

@математика

Разделим математику на 2 категории ― цвета и числа. Начнём с чисел. Простой пример:

При желании можно и padding с border-ом задавать переменными. Всё зависит от сложности вёрстки.

Хочу отметить, что подобного рода манипуляции применяются очень часто. Без них я как без ног.

А теперь цвета. Цвета можно складывать, перемножать:

Довольно удобная штука, когда лень подбирать цвета. Также доступны такие функции как opacify и transparentize (более подробно).

@строки

SASS умеет складывать строки, а также поддерживает конструкцию #<>

Полагаю, что наибольшее применение операциям над строками можно найти в @миксинах и переменных, указывающих пути к изображениям и пр.

Статья

В виду того, что статья получилась довольно объёмной, я решил разбить её на 2 части. В следующей статье я рассмотрю (синтаксис и область применения):

Источник

Полный гайд по SCSS/SASS

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sass

Далее я убуду использовать названия Sassy, Sass и SCSS, поэтому давайте определимся, так как концептуально разница не велика, будем считать, что это одно и тоже. Вы поймёте различия по мере изучения темы. Отмечу, что SCSS сейчас наиболее популярна, вероятно потому, что является наиболее поздней версией оригинального Sass синтаксиса (некоторые считают её лучшей).

Чтобы по-настоящему почувствовать преимущества Sass, вам нужно понять ключевые идеи этого метаязыка. Об этом мы и поговорим.

Весь Sass/SCSS код компилируется обратно в стандартный CSS, поэтому браузер понимает его и корректно выводит результат. Текущие версии браузеров не поддерживают Sass/SCSS непосредственно (как и другие препроцессоры), а стандартная спецификация CSS не предлагает нам альтернатив (пока).

Приступим!

Пока вы хотя бы раз не попробуете сгенерировать значения для свойств с помощью цикла, вы не познаете настоящую мощь Sassy CSS. Но мы начнём с основ SCSS и постепенно доберёмся до самого интересного.

Что такого есть в Sass/SCSS, чего нет в стандартном CSS?

Препроцессор Sass

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

Новый синтаксис

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

Несколько фактов для начала

CSS препроцессоры добавляют новый синтаксис в CSS.

Существует 5 CSS препроцессоров: Sass, SCSS, Less, Stylus и PostCSS.

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sassКонвертация форматов .scss и .sass. Используем команду sass-convert.

На данный момент ни один браузер не поддерживает CSS препроцессоры напрямую. Вы можете свободно экспериментировать с любым из 5 препроцессоров на сервисе codepen.io. Кроме того, используя препроцессор, вы должны будете установить его к себе на веб-сервер.

Эта статья о SCSS, но другие препроцессоры имеют схожие функции, хотя синтаксис может отличаться.

Superset

Sassy CSS в любом своём проявлении является «расширением» языка CSS, а значит, всё что работает в CSS, работает и в Sass/SCSS.

Переменные

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sassОпределение переменных

Вы можете перезаписать имя переменной или задать для неё значение по умолчанию. Для этого добавьте метку !default к переменной, и если её значение не изменится в дальнейшем и не будет пустым, то будет использоваться заданное значение по умолчанию.

В примере выше окончательным значением переменной $text будет “Piece of string.”, а не “Another string.”, потому что переменная не пуста.

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sassSass переменные можно назначить любому свойству CSS

Вложенные правила

В стандартном CSS, вложенность достигается путём расстановки пробелов.

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sassВложенность в стандартном CSS

С помощью Sassy CSS этот код можно записать так:

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sassВложенность в Sass. Меньше повторений

Конечно, в итоге это всё скомпилируется в обычный CSS. Это просто синтаксис, но как видите, он выглядит чище и с меньшими повторениями.

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

Тем временем под капотом, препроцессор компилирует всё в стандартный код CSS (как в первом примере), чтобы браузер смог его отобразить. Мы лишь изменили способ написания CSS.

Оператор &

В Sassy CSS можно использовать оператор & (И), давайте посмотрим, как это работает.

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sassИспользуем символ &

В 5 строке мы видим &:hover, после компиляции, вместо символа &, подставляется имя родительского элемента, т.е. a:hover. В результате у нас получится такой код:

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sassРезультат компиляции SCSS

Миксины

Для объявления миксина используйте директиву @mixin (ещё это называют mixin rule).

Давайте создадим миксин, который определяет поведение элемента как Flex:

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sassМиксины

Теперь любой HTML элемент с классом .centered-elements будет иметь свойства Flexbox. Вы можете использовать миксины совместно с другими CSS свойствами.

Для класса .centered-elements я добавил миксин и правило border:1px solid gray;

Вы можете передавать аргументы в @mixin, как если бы это была функция, а затем присваивать их свойствам CSS. Рассмотрим это в следующей части.

Кросс-браузерность. Пример

Некоторые экспериментальные фичи работают только в определённых браузерах.

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

Например, если вам нужно вращать элемент в браузере на движке Webkit, так же, как и в других браузерах, вы можете создать миксин, который принимает переменную $degree в качестве аргумента:

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sassРеализуем кросс-браузерность с помощью миксин

Теперь нужно подключить (@include) этот миксин в CSS класс:

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sassПравило Rotate совместимое со всеми браузерами

Арифметические операции

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

Есть несколько неочевидных особенностей, которые следует учитывать, чтобы избегать ошибок.

Сложение

Убедитесь, что оба значения соответствуют одному формату.

Вычитание

Этот оператор работает так же, как и предыдущий.

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sassВычитание

Умножение

Для умножения используется звёздочка, как и в стандартном CSS calc(a * b).

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sassумножение и деление

Деление

Так как в стандартном CSS символ деления зарезервирован для других целей, есть некоторые особенности его использования. Например, font: 24/32px определяет размер шрифта 25px и line-height 32px. Т.е. символ деления используется для сокращённой записи свойств шрифта. Посмотрим, как работает SCSS, сохраняя совместимость со стандартным CSS.

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sass Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sass

Чтобы разделить два значения, просто оберните выражение в скобки. Иначе, оператор деления сработает только при использовании с другими операторами или функциями.

Остаток

Вы можете вычислить остаток от операции деления. Давайте попробуем создать «зебру» для набора HTML элементов.

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sassСоздание зебры

Начнём с создания миксин.

Примечание: далее мы ещё поговорим о правилах @for и @if

Нам понадобится несколько HTML элементов:

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sassHTML код

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sassСгенерированная зебра

Операторы сравнения

После компиляции, мы получим такой CSS:

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sassРезультат сравнения

Логические операторы

Этот код создаёт класс button-color, который изменяет background-color в зависимости от ширины кнопки.

Строки

В некоторых случаях можно добавить строки в допустимые значения CSS без кавычек, но только если добавленная строка является завершающим элементом:

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sassКомбинируем CSS значения свойства со строкой Sass/SCSS

А следующий пример приводит к ошибке:

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sassЭтот код не сработает

Можно складывать строки без двойных кавычек, если они не содержат пробелов. Пример ниже не будет скомпилирован:

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sassЭтот пример тоже не сработает Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sassСтрока, содержащая пробелы, должна быть в кавычках Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sassСкладываем несколько строк Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sassСкладываем строки и числа

Примечание: свойство content работает только с псевдо-селекторами :before и :after . Не рекомендуется использовать это свойство в CSS, вместо этого, следует указывать его между HTML тегов.

Операторы управления потоками

В SCSS есть функции (fucntion()) и директивы (@directive), их ещё называю «правилами». Мы уже создавали функцию, когда проходили миксины. Вы можете передавать аргументы функциям.

У функции обычно есть скобки, которые ставятся сразу после её имени. Директива/правило начинается с символа @.

Как и в JavaScript или других языках, в SCSS есть стандартный набор операторов управления потоками.

if()

if() — это функция. Применяется она очень просто: оператор вернёт одно из двух значений, в зависимости от условия:

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sass

@if — это директива, её используют для создания ветвлений на основе условия.

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sass

Скомпилированный Sassy код:

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sass Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sassПример использования одиночного if оператора и комбинации if-else

Проверяем существует ли родительский элемент

Символом & выбираем родительский элемент, если он существует, в противном случае возвращаем null. Можно использовать совместно с директивой @if.

Далее мы создадим CSS стиль с условием, где результат будет зависеть от наличия родительского элемента.

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sass

Если родительский элемент не существует, оператор & выдаёт null и в результате применяется альтернативный стиль.

@for

Директиву @for используют для повторения CSS определений несколько раз подряд.

Что такое scss sass. Смотреть фото Что такое scss sass. Смотреть картинку Что такое scss sass. Картинка про Что такое scss sass. Фото Что такое scss sassЦикл for

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *