Lorsque l'on a une cascade de fichiers SCSS définie dans un plugin, dont on en surcharge un dans un autre plugin ou un thème, comment spécifier le chemin d'une image dans une url de background ?
Car si l'on met une url(img/mon_image.jpg), le chemin sera recherché par rapport au fichier SCSS "racine" qui contient les @import et non par rapport au fichier @importé surchargé...
Le chemin est tous simplement pas le chemin relatif vers l'image dans le .css généré ?
Le 28/01/2018 à 22:44, Stéphane Santon a écrit :
Bonjour,
Lorsque l'on a une cascade de fichiers SCSS définie dans un plugin, dont on en surcharge un dans un autre plugin ou un thème, comment spécifier le chemin d'une image dans une url de background ?
Car si l'on met une url(img/mon_image.jpg), le chemin sera recherché par rapport au fichier SCSS "racine" qui contient les @import et non par rapport au fichier @importé surchargé...
Exemple : Plugin squelette Galactic
- Le fichier principal est galactic/scss/galactic.scss
- Lui-même appelle galactic/scss/galactic_theme.scss (vide par défaut)
Je crée un autre plugin avec
- monplugin/scss/galactic_theme.scss comme surcharge
- qui contient
body {
background: transparent url(img/monimage.jpg) no-repeat fixed center;
- et l'image dans
monplugin/scss/img/monimage.jpg
Au final, le css compilé de galactic.scss donne :
background: transparent url('http://example.com/plugins/galactic/scss/img/monimage.jpg’) no-repeat fixed center;
emplacement de l'image relatif au fichier scss racine galactic.scss et non au fichier scss qui contient l'url.
Donc il ne pointe et ne trouve pas l'image.
Comment faire ?
Pour l'instant j'insère un lien vers un vrai fichier CSS surchargeable dans head-theme.html, mais me paraît bricolage.
Merci
Le 29/01/2018 à 09:07, Chourak a écrit :
Salut,
Le chemin est tous simplement pas le chemin relatif vers l'image dans le .css généré ?
Le 28/01/2018 à 22:44, Stéphane Santon a écrit :
Bonjour,
Lorsque l'on a une cascade de fichiers SCSS définie dans un plugin, dont on en surcharge un dans un autre plugin ou un thème, comment spécifier le chemin d'une image dans une url de background ?
Car si l'on met une url(img/mon_image.jpg), le chemin sera recherché par rapport au fichier SCSS "racine" qui contient les @import et non par rapport au fichier @importé surchargé...
Il y a bien
url(../../monplugin/scss/img/monimage.jpg)
qui fonctionne sur ma config, mais c'est du bricolage instable car si un plugin passe en auto, j'aurai un décalage de dossiers...
Le 29 janvier 2018 à 14:22, Stéphane Santon <m.spiprezo@team-santonum.com <mailto:m.spiprezo@team-santonum.com>> a écrit :
Bonjour,
Exemple : Plugin squelette Galactic
- Le fichier principal est galactic/scss/galactic.scss
- Lui-même appelle galactic/scss/galactic_theme.scss (vide par défaut)
Je crée un autre plugin avec
- monplugin/scss/galactic_theme.scss comme surcharge
- qui contient
body {
background: transparent url(img/monimage.jpg) no-repeat fixed center;
La seule solution que j'ai trouvé c'est de copier simplement galactic.scss dans ton thème, puisse que c'est ce fichier qui est compilé au final.
Tout chemin relatif se fera donc par rapport à lui et pas pas rapport au fichiers "@importés"
Et tu continues à personnaliser ton thème ailleurs (galactic_theme.scss)
Il y a bien
url(../../monplugin/scss/img/monimage.jpg)
qui fonctionne sur ma config, mais c'est du bricolage instable car si un plugin passe en auto, j'aurai un décalage de dossiers...
Le 29 janvier 2018 à 14:22, Stéphane Santon <m.spiprezo@team-santonum.com <mailto:m.spiprezo@team-santonum.com>> a écrit :
Bonjour,
Exemple : Plugin squelette Galactic
\- Le fichier principal est galactic/scss/galactic\.scss
\- Lui\-même appelle galactic/scss/galactic\_theme\.scss \(vide par défaut\)
Je crée un autre plugin avec
\- monplugin/scss/galactic\_theme\.scss comme surcharge
\- qui contient
body \{
background: transparent url\(img/monimage\.jpg\) no\-repeat fixed center;
\- et l'image dans
monplugin/scss/img/monimage\.jp <http://monimage.jp>g
Au final, le css compilé de galactic\.scss donne :
background: transparent
url\('http://example.com/plugins/galactic/scss/img/monimage.jpg
<http://example.com/plugins/galactic/scss/img/monimage.jpg>'\)
no\-repeat fixed center;
emplacement de l'image relatif au fichier scss racine galactic\.scss
et non au fichier scss qui contient l'url\.
Donc il ne pointe et ne trouve pas l'image\.
Comment faire ?
Pour l'instant j'insère un lien vers un vrai fichier CSS
surchargeable dans head\-theme\.html, mais me paraît bricolage\.
Merci
Lorsque l'on a une cascade de fichiers SCSS définie dans un plugin, dont on en surcharge un dans un autre plugin ou un thème, comment spécifier le chemin d'une image dans une url de background ?
Car si l'on met une url(img/mon_image.jpg), le chemin sera recherché par rapport au fichier SCSS "racine" qui contient les @import et non par rapport au fichier @importé surchargé...
Je viens de tomber sur la même problématique.
Et ce qui a marché pour moi avec un squelette less dynamique (.less.html)
c'est :
background: url(/#DOSSIER_SQUELETTE/oiseaux.png) no-repeat;
avec oiseaux.png dans le même dossier que le fichier less
Oui, j'avais pensé aussi à un scss dynamique, c'est propre, et peut-être la meilleure solution, la plus perenne.
Mais le temps de compression scss est déjà tellement long...
J'hésite entre cette méthode et l'appel à un css non compilé...
Merci
Le 29/01/2018 à 15:32, RealET a écrit :
Stéphane Santon a écrit le 28/01/2018 à 22:44 :
Bonjour,
Lorsque l'on a une cascade de fichiers SCSS définie dans un plugin, dont on en surcharge un dans un autre plugin ou un thème, comment spécifier le chemin d'une image dans une url de background ?
Car si l'on met une url(img/mon_image.jpg), le chemin sera recherché par rapport au fichier SCSS "racine" qui contient les @import et non par rapport au fichier @importé surchargé...
Je viens de tomber sur la même problématique.
Et ce qui a marché pour moi avec un squelette less dynamique (.less.html)
c'est :
background: url(/#DOSSIER_SQUELETTE/oiseaux.png) no-repeat;
avec oiseaux.png dans le même dossier que le fichier less
Oui, j'avais pensé aussi à un scss dynamique, c'est propre, et peut-être
la meilleure solution, la plus perenne.
Mais le temps de compression scss est déjà tellement long...
J'hésite entre cette méthode et l'appel à un css non compilé...
Ça dépend aussi de quelle partie du veux personnaliser, si elle est
complexe et si elle a besoin des variables ou mixins fourni dans le
thème SCSS.
Car si ce n'est pas le cas (juste changer une image de fond, ce genre),
la priorité au plus simple c'est juste la cascade CSS de base. Donc
avoir un fichier CSS qui vient après, et changer le style des choses que
tu veux avec le même sélecteur ou avec un sélecteur plus fort.
Par contre quand on a besoin des variables ou mixins, là oui, c'est très
problématique…
Par contre quand on a besoin des variables ou mixins, là oui, c'est très
problématique…
pour ça le seul truc il me semble est que le premier plugin doit prévoir les surcharges, un fichier qu'il déclare et qui est vide, qui peut accueillir les surcharges du second plugin :
dans le premier, un scss qui charge les autres avec des fichiers *-perso vides @import 'css/theme'; @import 'css/theme-perso';
et donc le plugin qui surcharge crée le fichier css/_theme-perso.scss
Le 29/01/2018 à 19:10, chankalan@choc0.net a écrit :
et donc le plugin qui surcharge crée le fichier css/_theme-perso.scss
Oui mais ça c'est facile et c'est justement ce que fait déjà galactic.
Mais ça reste problématique pour la question de départ qui est que les
images sont cherchés relativement au fichier SCSS racine, donc pas
possible d'avoir ses images dans son sous-plugin (ce qui est le cas pour
la cascade CSS basique).
Et en faisant un scss perso dans ton plugin du genre theme.scss avec un @import du galactic.scss et dans le reste du fichier tes styles persos ?
Le 28/01/2018 à 22:44, Stéphane Santon a écrit :
Bonjour,
Lorsque l'on a une cascade de fichiers SCSS définie dans un plugin, dont on en surcharge un dans un autre plugin ou un thème, comment spécifier le chemin d'une image dans une url de background ?
Car si l'on met une url(img/mon_image.jpg), le chemin sera recherché par rapport au fichier SCSS "racine" qui contient les @import et non par rapport au fichier @importé surchargé...