Bonjour,
Je réalise un framework css avec sass et compass spécialement pour mes projets et leur donner une cohérence.
En revanche je plante sur un point.
Je souhaite faire différent style de button. Pour cela dans mon fichier components j'ai créé un fichier _button.scss et un dossier button. Dans mon dossier button j'ai créé différent fichier:
_btn-outline.scss, _btn-round.scss...

Puis dans mon fichier _buttons.scss j'ai créé quelque mixins et css par default pour tous les boutons.
Puis je réalise la partie dynamique avec un @each et un array $import-btns.
Mais dans mon $each la ligne:

@import 'button/'#{$file};

provoque une erreur...

J'ai beau chercher je ne vois pas mon erreur.
Quelqu'un pour m'aider ?
Merci

8 réponses


Daniel68
Auteur
Réponse acceptée

Merci maxslayer44 pour ton aide.
J'ai cherché pendant 1h sur des forums et la doc pour voir si c'est possible. Comme tu l'as expliqué Sass ne le permet apparement pas (d'autres personnes ont le même probleme que moi). Ça me semble très bizzare car il s'agit d'une application plutôt courante.

Daniel68
Auteur

J'utilise déjà les mixins et fonctions. Là n'est pas le problème (ça n'a rien avoir).
Je souhaite juste parcourir un tableau et importer des fichiers sass si besoin.
En gros mon framework detecte des class que je donne à certains de mes éléments html/php, puis sass s'occupe de les charger avec un tableau qui est donc rempli dynamiquement. Ce qui me permet de ne charger que les éléments necessaire pour chacun de mes projets, sans même devoir aller modifier ne serait-ce qu'un seul de mes fichiers sass. Tout est automatisé je n'ai plus qu'à me concentrer sur le php/html.

Mais après avoir codé tout ça, je reste bloqué sur l'import dynamique. Le bout de code posté dans mon premier message n'ai pas executé.

Et ça tu as testé ?

@import "button/#{$file}";
Daniel68
Auteur

@Grafikart: Oui (ainsi que plusieurs autres façon d'écrire mais aucun ne marche.
Je me demande si c'est pas lié au fait que le fichier soit sur Dropbox, et que finalement le service bloque le chargement depuis des fichiers parents, car je n'ai aucune erreur d'indiqué.

Je me demande si c'est pas lié au fait que le fichier soit sur Dropbox

Tu veux dire que tes fichiers sass ne sont pas dans ton serveur web ?

Daniel68
Auteur

En faite je développe le framework en ayant placé tout mes fichiers sur dropbox. Par la suite je prevois de replacer le dossier sass (en modifiant config.rb) dans chacun de mes webroots de mes differents projets. Dans mon dossier sass j'ai un fichier _variables.scss qui contient donc toutes les variables (codes couleurs, polices...) Puis je lance compass watch pour qu'il me créait tous les css adaptés avec les variables pour mes différents projets (un framework classique quoi...).
Je me demande juste si le fait de l'avoir fait dans dropbox ne peut pas provoquer des comportements que je n'aurais pas eu sur mon ordi ou un serveur perso.

Bonsoir,
Peux-tu nous coller ton code entier (la boucle et tout) ?
Sinon, de mémoire, on ne peut pas faire d'importation dynamique avec SASS comme on le ferait en PHP, ça a peut être bougé depuis le temps, mais y a un moment faire un import dans une condition levait une erreur, si ça n'a pas changé le fait que tu ne puisse pas le faire avec ta méthode n'est pas incohérent.
Ensuite, Dropbox n'est pas trop casse pied, il ne devrait pas poser de problème (contrairement à Google Drive qui peut poser des problèmes d'accès assez gênants par moment)

Tu ne pourra pas faire d'import dynamique en Sass, tout simplement car le compilateur importe les fichier avant d'évaluer les contenu.
En espérant avoir pu t'aider.