Sass (linguagem de folha de estilo)
![]() | |
Projetado por | Hampton Catlin |
---|---|
Desenvolvedor | Natalie Weizenbaum, Chris Eppstein |
Apareceu pela primeira vez | 28 de novembro de 2006 |
Versão estável | 1.54.0 [1]
/ 7 de julho de 2022 [1] |
Disciplina de digitação | Dinâmico |
SO | Plataforma cruzada |
Licença | Licença MIT |
Extensões de nome de arquivo | .sass, .scss |
Local na rede Internet | sass-lang.com |
Principais implementações | |
Dardo | |
Influenciado por | |
CSS (ambos "recuados" e SCSS) Menos (SCSS) | |
Influenciado | |
Menos , Stylus , Trítio , Bootstrap (v4+) |
Sass (abreviação de folhas de estilo sintaticamente impressionantes ) é uma linguagem de script de pré-processador que é interpretada ou compilada em Cascading Style Sheets (CSS). SassScript é a própria linguagem de script.
Sass consiste em duas sintaxes . A sintaxe original, chamada de "sintaxe recuada", usa uma sintaxe semelhante a Haml . [2] Ele usa recuo para separar blocos de código e caracteres de nova linha para separar regras. A sintaxe mais recente, SCSS (Sassy CSS), usa formatação de bloco como a do CSS. Ele usa chaves para denotar blocos de código e ponto e vírgula para separar as regras dentro de um bloco. A sintaxe recuada e os arquivos SCSS recebem tradicionalmente as extensões .sass e .scss, respectivamente.
CSS3 consiste em uma série de seletores e pseudo-seletores que agrupam regras que se aplicam a eles. Sass (no contexto mais amplo de ambas as sintaxes) estende o CSS fornecendo vários mecanismos disponíveis em linguagens de programação mais tradicionais , particularmente linguagens orientadas a objetos , mas que não estão disponíveis para o próprio CSS3. Quando o SassScript é interpretado, ele cria blocos de regras CSS para vários seletores conforme definido pelo arquivo Sass. O interpretador Sass traduz SassScript em CSS. Como alternativa, o Sass pode monitorar o arquivo .sass ou .scss e convertê-lo em um arquivo .css de saída sempre que o arquivo .sass ou .scss for salvo. [3]
A sintaxe recuada é uma metalinguagem. SCSS é uma metalinguagem aninhada e um superconjunto de CSS, já que CSS válido é SCSS válido com a mesma semântica .
O SassScript fornece os seguintes mecanismos: variáveis , aninhamento , mixins e herança de seletor . [2]
História
Sass foi inicialmente projetado por Hampton Catlin e desenvolvido por Natalie Weizenbaum. [4] [5] Depois de suas versões iniciais, Weizenbaum e Chris Eppstein continuaram a estender Sass com SassScript, uma linguagem de script usada em arquivos Sass.
Principais implementações
O SassScript foi implementado em vários idiomas, as implementações dignas de nota são:
- A implementação oficial do Dart de código aberto . [6]
- O módulo de nó "sass" oficial no npm , que é Dart Sass compilado para JavaScript puro. [7]
- O módulo de nó "sass-embedded" oficial, que é um wrapper JavaScript em torno do executável Dart nativo. [8]
- A implementação original do Ruby de código aberto criada em 2006, [6] foi obsoleta devido à falta de mantenedores e atingiu o fim da vida útil em março de 2019. [9] [10]
- libSass, a implementação C++ oficial de código aberto , foi preterida em outubro de 2020. [11]
- O módulo de nó obsoleto "node-sass" no npm , baseado no obsoleto libSass. [12]
- JSass, uma implementação Java não oficial, [13] baseada no obsoleto libSass. [14]
- phamlp, uma implementação Sass/SCSS não oficial em PHP . [6]
- Vaadin tem uma implementação Java do Sass. [15]
- Firebug , uma extensão do Firefox XUL ("legado") para desenvolvimento web. [16] Desde então, foi obsoleto em favor de ferramentas de desenvolvedor integradas ao próprio Firefox. Parou de funcionar desde que o Firefox 57 abandonou o suporte para extensões XUL.
Características
Variáveis
Sass permite que variáveis sejam definidas. As variáveis começam com um cifrão ( $
). A atribuição de variável é feita com dois pontos ( :
). [16]
SassScript suporta quatro tipos de dados: [16]
As variáveis podem ser argumentos ou resultados de uma das várias funções disponíveis . [17] Durante a tradução, os valores das variáveis são inseridos no documento CSS de saída. [2]
SCSS | Sass | CSS Compilado |
---|---|---|
$cor primária : #3bbfce ; $margem : 16 px ;
.navegação de conteúdo { cor da borda : $ cor primária ; cor : escurecer ( $ cor primária , 10 % ); }
.border { padding : $ margem / 2 ; margem : $ margem / 2 ; border-color : $ cor primária ; }
|
$cor primária : #3bbfce $margem : 16 px
.content-navigation
border-color : $ cor primária : escurecer ( $cor primária , 10 % )
.border
padding : $margin / 2 margin : $margin / 2 border-color : $primary-color
|
: root {
--cor primária : #3bbfce ; --cor secundária : #2b9eab ; --margem : 8 px ; }
. navegação de conteúdo { border-color : var ( --secundary-color ) color : var ( --secundary-color ); }
. borda { preenchimento : 8 px ; margem : var ( --margin ); cor da borda : #3bbfce ; }
|
Aninhamento
CSS suporta aninhamento lógico, mas os próprios blocos de código não são aninhados. Sass permite que o código aninhado seja inserido um dentro do outro. [2]
SCSS | Sass | CSS Compilado |
---|---|---|
tabela .hl { margem : 2em 0 ; td .ln { text-align : right ; } }
li { fonte : { família : serifa ; peso : negrito ; tamanho : 1,3 em ; } }
|
tabela .hl margem : 2 em 0 td .ln text-align : right li fonte : família : serif peso : negrito tamanho : 1 .3 em
|
mesa . hl { margem : 2 em 0 ; } tabela . hl td . ln { alinhamento de texto : à direita ; }
li { font-family : serif ; peso da fonte : negrito ; tamanho da fonte : 1,3 em ; }
|
Tipos mais complicados de aninhamento, incluindo aninhamento de namespace e referências aos pais, são discutidos na documentação do Sass. [16]
SCSS | Sass | CSS Compilado |
---|---|---|
@mixin table-base { th { text-align : center ; peso da fonte : negrito ; } td , th { preenchimento : 2px ; } }
#data { @include table-base ; }
|
=table-base
th text-align : center font-weight : negrito td , th padding : 2 px
#data
+table-base
|
# data th { text-align : center ; peso da fonte : negrito ; } # data td , # data th { padding : 2 px ; }
|
rotações
Sass permite iterar sobre variáveis usando @for
, @each
e @while
, que podem ser usados para aplicar estilos diferentes a elementos com classes ou ids semelhantes.
Sass | CSS Compilado |
---|---|
$squareCount : 4 @for $i de 1 a $squareCount #square- #{ $i } cor de fundo : vermelho largura : 50 px * $i altura : 120 px / $i
|
# quadrado-1 { cor de fundo : vermelho ; largura : 50 px ; altura : 120 px ; }
# quadrado-2 { cor de fundo : vermelho ; largura : 100 px ; altura : 60px ; _ }
# quadrado-3 { cor de fundo : vermelho ; largura : 150 px ; altura : 40px ; _ }
|
argumentos
Mixins também suportam argumentos . [2]
Sass | CSS Compilado |
---|---|
=esquerda ( $dist ) float : margem esquerda -esquerda : $dist
#data +esquerda ( 10 px )
|
# dados { float : esquerda ; margem esquerda : 10 px ; }
|
Em combinação
Sass | CSS Compilado |
---|---|
=table-base
th text-align : center font-weight : negrito td , th padding : 2 px
=esquerda ( $dist ) float : margem esquerda -esquerda : $dist
#data +left ( 10 px ) +table-base
|
# dados { float : esquerda ; margem esquerda : 10 px ; } # data th { text-align : center ; peso da fonte : negrito ; } # data td , # data th { padding : 2 px ; }
|
Herança do seletor
Embora o CSS3 suporte a hierarquia do Document Object Model (DOM), ele não permite a herança do seletor. No Sass, a herança é obtida inserindo uma linha dentro de um bloco de código que usa a palavra-chave @extend e faz referência a outro seletor. Os atributos do seletor estendido são aplicados ao seletor de chamada. [2]
Sass | CSS Compilado |
---|---|
.error
border : 1 px #f00 background : #fdd
.error.intrusion tamanho da fonte : 1 .3 em peso da fonte : negrito
.badError @extend .error largura da borda : 3 px
|
. erro , . badError { borda : 1 px #f00 ; plano de fundo : #fdd ; }
. erro . intrusão ,
. badError . intrusão { tamanho da fonte : 1,3 em ; peso da fonte : negrito ; }
. badError { largura da borda : 3 px ; }
|
Sass suporta herança múltipla . [16]
libSass
Na Conferência de Desenvolvedores HTML5 de 2012, Hampton Catlin, o criador do Sass, anunciou a versão 1.0 do libSass, uma implementação C++ de código aberto do Sass desenvolvida por Catlin, Aaron Leung e a equipe de engenharia da Moovweb . [18] [19] O atual mantenedor do Sass, Chris Eppstein, expressou a intenção de contribuir também. [20]
De acordo com Catlin, libSass pode ser "colocado em qualquer coisa e terá Sass nele... certifique-se de que isso seria possível." [21]
Os objetivos de design do libSass são:
- Desempenho – Os desenvolvedores relataram aumentos de velocidade de 10x em relação à implementação Ruby do Sass. [22]
- Integração mais fácil – libSass facilita a integração do Sass em mais softwares. Antes do libSass, a integração estreita do Sass em uma linguagem ou produto de software exigia o empacotamento de todo o interpretador Ruby. Por outro lado, libSass é uma biblioteca estaticamente vinculável com zero dependências externas e interface semelhante a C, facilitando o empacotamento do Sass diretamente em outras linguagens e ferramentas de programação. Por exemplo, ligações libSass de software livre agora existem para Node , Go e Ruby . [19]
- Compatibilidade – o objetivo do libSass é a compatibilidade total com a implementação Ruby oficial do Sass. Este objetivo foi alcançado no libsass 3.3. [23]
integração IDE
IDE | Programas |
---|---|
Adobe Dreamweaver CC 2017 | |
Eclipse | |
Emacs | modo insolente |
JetBrains IntelliJ IDEA (Ultimate Edition) | |
JetBrains PhpStormName | |
JetBrains RubyMine | |
JetBrains WebStorm | |
Microsoft Visual Studio | paisagem mental |
Microsoft Visual Studio | SassyStudio |
Microsoft WebMatrix | |
NetBeans | |
vim | haml.zip |
Átomo | |
Código do Visual Studio | |
Sublime | |
Editar+ |
Veja também
Referências
- ^ ab "Dart Sass - versão mais recente" . github.com .
- ^ abcdef Marca de mídia (3.2.12). "Sass - Folhas de estilo sintaticamente impressionantes" . Sass-lang.com . Recuperado 2014-02-23 .
{{cite web}}
: CS1 maint: url-status ( link ) - ^ Sass - Tutorial de folhas de estilo sintaticamente impressionante
- ^ "Sass: folhas de estilo sintaticamente impressionantes" . sass-lang. com . Arquivado do original em 01/09/2013.
- ^ "Blog de Natalie Weizenbaum" . Arquivado do original em 2007-10-11.
- ^ abc "Sass / Scss". Drupal.org. 2009-10-21 . Recuperado 2014-02-23 .
- ^ "atrevido". www.npmjs.com .
- ^ "sass-embutido" . www.npmjs.com .
- ^ Weizenbaum, Natália. "Ruby Sass chegou ao fim da vida «Blog Sass". sass.logdown.com . Recuperado 2019-04-21 .
- ^ "Sass: Ruby Sass" . sass-lang. com . Recuperado 2019-04-21 .
- ^ "LibSass está obsoleto" . sass-lang. com . 26 de outubro de 2020.
- ^ "node-sass". www.npmjs.com .
- ^ "jsass - Uma implementação Java do compilador Sass (e algumas outras vantagens). - Google Project Hosting" . Recuperado 2014-02-23 .
- ^ "Documentação do JSass" . jsass.readthedocs.io .
- ^ "SassCompiler (Vaadin 7.0.7 API)" . Vaadin. com. 06/06/2013. Arquivado do original em 21/04/2014 . Recuperado 2014-02-23 .
- ^ abcde Sass (Folhas de estilo sintaticamente impressionantes) SASS_REFERENCE
- ^ Módulo: Sass::Script::Funções Funções Sass
- ^ H. Catlin (15/10/2012). "6 regras de design móvel de Hampton" . Conferência de Desenvolvedores HTML5. Arquivado do original em 15/12/2021 . Recuperado 2013-07-11 .
- ^ ab M. Catlin (2012-04-30). "libsass". Blog Moovweb. Arquivado do original em 2013-05-08 . Recuperado 2013-07-11 .
- ^ C. Eppstein [@chriseppstein] (15/04/2013). "Bons recursos para escrever produção, x-platform C++? Não codifiquei nenhum desde a faculdade, mas quero hackear libsass /cc @hcatlin @akhleung" (Tweet) . Recuperado 2021-03-19 – via Twitter .
- ^ A. Stacoviak & A. Thorp (2013-06-26). "Sass, libsass, Haml e muito mais com Hampton Catlin" . Arquivado do original em 2013-08-06 . Recuperado 2013-07-30 .
- ^ D. Le Nouaille (2013-06-07). "Sassc e Bourbon" . Recuperado 2013-07-11 .
- ^ "Compatibilidade Sass" . sass-compatibility.github.io . Recuperado 2019-11-29 .
links externos
- Website oficial