Je veux être en mesure de faire ce qui suit :
height: 25% - 5px;
Évidemment, lorsque je fais cela, j'obtiens l'erreur :
Incompatible units: 'px' and '%'.
Je veux être en mesure de faire ce qui suit :
height: 25% - 5px;
Évidemment, lorsque je fais cela, j'obtiens l'erreur :
Incompatible units: 'px' and '%'.
Sass ne peut pas effectuer d'opérations arithmétiques sur des valeurs qui ne peuvent pas être converties d'une unité à l'autre. Sass n'a aucun moyen de savoir exactement quelle est la largeur de "100 %" en termes de pixels ou de toute autre unité. Seul le navigateur peut le savoir.
Vous devez utiliser calc()
à la place. Vérifiez la compatibilité du navigateur sur Puis-je utiliser...
.foo {
height: calc(25% - 5px);
}
Si vos valeurs se trouvent dans des variables, vous devrez peut-être utiliser l'interpolation pour les transformer en chaînes de caractères (sinon, Sass essaie simplement d'effectuer des calculs arithmétiques) :
$a: 25%;
$b: 5px;
.foo {
width: calc(#{$a} - #{$b});
}
Il existe un calc
à la fois dans SCSS [compilation] et CSS [exécution]. Vous invoquez probablement la première au lieu de la seconde.
Pour des raisons évidentes, les unités de mélange ne fonctionneront pas à la compilation, mais elles fonctionneront à l'exécution.
Vous pouvez forcer ce dernier en utilisant unquote
une fonction SCSS.
.selector { height: unquote("-webkit-calc(100% - 40px)"); }
Désolé de relancer un vieux sujet, mais l'étirement de Compass avec un pseudo-sélecteur :after pourrait convenir à votre objectif. Par exemple, si vous voulez qu'un div remplisse la largeur de gauche à (50% + 10px) de l'écran, vous pourriez utiliser (dans la syntaxe indentée de SASS) :
.example
background: red
+stretch(0, -10px, 0, 0)
&:after
+stretch(0, 0, 0, 50%)
content: ' '
background: blue
L'élément :after remplit 50 % à droite de .example (laissant 50 % disponibles pour la largeur de .example), puis .example est étiré à cette largeur plus 10px.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.