Declarações de Propriedade
Na Sass assim como na CSS, as declarações de propriedade definem como os elementos que correspondem um seletor são estilizados. Porém a Sass adiciona funcionalidades adicionais para torná-las mais fáceis de escrever e automatizar. Antes de mais, um valor da declaração pode ser qualquer expressão de SassScript, que será avaliada e incluída no resultado.
SCSS Syntax
.circle {
$size: 100px;
width: $size;
height: $size;
border-radius: $size * 0.5;
}
Sass Syntax
.circle
$size: 100px
width: $size
height: $size
border-radius: $size * 0.5
CSS Output
.circle {
width: 100px;
height: 100px;
border-radius: 50px;
}
InterpolaçãoInterpolação permalink
Um nome de propriedade pode incluir interpolação, o que torna possível gerar dinamicamente as propriedades quando necessário. Tu podes mesmo interpolar o nome da propriedade inteira!
SCSS Syntax
@mixin prefix($property, $value, $prefixes) {
@each $prefix in $prefixes {
-#{$prefix}-#{$property}: $value;
}
#{$property}: $value;
}
.gray {
@include prefix(filter, grayscale(50%), moz webkit);
}
Sass Syntax
@mixin prefix($property, $value, $prefixes)
@each $prefix in $prefixes
-#{$prefix}-#{$property}: $value
#{$property}: $value
.gray
@include prefix(filter, grayscale(50%), moz webkit)
CSS Output
.gray {
-moz-filter: grayscale(50%);
-webkit-filter: grayscale(50%);
filter: grayscale(50%);
}
EncaixamentoEncaixamento permalink
Muitas propriedades de CSS começam com o mesmo prefixo que agem como tipo de espaço de nome. Por exemplo, font-family
, font-size
, e font-weight
todas começam com font-
. A Sass torna isto mais fácil e menos redundante permitindo que as declarações de propriedade sejam encaixadas. Os nomes da propriedade externa são adicionados à interna, separados por um hífen:
SCSS Syntax
.enlarge {
font-size: 14px;
transition: {
property: font-size;
duration: 4s;
delay: 2s;
}
&:hover { font-size: 36px; }
}
Sass Syntax
.enlarge
font-size: 14px
transition:
property: font-size
duration: 4s
delay: 2s
&:hover
font-size: 36px
CSS Output
.enlarge {
font-size: 14px;
transition-property: font-size;
transition-duration: 4s;
transition-delay: 2s;
}
.enlarge:hover {
font-size: 36px;
}
Algumas destas propriedades de CSS têm versões abreviadas que usam o espaço de nome de acordo com nome da propriedade. Para estas, podes escrever ambos valor abreviado e as versões encaixadas mais explícitas:
SCSS Syntax
.info-page {
margin: auto {
bottom: 10px;
top: 2px;
}
}
Sass Syntax
.info-page
margin: auto
bottom: 10px
top: 2px
CSS Output
.info-page {
margin: auto;
margin-bottom: 10px;
margin-top: 2px;
}
Declarações EscondidasDeclarações Escondidas permalink
Algumas vezes só queres que uma declaração de propriedade apareça por algum tempo. Se o valor de uma declaração for null
ou sequência de caracteres sem aspas vazia, a Sass não compilará esta declaração para o CSS:
Propriedades PersonalizadasPropriedades Personalizadas permalink
- Sass de Dart
- ✓
- LibSass
- since 3.5.0
- Sass de Ruby
- since 3.5.0
As versões mais antigas de LibSass e Sass de Ruby analisavam as declarações de propriedade personalizadas tal como qualquer outra declaração de propriedade, permitindo a gama completa de expressões de SassScript como valores. Mesmo quando usares estas versões, é recomendado que uses a interpolação para injetar os valores de SassScript para compatibilidade para a frente.
Consulte a página de mudança de rutura por mais detalhes.
As propriedades personalizadas de CSS, também conhecidas como variáveis de CSS, tem uma sintaxe de declaração invulgar: elas permitem praticamente qualquer texto valores das suas declarações. Além disto, estes valores são acessíveis ao JavaScript, então qualquer valor pode potencialmente ser relevante para o utilizador. Isto inclui valores que normalmente seriam analisados como SassScript.
Por causa disto, a Sass analisa as declarações de propriedade personalizada de maneira diferente de outras declarações de propriedade. Todas as fichas, incluindo aqueles que se parecem com a SassScript, são passadas para CSS como são. A única exceção é interpolação, que é a única maneira de injetar valores dinâmicos para uma propriedade personalizada.
SCSS Syntax
$primary: #81899b;
$accent: #302e24;
$warn: #dfa612;
:root {
--primary: #{$primary};
--accent: #{$accent};
--warn: #{$warn};
// Muito embora isto se pareça com uma variável de Sass,
// é CSS válida então não é avaliada.
--consumed-by-js: $primary;
}
Sass Syntax
$primary: #81899b
$accent: #302e24
$warn: #dfa612
:root
--primary: #{$primary}
--accent: #{$accent}
--warn: #{$warn}
// Muito embora isto se pareça com uma variável de Sass,
// é CSS válida então não é avaliada.
--consumed-by-js: $primary
CSS Output
:root {
--primary: #81899b;
--accent: #302e24;
--warn: #dfa612;
--consumed-by-js: $primary;
}
⚠️ Atenção!
Infelizmente, interpolação remove as aspas das sequências de caracteres, o que a torna difícil usar sequências de caracteres com aspas como valores para propriedades personalizadas quando vêm das variáveis de Sass. Como uma maneira de dar a volta a isto, podes usar a função meta.inspect()
para preservar as aspas:
SCSS Syntax
@use "sass:meta";
$font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto;
$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas;
:root {
--font-family-sans-serif: #{meta.inspect($font-family-sans-serif)};
--font-family-monospace: #{meta.inspect($font-family-monospace)};
}
Sass Syntax
@use "sass:meta"
$font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto
$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas
:root
--font-family-sans-serif: #{meta.inspect($font-family-sans-serif)}
--font-family-monospace: #{meta.inspect($font-family-monospace)}
CSS Output
:root {
--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto;
--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas;
}