Cela peut être Compass 101, mais quelqu'un a-t-il écrit un mix qui définit la valeur alpha d'une couleur? Idéalement, j'aimerais que le mixin prenne n'importe quelle forme de définition de couleur et applique la transparence:
@include set-alpha( red, 0.5 ); //prints rgba(255, 0, 0, 0.5);
@include set-alpha( #ff0000, 0.5 ); //prints rgba(255, 0, 0, 0.5);
@include set-alpha( rgb(255,0,0), 0.5 ); //prints rgba(255, 0, 0, 0.5);
Utilisez la fonction rgba
intégrée à Sass
Définit l'opacité d'une couleur.
Exemples:
rgba (# 102030, 0.5) => rgba (16, 32, 48, 0.5)
rgba (bleu, 0,2) => rgba (0, 0, 255, 0,2)Paramètres:
Couleur (couleur)
(Nombre) alpha - Un nombre entre 0 et 1Résultats:
(Couleur)
Code:
rgba(#ff0000, 0.5); // Output is rgba(255,0,0,0.5);
J'utilise le plugin rgbapng compass
rgbapng est un plugin Compass pour fournir un navigateur compatible * Soutien RGBA. Il fonctionne en créant des fichiers PNG alpha-transparents à pixel unique à la volée pour les navigateurs qui ne supportent pas RGBA. Il utilise le pur Ruby Bibliothèque ChunkyPNG résultant en une installation sans problème et déploiement.
Installer
gem install compass-rgbapng
Usage
@include rgba-background(rgba(0,0,0,0.75));
Compile à:
background: url('/images/rgbapng/000000bf.png?1282127952');
background: rgba(0, 0, 0, 0.75);
Il y a aussi ie-hex-str () pour le format ## AARRGGBB d'IE:
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str(#fdfdfd)}', endColorstr='#{ie-hex-str(#f6f6f6)}',GradientType=0); /* IE6-9 */
from_hex(hex_string, alpha = nil);
De la documentation :
Créez une nouvelle couleur à partir d'une chaîne hexadécimale CSS valide. Le hash principal est optionnel.
La fonction rgba ne fonctionne pas sur les couleurs sans transparence, elle renvoie à nouveau un hexagone. Après tout, il n'est pas fait pour transformer hex en rgba, nous ne faisons que tirer profit de l'hex ne permet pas (encore) d'alpha.
rgba(#fff, 1) // returns #fff
J'ai donc créé toutes les petites fonctions qui construisent la chaîne rgb. Je n'ai pas besoin de traiter les transparents pour l'instant.
@function toRGB ($color) {
@return "rgb(" + red($color) + ", " + green($color) + ", " + blue($color)+ ")";
}