В чем разница между sass и scss?
Содержание:
Что такое Sass
Sass (Syntactically Awesome Stylesheets) — это один из самых развитых, стабильных и многофункциональных препроцессоров. Пользуется большой популярностью у разработчиков. Sass — это более продвинутая версия CSS, которая имеет гораздо бо́льший набор возможностей, а также Sass предназначен для упрощения каскадных таблиц стилей.
Синтаксис Sass имеет 2 вида: SASS и SCSS. SCSS — более похож на CSS, а SASS — отличается отсутствием фигурных скобок. Вложенные элементы реализованы за счёт отступов. Именно такой синтаксис мы будем здесь использовать.
Зачем нужен Sass
Чтобы понять, зачем нужен Sass, перечислим его некоторые возможности:
- Sass позволяет вкладывать правила CSS друг в друга.
- Вложенность свойств.
- Использование переменных.
- Поддержка арифметических операций.
- Операции с цветами.
- Возможность импортировать в sass файл sass, scss и css файлы.
- Использование миксинов.
- И многое другое.
Если коротко зачем нужен Sass: он ускоряет и упрощает процесс разработки.
Как использовать Sass
Существуют разные способы начать использовать Sass:
- C помощью приложений (Koala, CodeKit, Compass и другие).
- C помощью командной строки.
- Используя таск-менеджеры.
- Простым конвертированием Sass в CSS с помощью онлайн-сервисов.
Рассмотрим использование Sass для таск-менеджера Gulp. Перед тем как начать установку, желательно ознакомиться с основами Gulp.
Синтаксис Sass
Есть 2 варианта написания Sass, 2 синтаксиса: SASS и SCSS. Самый старый вариант написания Sass — это синтаксис отступов. Именно этот вариант написания мы будем использовать в нашем уроке. Расширение файлов для такого синтаксиса — *.sass. Второй вариант — это синтаксис, расширяющий синтаксис CSS, Sassy CSS. SCSS пишется как обычный CSS, но расширен дополнительными возможностями Sass. Расширение файлов с SCSS синтаксисом — *.scss.
SASS и SCSS синтаксис:
SASS — синтаксис отступов | SCSS — синтаксис расширения |
$font-stack: Helvetica, sans-serif $primary-color: #333 body font: 100% $font-stack color: $primary-color |
$font-stack: Helvetica, sans-serif; $primary-color: #333; body { font: 100% $font-stack; color: $primary-color; } |
Кроме базовых правил написания (фигурные скобки, точка с запятой в конце строк), SASS и SCSS различаются также написанием некоторых функций. Так что будьте внимательны при использовании каких-либо примеров из интернета, проверяйте, какой именно синтаксис используется. Если довольно большой пример из интернета выполнен в SCSS стиле, а ваш проект написан в SASS, вы можете его импортировать в ваш основной файл, не меняя синтаксис и расширение файла посредством директивы @import, например, если вы скачали файл carousel.scss, то можете подключить его в ваш main.sass строкой @import «carousel». Также можно поступить в обратной ситуации, когда необходимо импортировать *.sass файлы в файл main.scss. В нашем примере с Гитхаба, мы импортируем все _x.x.sass файлы в один common.sass, где x.x — это номер заголовка примера из данной статьи.
Мы будем использовать синтаксис отступов.
Преимущества Sass
- Совместимость с различными версиями CSS, благодаря которой вы можете использовать любые CSS библиотеки в вашем проекте;
- Огромное количество разнообразных функций на любой случай жизни. Таким богатым функционалом могут похвастаться немногие CSS препроцессоры;
- Sass — это один из самых старых CSS препроцессоров, вобравший большой опыт за долгие годы своего существования;
- Замечательная возможность использовать Sass фреймворки, упрощающие жизнь разработчику. Один из таких фреймворков — Bourbon, который мы используем в некоторых выпусках Джедая верстки при написании Sass;
- Синтаксис. Вы можете выбрать один из двух синтаксисов, который вам ближе — упрощенный (SASS) и развернутый CSS-подобный (SCSS).
Когда я только знакомился с CSS препроцессорами, мне, как и многим другим начинающим веб-разработчикам, была не до конца понятна сама идея использования CSS препроцессоров. Зачем делать дополнительную прослойку, использовать какие-то инструменты, усложнять CSS, думал я. Но со временем начал понимать, что изо дня в день написание CSS становилось пыткой, серой рутиной, многие действия приходилось повторять, копировать селекторы, свойства и даже целые блоки CSS кода для достижения необходимого результата. Сегодня, на примерах, я покажу вам, как можно упростить работу, используя препроцессор Sass, разнообразить разработку и даже немного поразвлечься при написании каких-то более или менее сложных функций.
Расширение возможностей 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; } |
Оболочки
LibSass — это всего лишь библиотека. Чтобы запустить её (например, скомпилировать ваши таблицы стилей), требуется программа-обработчик, или «оболочка». Существует множество оболочек для LibSass. Мы поощряем создание новых оболочек — весь смысл LibSass в том, чтобы принести Sass во многие другие языки, а не только в Ruby!
Ниже представлены оболочки для LibSass, о которых нам известно на данный момент. Для некоторых языков присутствует несколько оболочек — в таких случаях первыми мы размещаем те, которые имеют самые свежие обновления.
-
Sass C
SassC — это оболочка, написанная на языке C.
Чтобы запустить компилятор на своём локальном компьютере, вам нужно собрать SassC. Для этого нужно либо иметь локальную копию исходников LibSass, либо он должен быть установлен в вашей системе. Для разработки, пожалуйста, используйте исходники. Далее вам нужно настроить переменную среды так, чтобы она указывала в директорию LibSass, например:
Исполняемый файл будет находиться в директории bin. Для его запуска используйте команду, подобную этой:
-
sass.cr is a LibSass wrapper for the Crystal programming language.
-
Go
go-libsass has the most active GoLang wrapper. gosass is another LibSass wrapper.
Wellington — раcширение к libSass, добавляющее возможность создания спрайтов. Доступно через пакетный менеджер brew:
C6 is a Sass 3.2 compatible implementation written in pure GoLang that aims to extend Sass. wellington/sass is an in-progress pure Go Sass lexer, parser, and compiler.
-
jsass — оболочка, написанная на Java. Плагин для Maven: libSass Maven plugin.
-
The sass.js project makes LibSass available as pure JavaScript. There’s a way to test it in the browser, too.
-
Оболочка для lua находится на сайте lua-sass.
-
libsass-net регулярно обновляется, вероятно являясь наилучшим вариантом. Также существует NSass, хотя он некоторое время не обновлялся.
-
Проект node-sass доказал свою популярность, и мы взяли его в основной репозиторий Sass на GitHub. Проверить обновления можно на странице пакета здесь, и на отведённом для него Твиттер-аккаунте.
-
Проект CSS::Sass обновляется регулярно. Также существует проект Text-Sass-XS, который некоторое время не обновлялся.
-
Проект SassPHP — обновлённый форк более старой PHP версии.
-
Три других проекта для Python, python-scss, pylibsass и SassPython, некоторое время не обновлялись.
-
libSass также был обратно портирован на Ruby в проекте sassc-ruby.
-
The crate is a LibSass wrapper and is updated regularly.
Переменные
Думайте о переменных, как о способе хранения информации, которую вы хотите использовать на протяжении написания всех стилей проекта. Вы можете хранить в переменных цвета, стеки шрифтов или любые другие значения CSS, которые вы хотите использовать. Чтобы создать переменную в Sass нужно использовать символ . Рассмотрим пример:
CSS Output
Когда Sass обрабатывается, он принимает значения, заданные нами в и и вставляет их в обычном CSS-файле в тех местах, где мы указывали переменные как значения. Таким образом переменные становятся мощнейшей возможностью, например, при работе с фирменными цветами, используемыми на всем сайте.
Немного о свертывании крови
Кровь – это особая жидкость, которая обладает свойством не только циркулировать по сосудам, но и образовывать плотные сгустки (тромбы). Это качество позволяет ей закрывать бреши в средних и мелких артериях и венах, порой даже незаметно для человека. Сохранение жидкого состояния и свертываемость крови регулируется системой гемостаза. Свертывающая система или система гемостаза состоит из трех компонентов:
- клетки сосудов , а конкретно внутренний слой (эндотелий) – при повреждении или разрыве стенки сосуда из эндотелиальных клеток выделяется целый ряд биологически активных веществ (оксид азота, простациклин, тромбомодулин), которые запускают тромбообразование;
- тромбоциты – это кровяные пластинки, которые первыми устремляются к месту повреждения. Они склеиваются между собой и пытаются закрыть ранение (образуя первичную гемостатическую пробку). Если тромбоциты не могут остановить кровотечение, включаются плазменные факторы свертывания крови;
- плазменные факторы – в систему гемостаза входит 15 факторов (многие являются ферментами), которые вследствие ряда химических реакций образуют плотный фибриновый сгусток, окончательно останавливающий кровотечение.
Особенностью факторов свертывания является то, что практически все они образуются в печени при участии витамина К. Гемостаз человека также контролируется противосвертывающей и фибринолитической системами. Главной их функцией является предотвращение самопроизвольного тромбообразования.
Дискография
Студийные альбомы
Заголовок | Подробности | Пиковые позиции в чарте | ||
---|---|---|---|---|
нас | Тепло США | |||
Скажи кому-нибудь |
|
— | — | |
Расин |
|
174 | 2 | |
Крысы |
|
158 | 5 | |
Подарок |
|
— | — | |
Горячие сплетни |
|
— | — | |
Получите то, что вы даете |
|
— | — | |
От заката до рассвета |
|
— | — | |
Возвращение к Расину |
|
— | — | |
Мятежный лунный блюз |
|
— | — | 5 |
«-» обозначает выпуски, которые не попали в чарты |
Одиночные игры
Год | Заголовок | Позиции на графике | Альбом | ||||
---|---|---|---|---|---|---|---|
МОЖЕТ | CAN AC | нас | США AC | США Главная | |||
1988 г. | «Скажи кому-нибудь» | 11 | — | — | — | — | Скажи кому-нибудь |
1989 г. | «Двойные неприятности» | 12 | — | — | — | — | |
«Незнакомец, чем рай» | 37 | — | — | — | — | ||
«Так трудно» | 41 год | — | — | — | — | ||
» Спаси меня » | 44 год | — | — | — | — | American Boyfriends (саундтрек) | |
1992 г. | «Сделай тебя верующим» | 12 | — | — | — | 11 | Расин |
«Я хочу верить» | 16 | 20 | — | — | — | ||
«Тебе не нужно напоминать мне» | 15 | — | — | — | 12 | ||
«Возвращаюсь снова» | 14 | — | — | — | — | ||
1993 г. | «Кем ты себя возомнил» | 37 | — | — | — | — | |
1994 г. | «High Road Easy» | 9 | — | — | — | 6 | Крысы |
«Солнце взойдет» | 7 | — | 86 | 36 | — | ||
«Я не» | 47 | — | — | — | — | ||
1997 г. | «Делай, что могу» | 20 | 6 | — | — | — | Подарок |
1998 г. | «Желание» | 12 | — | — | — | — | |
«-» обозначает релизы, которые не попали в чарты или не были выпущены в этой стране. |
@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;}
Приступим!
Пока вы хотя бы раз не попробуете сгенерировать значения для свойств с помощью цикла, вы не познаете настоящую мощь Sassy CSS. Но мы начнём с основ SCSS и постепенно доберёмся до самого интересного.
Что такого есть в Sass/SCSS, чего нет в стандартном CSS?
- Вложенные правила: вы можете вкладывать CSS свойства, в несколько наборов скобок {}. Это сделает ваш CSS чище и понятней.
- Переменные: в стандартном CSS тоже есть переменные, но переменные Sass куда более мощный инструмент. Например, вы можете использовать переменные в циклах и генерировать значения свойств динамически. Также можно внедрять переменные в имена свойств, например так: property-name-N { … }.
- Лучшая реализация операторов: вы можете суммировать, вычитать, делить и умножать CSS значения. Sass реализация более интуитивна, чем стандартный функционал CSS calc().
- Функции: Sass позволяет многократно использовать CSS стили, как функции.
- Тригонометрия: помимо базовых операций (+, -, *, /), SCSS позволяет писать собственные функции. Например, функции sin и cos можно написать, используя только синтаксис Sass/SCSS. Конечно, вам понадобятся знания тригонометрии. Такие функция могут понадобится для создания анимации.
- Удобный рабочий процесс: вы можете писать CSS, используя конструкции, знакомые по другим языкам: for-циклы, while-циклы, if-else. Но имейте в виду, это только препроцессор, а не полноценный язык, Sass контролирует генерацию свойств и значений, а на выходе вы получаете стандартный CSS.
- Миксины: позволяют один раз создать набор правил, чтобы потом использовать их многократно или смешивать с другими правилами. Например, миксины используют для создания отдельных тем макета.
Препроцессор 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
В каких случаях назначают анализ крови на коагулограмму
Вне зависимости от наличия каких-либо симптомов и признаков патологий коагуляции крови назначают анализ на гемостаз при подготовке к оперативному вмешательству и в течение гестационного периода. Таким образом оценивают вероятность жизнеугрожающих рисков кровотечения и тромбообразования в процессе операции или родоразрешения (естественным способом или при кесаревом сечении). Иными показаниями к данному анализу считаются:
- гестозы беременности, а также повторные выкидыши;
- травмы, сопровождающиеся внутренним и/или внешним кровотечением;
- наличие склонности к тромбообразованию, тромбозы, варикозы кровеносных сосудов, склонность к тромбоэмболии;
- инфаркт, инсульт в анамнезе, предынфарктные состояния, ишемия, аритмия;
- патологии кровеносной системы;
- нарушения функций печени;
- контроль состояния при терапии антикоагулянтами;
- геморрагические патологии, хронические анемии, частые носовые кровотечения, обильные менструации, включения крови в выделениях (моче, кале), внезапная потеря зрения и т. п.;
- длительная терапия препаратами-анаболиками, глюкокортикостероидами, прием оральных контрацептивов;
- плановый медицинский осмотр.
Установка 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 каждый из них. Если вы запустите этот код в браузере, то увидите следующую картину:
Если вы запустите этот код в браузере, то увидите следующую картину:
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!