что такое sass scss

Развёрнутое руководство по Sass/SCSS

Авторизуйтесь

Развёрнутое руководство по Sass/SCSS

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

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

Содержание статьи

Зачем использовать Sass/SCSS вместо CSS?

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

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

Синтаксис

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

Пререквизиты

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

Эта статья по большей части охватывает SCSS, который похож на Sass. Детальнее об этих препроцессорах можете прочитать на Stack Overflow (оригинал) или на qaru (перевод на русский).

SASS — (.sass) Syntactically Awesome Style Sheets.

SCSS — (.scss) Sassy Cascading Style Sheets.

Обратите внимание Другие препроцессоры функциональностью похожи на SCSS, но синтаксис может отличаться. А ещё, всё то, что работает в CSS, будет также прекрасно воспроизводиться и в Sass, и в SCSS.

Переменные

Переменные в Sass могут быть присвоены любому свойству.

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

Стандартные вложенные CSS-элементы с использованием пробела:

Те же вложенные элементы с помощью SCSS:

Как видно, синтаксис выглядит более чистым и менее повторяющимся.

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

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

Амперсанд

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

Результат компиляции Sass (из предыдущего примера) в CSS ниже.

В итоге амперсанд был компилирован в название родительского элемента a ( a:hover ).

Миксины (они же примеси)

Миксины могут также содержать селекторы, в том числе со свойствами. А селекторы могут содержать ссылки на родительский элемент через амперсанд ( & ), вы ведь помните про него?

Пример работы с несколькими браузерами

Миксины позволяют создавать группы деклараций CSS, которые вам придётся использовать несколько раз на сайте. Хорошей практикой будет использование миксинов для вендорных префиксов. Пример:

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

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

Сложение и вычитание

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

Умножение

Деление

С делением дела обстоят немного сложнее, но разобраться можно, ведь в стандартном CSS косая линия (слэш) зарезервирована для использования краткой формы записи свойств. Пример ниже.

Есть три помощника, которые намекнут на возможность деления:

Результат компиляции в CSS:

Остаток

Остаток вычисляет остаток от операции деления. Ниже рассмотрим, как создать «зебру» для HTML-списка.

Создание миксина zebra показано во вставке кода сверху. Директивы @for и @if описаны в секции ниже.

Для создания образца надо написать несколько HTML-элементов.

Результат в браузере:

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

Зебра успешно сгенерирована миксином zebra

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

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

После компиляции в CSS:

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

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

Описание логических операторов

Использование логических операторов Sass для создания кнопки, у которой будет меняться фон в зависимости от её ширины.

Строки

В CSS определено 2 типа строк: с кавычками и без. Sass распознаёт и то, и другое. В итоге вы получите в CSS тот тип строк, который использовали в Sass.

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

Пример ниже демонстрирует, как делать не надо.

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

Строки, содержащие пробелы, должны быть отделены кавычками. Решение проблемы:

Пример сложения нескольких строк:

Сложение строк и чисел:

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

В SCSS есть функции ( function() ) и директивы ( @directive ). Чуть выше мы уже рассматривали пример функции, когда изучали передачу аргументов внутри миксинов.

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

if() — это функция (и иногда основа искусственного интеллекта).

Её использование выглядит довольно примитивным: оператор вернёт одно из двух обозначенных в условии значений.

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

Проверка на наличие родительского элемента

В следующих примерах рассмотрим создание условных CSS-стилей в зависимости от наличия родительского элемента.

Директива @for

Директива @for выводит набор стилей заданное число раз. Для каждого повторения используется переменная-счётчик для изменения вывода.

Директива @for итерируется 5 раз.

Результат компиляции в CSS:

Директива @each

Результат компиляции в CSS:

Директива @while

Функции в Sass/SCSS

Используя Sass/SCSS можно использовать функции так же, как и в других языках.

Результат в браузере:

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

Функции в Sass могут возвращать любое корректное значение CSS и могут быть назначены любому свойству. Они даже могут быть рассчитаны на основе переданного аргумента.

Тригонометрия

Тригонометрические функции sin() и cos() часто встречаются в виде встроенных классов во многих языках, таких как JavaScript, например.

Их работу стоит изучать, если нужно сократить время, затрачиваемое на разработку анимаций пользовательского интерфейса, например для создания троббера. Мы, кстати, уже говорили об этом в одной из статей. Но в данном случае это будет код, а не gif-картинка, вставленная в HTML-документ.

Преимущество использования тригонометрии в сочетании с CSS выражается в отсутствии дополнительных HTTP-запросов, как это происходит с gif-изображениями.

Можно писать тригонометрические функции на Sass. Об этом читайте далее.

Написание собственных функций

Написание функций на Sass/SCSS очень похоже на написание функций в других языках.

Использование функции pow() :

Использование функции rad() :

Заключение

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

Источник

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

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

Что такое 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

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

Далее я убуду использовать названия 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.

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

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

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

Superset

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

Переменные

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

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

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

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

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

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

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

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

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

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

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

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

Оператор &

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

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

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

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

Миксины

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Сложение

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

Вычитание

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

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

Умножение

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

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

Деление

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

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

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

Остаток

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

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

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

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

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

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

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

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

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

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

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

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

Строки

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

что такое sass scss. Смотреть фото что такое sass scss. Смотреть картинку что такое sass scss. Картинка про что такое sass scss. Фото что такое sass scssКомбинируем CSS значения свойства со строкой 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 scss. Фото что такое sass scssСкладываем строки и числа

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

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

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

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

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

if()

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

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

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

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

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

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

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

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

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

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

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

@for

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

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

Источник

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

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