Препроцессор sass. полное руководство и зачем он нужен

@while

$i: 6;@while $i > 0 {.item-#{$i} { width: 2em * $i; }$i: $i — 2;}

Скомпилируется в:

.item-6 { width: 12em; }.item-4 { width: 8em; }.item-2 { width: 4em; }

Миксины

Миксины позволяют вам определять стили, которые могут быть переиспользованы на протяжении всей таблицы стилей. Вы можете думать о миксинах, как о функциях в каком-либо другом языке програмирования. Вы можете передавать переменные, также как в функциях любого другого языка програмирования. В SCSS миксины возврашают набор CSS правил. Вы можете использовать миксины так @include имя-миксина, определенное директивной .

Рассмотрите следующий пример:

@mixin large-text {font: {family: Arial;size: 20px;weight: bold;}color: #ff0000;}.page-title {@include large-text;padding: 4px;margin-top: 10px;}

Скомпилируется в:

.page-title {font-family: Arial;font-size: 20px;font-weight: bold;color: #ff0000;padding: 4px;margin-top: 10px;}

Вы также можете использовать составные миксины, например как:

@mixin mixin-one{color: red;}@mixin mixin-two{width:20px;}.page-title {@include mixin-one;@include mixin-two;}

Вы также можете передавать переменные в миксинах:

$globel-prefixes:webkit moz ms o;@mixin prefixer ($property,$value,$prefixes:null){@if $prefixes==null{@each $prefix in $globel-prefixes {-#{$prefix}-#{$property}: $value; }} @else {@each $prefix in $prefixes {-#{$prefix}-#{$property}: $value;}}#{$property}: $value;}*{@include prefixer(box-sizing,border-box);}

Будет скомпилено в:

*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;}

Функции

Вы также можете определять функции, возвращающие значение. Для примера.

$no-of-columns:12;$gutter-width:2%;@function get-column-width($i){@return (100% — ($no-of-columns/$i — 1) * $gutter-width) / $no-of-columns * $i;}.col-6 {width:get-column-width(6);}

Будет скомпилировано в:

.col-6 {width: 49%;}

Расширения

Вы столкнетесь с ситуацией, когда вам нужно будет переиспользовать стили. Рассмотрите следующий пример:

<button class=”btn”>Normal</button><button class=”btn-blue”>Blue</button>

Оба будут иметь одинаковые стили, кроме цвета.

.btn{margin:10px;color:black;width:200px;height:100px;}.btn-blue{@extend .btn;background:blue;}

Это будет скомпилировано в:

.btn,.btn-blue{margin:10px;color:black;width:200px;height:100px;}.btn-blue{ background:blue; }

Вы также можете связывать расширения и использовать несколько расширений в одном CSS селекторе.

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

%btn{margin:10px;color:black;width:200px;height:100px;}.btn-blue{@extend %btn;background:blue;}.btn-red{ @extend %btn; background:red; }Будет скомпилировано в:.btn-blue{margin:10px;color:black;width:200px;height:100px;background:blue;}.btn-red{margin:10px;color:black;width:200px;height:100px;background:red;}

Запись карьеры

Дебютный альбом Джордана Tell Somebody был выпущен в 1988 году на Atlantic Records , в него вошли синглы, попавшие в канадский чарт «Tell Somebody», «Double Trouble», «Stranger Than Paradise» и «So Hard». «Они много играли клип« Tell Somebody »на Much Music, — сказал Джордан. «Я помню, как за две недели прошел от относительной безвестности до того, как меня узнали как девушку на видео». В 1988–89 годах в чартах «So Hard» Джордан также была представлена ​​в канадских чартах с ее римейком классики R&B 1965 года » Rescue Me «, записанной для саундтрека к фильму American Boyfriends . В результате своего быстрого роста к славе Джордан переехала из Монреаля в Лос-Анджелес в январе 1990 года, чтобы попытаться прорваться на американский музыкальный рынок.

Второй альбом Джордана, Racine , был выпущен в 1992 году на лейбле MCA Records . Записанный в Лос-Анджелесе, Racine является самым продаваемым альбомом Джордана, мировые продажи которого оцениваются в 450 000 копий, и в него вошли канадские хит-синглы «Make You a Believer», «I Want to Believe», «You Don’t Have to Remind Me». «и» Вернемся снова «. «Make You Верующий» и «Я хочу верить» были ранжированы на Billboard журнала Mainstream Rock диаграммы . Расин продал 100 000 копий в Канаде.

В 1992 году Джордан записал дуэт «Trust in Me» с Джо Кокером для фильма «Телохранитель» после того, как звезда Кевин Костнер услышал Джордана по радио в машине. Альбом саундтреков к «Телохранителю» разошелся по всему миру тиражом более 45 миллионов копий.

В 1994 году Сасс Джордан выпустила Rats, который она назвала своим любимым альбомом. Первая песня Джордана вошла в Billboard Hot 100 с синглом «Sun’s Gonna Rise». Однако Rats не сумели развить успех Расина , и Джордан впоследствии был исключен из списка MCA Records . Затем Джордан начал запись для Aquarius Records , удовлетворив просьбу лейбла о более массовом звучании для альбомов Present (1997) и Hot Gossip (2000). «Это, наверное, мои наименее любимые записи», — говорит Джордан. «Я думаю, что есть несколько отличных песен, но мне совсем не нравится их продюсирование».

Успех Сасс Джордан в качестве судьи на канале Canadian Idol побудил ее вернуться к записи в 2006 году с выпуском ее альбома Get What You Give , записанного на студии Колина Линдена в Нэшвилле , который был продюсером. Художники гостей на альбоме включены басиста Garry Tallent (из Bruce Springsteen «s E Street Band ), ударники Кен Coomer ( дядя Tupelo , Wilco ) и Брайан Owings ( Shelby Lynne ), гитарист Одли Фрид ( The Black Crowes ) и клавишник Ричард Белл ( Группа , Дженис Джоплин ).

В 2009 году Джордан доверила своему мужу Дереку Шарпу продюсировать ее альбом From Dusk ’til Dawn . Альбом был полностью записан всего за три недели и микширован в Лос-Анджелесе . Обсуждая написание песен для From Dusk ’til Dawn , Джордан объяснил: «Я думал о том, что люди кажутся более чувствительными и обеспокоенными вещами от заката до восхода солнца. Когда ты один, то страх смерти действительно поражает тебя. , и я пытался писать песни, которые были связаны со страхами посреди ночи ».

В 2011 году Джордан записал альбом студийного проекта SUN: Something Unto Nothing с участием Брайана Тичи и Майкла Девина из Whitesnake , а также Томми Стюарта . Альбом начался, когда Джордан воссоединился с Тичи в своей домашней студии в Санта-Кларите, чтобы писать песни. Something Unto Nothing стало первым сотрудничеством Джордана и Тихи со времен Rats . «Burned» была первой песней, которую Джордан и Тичи написали вместе для проекта, который вскоре превратился в полноценный альбом.

В 2017 году, через 25 лет после выпуска Racine , Джордан записал Racine Revisited с переосмысленными версиями песен из оригинального альбома 1992 года. «Мы вернули звук к временам Misty Mountain Hop 1970-х и сделали его так, как если бы мы действительно записывались тогда», — сказал Джордан. «Мы хотели бы жить все вместе в студии и записывать с пола Auto-Tune или нажмите трек или что — нибудь подобное». О процессе записи Сасс Джордан сказал, что Racine Revisited был «самым интересным, что я получил за все время создания записи» 1. «Вместо того, чтобы брать Расина с 1992 по 2017 год, мы перешли с 1992 по 1976 год».

Global Functions permalinkGlobal Functions

Dart Sass
since 1.15.0
LibSass
Ruby Sass

LibSass and Ruby Sass only support the following signatures:

Note that for these implementations, the argument is required if the function name is used, and forbidden if the function name is used.

Dart Sass
LibSass
Ruby Sass
since 3.7.0

LibSass and older versions of Ruby Sass don’t support alpha values specified as percentages.

Returns a color with the given hue, saturation, and lightness and the given alpha channel.

The hue is a number between and (inclusive) and may be unitless. The saturation and lightness are numbers between and (inclusive) and may not be unitless. The alpha channel can be specified as either a unitless number between 0 and 1 (inclusive), or a percentage between and  (inclusive).

Fun fact:

You can pass special functions like or in place of any argument to . You can even use in place of multiple arguments, since it might be replaced by multiple values! When a color function is called this way, it returns an unquoted string using the same signature it was called with.

️ Heads up!

Sass’s for slash-separated values make it difficult to pass variables for or when using the signature. Consider using  instead.

Returns if is , and  otherwise.

This function is special in that it doesn’t even evaluate the argument that isn’t returned, so it’s safe to call even if the unused argument would throw an error.

Dart Sass
since 1.15.0
LibSass
Ruby Sass

LibSass and Ruby Sass only support the following signatures:

Note that for these implementations, the argument is required if the function name is used, and forbidden if the function name is used.

Dart Sass
LibSass
Ruby Sass
since 3.7.0

LibSass and older versions of Ruby Sass don’t support alpha values specified as percentages.

If , , , and optionally are passed, returns a color with the given red, green, blue, and alpha channels.

Each channel can be specified as either a number between 0 and 255 (inclusive), or a percentage between and (inclusive). The alpha channel can be specified as either a unitless number between 0 and 1 (inclusive), or a percentage between and  (inclusive).

Fun fact:

You can pass special functions like or in place of any argument to . You can even use in place of multiple arguments, since it might be replaced by multiple values! When a color function is called this way, it returns an unquoted string using the same signature it was called with.

️ Heads up!

Sass’s for slash-separated values make it difficult to pass variables for or when using the signature. Consider using  instead.

If and are passed, this returns with the given channel instead of its original alpha channel.

Немного о свертывании крови

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

  • клетки сосудов , а конкретно внутренний слой (эндотелий) – при повреждении или разрыве стенки сосуда из эндотелиальных клеток выделяется целый ряд биологически активных веществ (оксид азота, простациклин, тромбомодулин), которые запускают тромбообразование;
  • тромбоциты – это кровяные пластинки, которые первыми устремляются к месту повреждения. Они склеиваются между собой и пытаются закрыть ранение (образуя первичную гемостатическую пробку). Если тромбоциты не могут остановить кровотечение, включаются плазменные факторы свертывания крови;
  • плазменные факторы – в систему гемостаза входит 15 факторов (многие являются ферментами), которые вследствие ряда химических реакций образуют плотный фибриновый сгусток, окончательно останавливающий кровотечение.

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

Синтаксис SAAS

Существует два варианта синтаксиса Sass:

SCSS

Первый вариант известен как SCSS (Sassy CSS) и он является расширением синтаксиса CSS. Это означает, что любое допустимое значение в CSS3 стилях будет допустимо и в SCSS. Кроме того, SCSS понимает большинство СSS-хаков и синтаксис вендорных префиксов, например, старый префикс IE filter. Этот синтаксис усиливается с применением возможностей Sass, описанных далее. Файлы этого варианта синтаксиса имеют расширение .

SASS

Второй вариант, к тому же самый старый, известен как синтаксис отступов (или просто sass). Этот синтаксис обеспечивает более краткий вариант написания CSS. Он использует отступы вместо фигурных скобок, указывающие на вложение селекторов, и новые строки, заменяющие точки с запятой, для разделения свойств. Некоторые пользователи считают, что этот синтаксис легче читается и быстрее пишется, чем SCSS.

Синтаксис отступов имеет все те же функции, хотя и некоторые из них имеют немного другой вид написания, об этом можно более подробно ознакомиться в главе документации ‘SASS — синтаксис отступов’. Файлы этого варианта синтаксиса имеют расширение .

Любой из вариантов синтаксиса может импортировать файлы написанные в другом варианте синтаксиса. Файлы могут автоматически конвертироваться в другой с помощью команды в командной строке (терминале):

# Convert Sass to SCSS
$ sass-convert style.sass style.scss

# Convert SCSS to Sass
$ sass-convert style.scss style.sass

1
2
3
4
5

# Convert Sass to SCSS

$sass-convert style.sass style.scss

 
# Convert SCSS to Sass

$sass-convert style.scss style.sass

Данная команда не генерирует CSS-файл. Для компиляции в CSS-файл используйте команду .

Extends or Mixins? permalinkExtends or Mixins?

Extends and mixins are both ways of encapsulating and re-using styles in Sass, which naturally raises the question of when to use which one. Mixins are obviously necessary when you need to configure the styles using , but what if they’re just a chunk of styles?

As a rule of thumb, extends are the best option when you’re expressing a relationship between semantic classes (or other semantic selectors). Because an element with class is an error, it makes sense for it to extend . But for non-semantic collections of styles, writing a mixin can avoid cascade headaches and make it easier to configure down the line.

Fun fact:

Most web servers compress the CSS they serve using an algorithm that’s very good at handling repeated chunks of identical text. This means that, although mixins may produce more CSS than extends, they probably won’t substantially increase the amount your users need to download. So choose the feature that makes the most sense for your use-case, not the one that generates the least CSS!

Общие свойства

Иногда вам приходится писать один и тот же набор свойств в разных правилах CSS.

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

Как бы это выглядело в вашем CSS? Вы можете:

  • использовать общий класс CSS, вроде .small-uppercase;
  • группировать селекторы;
  • использовать расширение Sass.

Общий класс CSS

Использование правила CSS .small-uppercase семантически некорректно, потому что вы в конечном итоге пишете ваш HTML как <p class=»small-uppercase»>, что возвращает, в целом, к написанию стилей в вашем HTML.

Группирование селекторов

Поскольку правило CSS может принимать любое количество селекторов, вы могли бы группировать общие свойства в виде списка селекторов:

Этот подход остаётся семантически корректным, потому что каждый селектор описывает элемент HTML, к которому он прикрепляется.

Тем не менее, есть две проблемы:

  • это правило CSS может стать неуправляемым, как только список селекторов становится больше;
  • поскольку каждый селектор содержит свои собственные специфические правила, вы разделяете свой набор свойств на два (.button может содержать дополнительные правила дальше в CSS).

Sass помогает решить эти проблемы.

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

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

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

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

Переменная задается через !, а не $, символ присвоения значения =, а не 

Но так Sass выглядел до версии 3.0, выпущенной в мае 2010 года, в которой был представлен совершенно новый синтаксис под названием SCSS или Sassy CSS.

Его целью было приблизить синтаксис Sass к CSS, сделав его более совместимым с CSS:

SCSS определенно более близок к CSS, чем Sass. Разработчики Sass потрудились над тем, чтобы сделать оба синтаксиса ближе друг к другу, заменив ! (знак переменной) и = (знак присвоения) на $ и : из CSS.

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

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

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

В нем не нужны @mixin или @include, когда достаточно простого символа: = и +.

Также в Sass присутствуют чистые стандарты кодирования из-за использования отступов. Так как неправильный отступ может сломать всю таблицу стилей .sass, здесь в первую очередь обеспечивается, чтобы код был чистым и надлежащим образом отформатированным.

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

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

Например:

Простой факт смещения .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, вы знаете, что это вызов примеси

Кроме того, он более читаем, так как конкретные конструкции уже имеют смысл. Когда вы видите @mixin, вы знаете, что это объявление примеси; когда вы видите @include, вы знаете, что это вызов примеси.

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

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

В основном в силу указанных выше причин. Например, становится все труднее найти подсветку чистого синтаксиса Sass с отступами; как правило, доступны только варианты подсветки SCSS.

Установка SASS

Чтобы установить SASS, откройте командную строку и введите gem install sass, после этого вы должны получить сообщение об успешном окончании установки:

Подготовка необходимых файлов

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

Создайте новую папку (для данной статьи, я расположил эту папку на своем рабочем столе) и назовите её, например, SASS или как вам будет угодно. Внутри папки SASS, создайте HTML-файл, дав ему имя index.html.

Поместите в него следующий код:

<!DOCTYPE html>
 
<html lang="en">
    
 <head>
         
<title>Введение в SASS</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
 
<body>
<div id="container">
 
<header>
<h1>Простой Sass-документ</h1>
<h2>Статья для веб-дизайнеров и разработчиков</h2>
</header>
 
<div>
<p id="samplepara">Простой текстовый параграф</p>
<p>Еще один параграф с текстом</p>
</div>
 
 
<div>
<ul id="list1">
    <li>1й элемент списка</li>
    <li>2й элемент списка </li>
    <li>3й элемент списка </li>
</ul>
</div>
 
 
<footer>
<h3>Это отличный футер!</h3>
</footer>
 
</div>
 
</body>
 
</html>

Теперь, для файла SASS, создайте пустой файл в предпочитаемом вами текстовом редакторе и назовите его style.scss.

Если вы точно следовали всем шагам, то на данный момент у вас будет следующая структура файлов:

Конвертация SASS-кода в CSS

Чтобы преобразовать код SASS в CSS, мы будем использовать команду –watch, которая выполнит компиляцию.

Также, эта команда просканирует папки на наличие изменений. Давайте попробуем сконвертировать SASS-файл в CSS-файл. Но сначала нам нужно расположить код в файле ourstyle.scss, чтобы убедиться, что все работает.

Скопируйте и вставьте следующий SASS-код в файл stye.scss, созданный вами в папке SASS:

$myMargin: 0px auto;
$myColor: red;
$myWidth: 600px;
 
h1 {
    color: $myColor;
    $myMargin: $margin;
}

Далее, откройте командную строку и перейдите в директорию, где вы расположили ваши файлы. В моем случае это папка на рабочем столе, поэтому я ввожу cd «Desktop«:

Теперь, находясь в папке рабочего стола, введите sass –watch Sass:Sass:

Используя команду – watch, сконвертируем все .scss-файлы в папке SASS. Также, файлы будут просканированы на наличие в них изменений. Заметьте, что в команде два слова SASS, разделенные двоеточием.

Первое слово представляет текущее положение файла .scss, а второе – расположение выходного файла. Убедитесь, что вы подключили сконвертированный CSS-файл к вашей HTML-странице:

Использование переменных

Переменные SASS объявляются с предваряющим их название символом $ и записываются аналогично CSS-свойствам. С помощью SASS, вы можете определять переменные для таких стилей, как font size, margin, padding и так далее.

Использование переменных дает вам возможность повторного использования заданных ранее значений.

В SASS существует шесть разных типов переменных:

  • Строковые (например, $myString: “здесь ваш текст”;);
  • Числовые (например, $myNum: 10px;);
  • Цветовые (например, $myColor: white;);
  • Логические (например, $myBool: true;);
  • Списковые (например, $myItemList: 1px solid red;);
  • Тип null – значение отсутствует (например, $myVar: null;).

Давайте опробуем эти типы на практике. Откройте файл style.scss и добавьте в него следующий код:

$myColor: #009a82;
$myString: "здесь ваш текст";
$myFontSize: 13px;
$myMargin: 0px auto;
$myWidth: 460px;
 
h1 {
    color: $myColor;
    margin: 0;
    padding: 0;
}
 
#container {
    width: $myWidth;
    margin: $myMargin;
}

Запустив этот код в браузере, вы получите следующее:

Вложенность

SASS также позволяет определять вложенные стили. Это позволит вам писать очень легко читающиеся стили.

В качестве примера, рассмотрим следующий код:

#container p {
   font-family: Arial;
   font-size: 13px;
}
 
#container h1 {
   font-family: Tahoma;
   font-size: 15px;
}
 
#container h2 {
   font-family: Helvetica;
   font-size: 14px;
}

Для SASS, код будет выглядеть следующим образом:

$myFontsize1: 13px;
$myFontsize2: 18px;
$myFontsize3: 25px;
$myWidth: 500px;
$myMargin: 0px auto;
 
#container {
    width: $myWidth;
    margin: $myMargin;
 
    p {
        font-family: Arial;
        font-size: $myFontsize1;
    }
 
    h1 {
        font-family: Tahoma;
        font-size: $myFontsize3;
    }
 
    h2 {
 
        font-family: Helvetica;
        font-size: $myFontsize2;
}
}

Обратите внимание, что мы расположили все стили элементов под идентификатором container, вместо того, чтобы предварять этим id каждый из них. Если вы запустите этот код в браузере, то увидите следующую картину:

Если вы запустите этот код в браузере, то увидите следующую картину:

Расширение возможностей CSS с помощью Sass

1.1 Правила вложения

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

Sass CSS — готовый результат
#main p
	color: #00ff00
	width: 97%

	.redbox
		background-color: #ff0000
		color: #000000
#main p {
	color: #00ff00;
	width: 97%;
}

#main p .redbox {
	background-color: #ff0000;
	color: #000000;
}
Sass CSS — готовый результат
#main
	width: 97%

	p, div 
		font-size: 2em
		a
			font-weight: bold

	pre
		font-size: 3em
#main {
	width: 97%;
}

#main p, #main div {
	font-size: 2em;
}

#main p a, #main div a {
	font-weight: bold;
}

#main pre {
	font-size: 3em;
}

1.2 Привязка к родительскому селектору

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

Sass CSS — готовый результат
#main
	color: black

	a
		font-weight: bold

		&:hover
			color: red
#main {
	color: black;
}

#main a {
	font-weight: bold;
}

#main a:hover {
	color: red;
}
Sass CSS — готовый результат
a
	font-weight: bold
	text-decoration: none

	&:hover
		text-decoration: underline

	body.firefox &
		font-weight: normal
a {
	font-weight: bold;
	text-decoration: none;
}

a:hover {
	text-decoration: underline;
}

body.firefox a {
	font-weight: normal;
}

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

Sass CSS — готовый результат
#main
	color: black
	
	&-sidebar
		border: 1px solid
#main {
	color: black;
}

#main-sidebar {
	border: 1px solid;
}

1.3 Вложенные свойства

Для удобства, вы можете разбивать суффикс пространства имен свойства на вложения. Например, margin-top, margin-bottom, margin-left, margin-right имеют общую основу margin и могут быть разбиты на вложения следующим образом:

Sass CSS — готовый результат
.selector
	margin:
		top: 10px
		bottom: 15px
		left: 20px
		right: 30px
.selector {
	margin-top: 10px;
	margin-bottom: 15px;
	margin-left: 20px;
	margin-right: 30px;
}

1.4 Селекторы-шаблоны

Иногда возникает ситуация, когда несколько элементов на странице используют одинаковую CSS базу, одинаковый набор свойств, характерный только для них. Данные базовые CSS правила можно оформить в виде селектора-шаблона для использования в нескольких местах Sass. Селекторы-шаблоны выводятся посредством директивы @extend.

Sass CSS — готовый результат
%item-base
	display: inline-block
	transition: all .5s ease
	max-width: 320px

.item-type-one
	@extend %item-base
	margin-top: 20px

.item-type-two
	@extend %item-base
	margin-top: 10px
.item-type-one, .item-type-two {
	display: inline-block;
	transition: all .5s ease;
	max-width: 320px;
}

.item-type-one {
	margin-top: 20px;
}

.item-type-two {
	margin-top: 10px;
}

Modules

Dart Sass
since 1.23.0
LibSass
Ruby Sass

Only Dart Sass currently supports . Users of other implementations must use the rule instead.

You don’t have to write all your Sass in a single file. You can split it up however you want with the rule. This rule loads another Sass file as a module, which means you can refer to its variables, , and functions in your Sass file with a namespace based on the filename. Using a file will also include the CSS it generates in your compiled output!

CSS Output

Notice we’re using in the file. When you use a file you don’t need to include the file extension. Sass is smart and will figure it out for you.

Приступим!

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

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

  1. Вложенные правила: вы можете вкладывать CSS свойства, в несколько наборов скобок {}. Это сделает ваш CSS чище и понятней.
  2. Переменные: в стандартном CSS тоже есть переменные, но переменные Sass куда более мощный инструмент. Например, вы можете использовать переменные в циклах и генерировать значения свойств динамически. Также можно внедрять переменные в имена свойств, например так: property-name-N { … }.
  3. Лучшая реализация операторов: вы можете суммировать, вычитать, делить и умножать CSS значения. Sass реализация более интуитивна, чем стандартный функционал CSS calc().
  4. Функции: Sass позволяет многократно использовать CSS стили, как функции.
  5. Тригонометрия: помимо базовых операций (+, -, *, /), SCSS позволяет писать собственные функции. Например, функции sin и cos можно написать, используя только синтаксис Sass/SCSS. Конечно, вам понадобятся знания тригонометрии. Такие функция могут понадобится для создания анимации.
  6. Удобный рабочий процесс: вы можете писать CSS, используя конструкции, знакомые по другим языкам: for-циклы, while-циклы, if-else. Но имейте в виду, это только препроцессор, а не полноценный язык, Sass контролирует генерацию свойств и значений, а на выходе вы получаете стандартный CSS.
  7. Миксины: позволяют один раз создать набор правил, чтобы потом использовать их многократно или смешивать с другими правилами. Например, миксины используют для создания отдельных тем макета.

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

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

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

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

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

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

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

Здесь я буду говорить в основном о SCSS, который схож с Sass. О Sass можно почитать здесь: .

  • SASS (.sass) Syntactically Awesome Style Sheets.
  • SCSS (.scss) Sassy Cascading Style Sheets.

Обратите внимание на расширения, они схожи, но отличаются. Для любителей командной строки, есть возможность конвертировать .sass в .scss и наоборот:. Конвертация форматов .scss и .sass

Используем команду sass-convert

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

Sass — это первая спецификация Sassy CSS, её разработка началась в 2006 году. Позже разработали альтернативный синтаксис, который некоторые считают лучшей версией языка, а также изменилось первоначальное расширение .sass на новое .scss.

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

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

Superset

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

Переменные

В Sass/SCSS есть переменные, и они отличаются от тех, которые вы вероятно видели в CSS — они начинаются с двух тире (). В SCSS переменная обозначается знаком доллара ().

Определение переменных

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

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

Sass переменные можно назначить любому свойству CSS

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

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

Adblock
detector