Operadores Numéricos
A Sass suporta o conjunto padrão de operadores matemáticos para números. Eles são convertidos automaticamente entre unidades compatíveis.
<expression> + <expression>
adiciona o primeiro valor da expressão ao segundo.<expression> - <expression>
subtrai o primeiro valor da expressão do segundo.<expression> * <expression>
multiplica o primeiro valor da expressão pelo segundo.<expression> % <expression>
retorna o resto do valor da primeira expressão dividido pelo segundo. Este é conhecido como operador modulo.
Números sem unidade podem ser usados com números de qualquer unidade:
Números com unidades incompatíveis não podem ser usados com adição, subtração, ou modulo:
Operadores UnáriosOperadores Unários permalink
Tu podes também escrever +
e -
como operadores unários, que recebem apenas um valor:
+<expression>
retorna o valor da expressão sem mudá-lo.-<expression>
retorna a versão negativa do valor da expressão.
⚠️ Atenção!
Uma vez que -
pode fazer referência a ambos subtração e negação unária, pode ser confuso distinguir numa lista separada por espaço. Para estar a salvo:
- Sempre escreva espaços nos ambos lados de
-
quando subtraíres. - Escreva uma espaço antes
-
mas não depois para um número negativo ou uma negação unária. - Envolva a negação unária em parêntesis se estiver numa lista separada por espaço.
Os diferentes significados de -
na Sass assumem precedência na seguinte ordem:
-
como parte dum identificador. A única exceção são unidades; A Sass normalmente permite qualquer identificador válido ser usado como um identificador, mas as unidades não podem conter um hífen seguido por dígito.-
entre um expressão e um número literal sem espaço em branco, que é analisado como subtração.-
no início dum número literal, que é analisado como um número negativo.-
entre dois números apesar do espaço em branco, que é analisado como uma subtração.-
antes de um valor senão um número literal, que é analisado como negação unária.
DivisãoDivisão permalink
- Sass de Dart
- since 1.33.0
- LibSass
- ✗
- Sass de Ruby
- ✗
Ao contrário dos outros operadores matemáticos, a divisão na Sass é feita com a função math.div()
. Embora muitas linguagens de programação usem /
como um operador de divisão, na CSS /
é usada como um separador (como em font: 15px/32px
ou hsl(120 100% 50% / 0.8)
). Ainda que a Sass suporte o uso de /
como um operador de divisão, este está depreciado e será removido numa versão futura.
Valores Separados Por BarraValores Separados Por Barra permalink
Por agora ainda que a Sass continue a suportar /
como um operador de divisão, tem de ter uma maneira de desambiguar entre /
como um separador e /
como divisão. Para fazer isto funcionar, se dois números forem separados por /
, a Sass imprimirá o resultado como separado por barra no lugar de dividido a menos que uma destas condições seja cumprida:
- Uma ou outra expressão não é nada senão um número literal.
- O resultado é armazenado numa variável ou retornado por uma função.
- A operação é envolvida por parêntesis, a menos que estes parêntesis estejam no lado de fora duma lista que contém a operação.
- O resultado é usado como parte duma outra operação (que não
/
). - O resultado é retornado por um cálculo.
Tu podes usar list.slash()
para forçar /
ser usado como um separador.
UnidadesUnidades permalink
A Sass tem poderoso suporte para manipulação de unidades baseada em como os cálculos de unidade do mundo real funcionam. Quando dois números forem multiplicados, suas unidades também são multiplicadas. Quando um número é dividido por um outro, o resultado recebe as unidades do seu numerador do primeiro número e as unidades do seu denominador do segundo número. Um número pode ter qualquer número de unidades no numerador e/ou no denominador.
⚠️ Atenção!
Uma vez que a CSS não suporta unidades complexas como pixeis quadrado, usar um número com unidades complexas como um valor de propriedade produzirá um erro. Mesmo assim isto é uma funcionalidade disfarçada; se não estiveres acabar com a unidade correta, normalmente significa que existe algo de errado com os teus cálculos! E lembra-te de que, podes sempre usar a regra @debug
para confirmares as unidades de qualquer variável ou expressão.
A Sass converterá automaticamente entre unidades compatíveis, ainda que a unidade que escolherá para o resultado dependa de qual implementação de Sass estás a usar. Se experimentares combinar unidades incompatíveis, como 1in + 1em
, a Sass lançará um erro.
De acordo com os cálculos de unidade no mundo real, ase o numerador contém unidades que são compatíveis com as unidades no denominador (como math.dv(96px, 1in)
), anular-se-ão. Isto torna fácil definir uma proporção que podes usar ou converter entre unidades. No exemplo abaixo, definimos a velocidade desejada para um segundo por 50 pixeis, e depois multiplicamos este pelo número de pixeis que a transição ocupa para receber o tempo deveria levar.
⚠️ Atenção!
Se a tua aritmética dá-te a unidade errada, provavelmente precisarás de verificar a tua matemática. Tu podes estar a deixar de usar as unidades para uma quantidade que deveria té-las! Ser claro quanto a unidade permite a Sass dar-te erros úteis quando algo não estiver correto.
Tu deverias de maneira especial evitar usar interpolação como #{$number}px
. Isto na verdade não cria um número! Isto cria uma sequência de caracteres não citada ou que não é envolvida por aspas que se parece como um número, mas não funcionará com quaisquer operações de número ou funções. Tente tornar a tua matemática clara quanto a unidade para que $number
já tenha a unidade px
, ou escreva $number * 1px
.
⚠️ Atenção!
As percentagens na Sass funcionam tal como toda outra unidade. Elas não são permutáveis com decimais, porque nos decimais e percentagens de CSS significam coisas diferentes. Por exemplo, 50%
é um número com %
como sua unidade, e a Sass o considera diferente do número 0.5
.
Tu podes converter entre decimais e percentagens usando a aritmética de unidade. math.div($percentage, 100%)
retornará o decimal correspondente, e $decimal * 100%
retornará a percentagem correspondente. Tu podes também usar a função math.percentage()
como uma maneira mais explícita de escrever $decimal * 100%
.