Разработано | Хэмптон Кэтлин |
---|---|
Разработчик | Натали Вайценбаум, Крис Эппштейн |
Впервые появился | 28 ноября 2006 г. (2006-11-28) |
Стабильный релиз | 1.75.0 [1] / 11 апреля 2024 г. (2024-04-11) [1] |
Дисциплина печати | Динамичный |
ОС | Кроссплатформенный |
Лицензия | Лицензия Массачусетского технологического института |
Расширения имени файла | .sass, .scss |
Веб-сайт | sass-lang.com |
Основные внедрения | |
Дарт | |
Под влиянием | |
CSS (как «с отступом», так и SCSS) YAML и Haml (синтаксис с отступами) Меньше (SCSS) | |
Под влиянием | |
Меньше , Стилус , Тритий , Bootstrap (v4+) |
Sass (сокращение от syntactically awesome style tables ) — это язык сценариев препроцессора , который интерпретируется или компилируется в каскадные таблицы стилей (CSS). SassScript — это сам язык сценариев.
Sass состоит из двух синтаксисов . Исходный синтаксис, называемый «отступным синтаксисом», использует синтаксис, похожий на Haml . [2] [3] Он использует отступы для разделения блоков кода и символы новой строки для разделения правил. Более новый синтаксис, SCSS (Sassy CSS), использует форматирование блоков, как в CSS. Он использует фигурные скобки для обозначения блоков кода и точки с запятой для разделения правил внутри блока. Файлы отступов и SCSS традиционно имеют расширения .sass и .scss соответственно. [4]
CSS3 состоит из ряда селекторов и псевдоселекторов, которые группируют правила, применяемые к ним. Sass (в более широком контексте обоих синтаксисов) расширяет CSS, предоставляя несколько механизмов, доступных в более традиционных языках программирования , в частности, объектно-ориентированных языках , но которые недоступны самому CSS3. Когда SassScript интерпретируется, он создает блоки правил CSS для различных селекторов, как определено в файле Sass. Интерпретатор Sass транслирует SassScript в CSS. В качестве альтернативы Sass может отслеживать файл .sass или .scss и транслировать его в выходной файл .css всякий раз, когда файл .sass или .scss сохраняется. [5]
Синтаксис с отступами является метаязыком. SCSS является вложенным метаязыком и надмножеством CSS, поскольку действительный CSS является действительным SCSS с той же семантикой .
SassScript предоставляет следующие механизмы: переменные , вложенность , миксины [3] и наследование селекторов . [2 ]
Sass был изначально разработан Хэмптоном Кэтлином и развит Натали Вайценбаум. [6] [7]
SassScript был реализован на нескольких языках, наиболее примечательными реализациями являются:
Sass позволяет определять переменные. Переменные начинаются со знака доллара ( $
). Назначение переменных выполняется с помощью двоеточия ( :
). [18]
SassScript поддерживает четыре типа данных: [18]
Переменные могут быть аргументами или результатами одной из нескольких доступных функций . [19] Во время перевода значения переменных вставляются в выходной CSS-документ. [2]
ССС | Сасс | Скомпилированный CSS |
---|---|---|
$primary-color : #3bbfce ; $margin : 16 пикселей ; .content-navigation { border-color : $ primary-color ; цвет : затемнить ( $ primary-color , 10 % ); } .border { padding : $ margin / 2 ; margin : $ margin / 2 ; border-color : $ primary-color ; } | $primary-color : #3bbfce $margin : 16 пикселей .content-navigation border-color : $primary-color цвет : затемнить ( $primary-color , 10 % ) .border padding : $margin / 2 margin : $margin / 2 border-color : $primary-color | : корень { --primary-color : #3bbfce ; --secondary-color : #2b9eab ; --margin : 8 пикселей ; } . content-navigation { border-color : var ( --secondary-color ) цвет : var ( --secondary-color ); } . border { padding : 8 px ; margin : var ( --margin ); border-color : #3bbfce ; } |
CSS поддерживает логическую вложенность, но сами блоки кода не вложены. Sass позволяет вставлять вложенный код друг в друга. [2]
ССС | Сасс | Скомпилированный CSS |
---|---|---|
таблица .hl { margin : 2em 0 ; td .ln { text-align : right ; } } li { шрифт : { семейство : serif ; начертание : жирный ; размер : 1 .3em ; } } | таблица .hl поле : 2 em 0 td .ln выравнивание текста : вправо li шрифт : семейство : serif насыщенность : жирный размер : 1 .3 em | table.hl { margin : 2 em 0 ; } table.hl td.ln { text - align : right ; } li { семейство шрифтов : serif ; начертание шрифта : жирный ; размер шрифта : 1.3 em ; } |
Более сложные типы вложенности, включая вложенность пространств имен и родительские ссылки, обсуждаются в документации Sass. [18]
ССС | Сасс | Скомпилированный CSS |
---|---|---|
@mixin table-base { th { text-align : center ; font-weight : bold ; } td , th { padding : 2px ; } } #данные { @include table-base ; } | =table-base th text-align : center font-weight : bold td , th padding : 2 px #данные +таблица-база | # данные th { text-align : center ; font-weight : bold ; } # данные td , # данные th { padding : 2 px ; } |
Sass позволяет выполнять итерацию по переменным с помощью @for
, @each
и @while
, что можно использовать для применения разных стилей к элементам со схожими классами или идентификаторами.
Сасс | Скомпилированный CSS |
---|---|
$squareCount : 4 @for $i от 1 до $squareCount #square- #{ $i } цвет фона : красный ширина : 50 пикселей * $i высота : 120 пикселей / $i | # квадрат-1 { цвет фона : красный ; ширина : 50 пикселей ; высота : 120 пикселей ; } # квадрат-2 { цвет фона : красный ; ширина : 100 пикселей ; высота : 60 пикселей ; } # квадрат-3 { цвет фона : красный ; ширина : 150 пикселей ; высота : 40 пикселей ; } |
Миксины также поддерживают аргументы . [2]
Сасс | Скомпилированный CSS |
---|---|
=left ( $dist ) float : левое поле-left : $dist #данные +слева ( 10 пикселей ) | # данные { float : left ; margin-left : 10 px ; } |
Сасс | Скомпилированный CSS |
---|---|
=table-base th text-align : center font-weight : bold td , th padding : 2 px =left ( $dist ) float : левое поле-left : $dist #данные +слева ( 10 пикселей ) +основание-таблицы | # данные { float : left ; margin-left : 10 px ; } # данные th { text-align : center ; font-weight : bold ; } # данные td , # данные th { padding : 2 px ; } |
Хотя CSS3 поддерживает иерархию Document Object Model (DOM), он не допускает наследование селекторов. В Sass наследование достигается путем вставки строки внутри блока кода, которая использует ключевое слово @extend и ссылается на другой селектор. Атрибуты расширенного селектора применяются к вызывающему селектору. [2]
Сасс | Скомпилированный CSS |
---|---|
.error border : 1 px #f00 background : #fdd .error.intrusion размер шрифта : 1 .3 em начертание шрифта : жирный .badError @extend .error border-width : 3 px | . error , . badError { border : 1 px #f00 ; background : #fdd ; } . error . intrusion , . badError . intrusion { размер шрифта : 1.3 em ; начертание шрифта : жирный ; } . badError { border-width : 3 px ; } |
Sass поддерживает множественное наследование . [18]
На конференции разработчиков HTML5 2012 года Хэмптон Кэтлин, создатель Sass, анонсировал версию 1.0 libSass, реализацию Sass на языке C++ с открытым исходным кодом, разработанную Кэтлином, Аароном Люном и командой инженеров Moovweb . [20] [21]
По словам Кэтлина, libSass можно «вставить куда угодно, и там будет Sass... Вы можете вставить его прямо в Firefox сегодня и собрать Firefox, и он скомпилируется там. Мы написали наш собственный парсер с нуля, чтобы убедиться, что это возможно». [22]
Цели разработки libSass:
ИДЕ | Программное обеспечение |
---|---|
Adobe Dreamweaver CC 2017 | |
Затмение | |
Emacs | sass-режим |
JetBrains IntelliJ IDEA (максимальная версия) | |
JetBrains PhpStorm | |
JetBrains RubyMine | |
JetBrains WebStorm | |
Microsoft Visual Studio | Мысленный ландшафт |
Microsoft Visual Studio | SassyStudio |
Microsoft Веб-матрица | |
NetBeans | |
Вим | haml.zip |
Атом | |
Код Visual Studio | |
Возвышенный | |
Редактировать+ |
{{cite web}}
: CS1 maint: numeric names: authors list (link)