SCSS problème compilation media queries non pris en compte
Résolu
rdbn
Messages postés
95
Date d'inscription
Statut
Membre
Dernière intervention
-
rdbn Messages postés 95 Date d'inscription Statut Membre Dernière intervention -
rdbn Messages postés 95 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voila mon problème mes medias queries ne sont pas pris en compte, ils le sont seulement lorsque que je met un !important, mais ceci prend le dessus sur tout mon scss et toute les tailles d'écran comme s'il remplacé mon code d'origine et cela même si c'est dans un media de taille bien définie...
j'en conclu que je n'est pas d'erreur de codage mais sûrement lors de la compilation...
exemple :
En omettant le !important rien ne ce passe mais lorsque que je le met, celui ci me le définie bien mais partout pour toute taille d'écran.
comment mon code scss est organisé :
dans le app.scss d'origine, j'intègre toute mes autre pas scss
en faisant un @import de chaque page tout en haut;
et à la fin j'importe celui du media;
j'ai directement codé le media dans le app.scss à la fin aucun changement...
j'ai besoin d'aide svp merci !
Voila mon problème mes medias queries ne sont pas pris en compte, ils le sont seulement lorsque que je met un !important, mais ceci prend le dessus sur tout mon scss et toute les tailles d'écran comme s'il remplacé mon code d'origine et cela même si c'est dans un media de taille bien définie...
j'en conclu que je n'est pas d'erreur de codage mais sûrement lors de la compilation...
exemple :
// Tablet Portrait @media screen and(min-width: 768px) { .nav-service { a { font-size: 20px !imoprtant; margin-right: 40px !important; } } }
En omettant le !important rien ne ce passe mais lorsque que je le met, celui ci me le définie bien mais partout pour toute taille d'écran.
comment mon code scss est organisé :
dans le app.scss d'origine, j'intègre toute mes autre pas scss
en faisant un @import de chaque page tout en haut;
et à la fin j'importe celui du media;
j'ai directement codé le media dans le app.scss à la fin aucun changement...
j'ai besoin d'aide svp merci !
Configuration: Windows / Chrome 94.0.4606.71
A voir également:
- Media query scss
- Windows media player - Télécharger - Lecture
- Power query download - Télécharger - Tableur
- Media creation tool - Télécharger - Systèmes d'exploitation
- Media coder - Télécharger - Montage & Édition
- Ps3 media server - Télécharger - Divers Réseau & Wi-Fi
5 réponses
Bonjour,
Il faut ajouter un espace après l'opérateur "and" dans la media query sinon on considère que tu souhaites appeler une fonction and() :
Sinon, il faudrait voir quel est le code css compilé pour identifier le problème, avec notamment le code css appliqué sur les liens sans media query.
Le problème peut venir du poids des sélecteurs css : si le poids du sélecteur css utilisé pour définir pour les règles sans media query est supérieur au poids du sélecteur css utilisé dans la media query, la surcharge dans la media query ne sera pas appliqué.
Exemple : https://jsfiddle.net/zL9ubj0r/
Plus d'infos concernant le poids css : https://www.commentcamarche.net/faq/33023-les-poids-css
Il faut ajouter un espace après l'opérateur "and" dans la media query sinon on considère que tu souhaites appeler une fonction and() :
@media screen and (min-width: 768px) { /* ... */ }
Sinon, il faudrait voir quel est le code css compilé pour identifier le problème, avec notamment le code css appliqué sur les liens sans media query.
Le problème peut venir du poids des sélecteurs css : si le poids du sélecteur css utilisé pour définir pour les règles sans media query est supérieur au poids du sélecteur css utilisé dans la media query, la surcharge dans la media query ne sera pas appliqué.
Exemple : https://jsfiddle.net/zL9ubj0r/
Plus d'infos concernant le poids css : https://www.commentcamarche.net/faq/33023-les-poids-css
Bonjour, oui effectivement pour l'espace entre avec le and une erreur d'inattention merci.
j'ai lus vos liens très intéressant ca m'a aidé à comprendre le principe de surcharge et de poids en détail. donc j'ai vérifié dans mon code mais je ne vois pas en quoi mon code et plus "lourds" en poids que mon media query même si je suis sur que le problème viens de la car quand je charge la page le temps d'un instant je vois la taille de mon media query puis revient au css.
pour moi c'est pris en compte mais le code css reprends le dessus.
Voici ma navbar
Voici mon scss
J'ai chercher dans le css qui a était compilé
Voici le code généré
Pour moi ce sont les mêmes "surcharges" css compilé vs scss
J'ai loupé quelque chose ?
j'ai lus vos liens très intéressant ca m'a aidé à comprendre le principe de surcharge et de poids en détail. donc j'ai vérifié dans mon code mais je ne vois pas en quoi mon code et plus "lourds" en poids que mon media query même si je suis sur que le problème viens de la car quand je charge la page le temps d'un instant je vois la taille de mon media query puis revient au css.
pour moi c'est pris en compte mais le code css reprends le dessus.
Voici ma navbar
{# navbar service #} <nav class="navbar navbar-expand-sm navbar-dark bg-dark nav-service"> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarNavAltMarkup"> <a class="nav-link" href="{{ path('app_products') }}">Produits</a> <a class="nav-link" href="#">Service</a> <a class="nav-link" href="#">Aide</a> <a class="nav-link" href="#">A propos</a> </div> </nav>
Voici mon scss
// ********************* NAVBAR SERVICE (PRODUIT - SERVICE - AIDE - A PROPOS) ********************* // body { .nav-service { .navbar-collapse { justify-content: flex-end; .nav-link { // j'ai modifié le a par sa class "nav-link" font-weight: 500; font-size: 25px; padding-top: 0; padding-bottom: 0; margin-right: 80px; text-decoration: none; color: $blanc; &:hover { color: $orange; transition-duration: 200ms; } } } }
J'ai chercher dans le css qui a était compilé
Voici le code généré
body .nav-service .navbar-collapse { justify-content: flex-end; } body .nav-service .navbar-collapse .nav-link { font-weight: 500; font-size: 25px; padding-top: 0; padding-bottom: 0; margin-right: 80px; text-decoration: none; color: #FFFFFF; } body .nav-service .navbar-collapse .nav-link:hover { color: #b55400; transition-duration: 200ms; }
Pour moi ce sont les mêmes "surcharges" css compilé vs scss
J'ai loupé quelque chose ?
Le poids du sélecteur dans la media query
Il faut éviter de faire trop d'imbrication en scss.
En plus d'alourdir le poids des sélecteurs, ca alourdit également le css compilé : par exemple avec le sélecteur "body" qui est répété inutilement pour chaque règle.
SCSS :
CSS :
.nav-service aou
.nav-service .nav-linkest bien inférieur au poids du sélecteur
body .nav-service .navbar-collapse .nav-link.
Il faut éviter de faire trop d'imbrication en scss.
En plus d'alourdir le poids des sélecteurs, ca alourdit également le css compilé : par exemple avec le sélecteur "body" qui est répété inutilement pour chaque règle.
SCSS :
$blanc: white; $orange: orange; body { background: black; } .nav-service { .navbar-collapse { justify-content: flex-end; } .nav-link { font-weight: 500; font-size: 25px; padding-top: 0; padding-bottom: 0; margin-right: 80px; text-decoration: none; color: $blanc; &:hover { color: $orange; transition-duration: 200ms; } } } @media screen and (min-width: 768px) { .nav-service { .nav-link { font-size: 20px; margin-right: 40px; color: red; } } }
CSS :
body { background: black; } .nav-service .navbar-collapse { justify-content: flex-end; } .nav-service .nav-link { font-weight: 500; font-size: 25px; padding-top: 0; padding-bottom: 0; margin-right: 80px; text-decoration: none; color: white; } .nav-service .nav-link:hover { color: orange; transition-duration: 200ms; } @media screen and (min-width: 768px) { .nav-service .nav-link { font-size: 20px; margin-right: 40px; color: red; } }
D'accord je vois bien mieux donc dans la mesure du possible à partir que combien les imbrications reste correctement compilé ou du moins correcte à codé ?
parceque sass c'est encore nouveau pour moi et j'ai trouvé les imbrications utile ! j'ai par exemple dans des parties de mon code des imbrications jusqu'à 6 couches ? j'abuse ? lol
Je voulais rajouter aussi par exemple si je mettais dans mon media ceci cela reviendrais à ne plus surchargé ?
MAIS SINON J'AI BIEN COMPRIS MES ERREURS MERCI !!
parceque sass c'est encore nouveau pour moi et j'ai trouvé les imbrications utile ! j'ai par exemple dans des parties de mon code des imbrications jusqu'à 6 couches ? j'abuse ? lol
Je voulais rajouter aussi par exemple si je mettais dans mon media ceci cela reviendrais à ne plus surchargé ?
$media screen and (min-with: 768px) { body { .nav-service { .navbar-collapse { justify-content: flex-end; .nav-link { // j'ai modifié le a par sa class "nav-link" font-weight: 500; font-size: 25px; padding-top: 0; padding-bottom: 0; margin-right: 80px; text-decoration: none; color: $blanc; &:hover { color: $orange; transition-duration: 200ms; } } } } }
MAIS SINON J'AI BIEN COMPRIS MES ERREURS MERCI !!
Il n'y a pas de limite théorique au nombre d'imbrication en scss, tout comme il n'y a pas de limite sur le poids des sélecteurs pour les règles css.
Néanmoins ls css repose sur le principe d'héritage et de réutilisabilité. En général on définit un style général pour nos classes auxquels ont peut surcharger certaines propriétés en spécifiant des sélecteurs plus lourds :
Tous les éléments html sont dans la balise body, il est donc inutile de préciser ce sélecteur pour chacune de tes règles css, il est donc inutile d'imbriquer tout ton code scss dans body { ... }.
Puisque à priori tu utilises Bootstrap, tu peux aussi consulter le code scss de ce framework sur github pour voir d'autres exemples d'utilisation.
Néanmoins ls css repose sur le principe d'héritage et de réutilisabilité. En général on définit un style général pour nos classes auxquels ont peut surcharger certaines propriétés en spécifiant des sélecteurs plus lourds :
/* CSS */ /* style par défaut de tout les .nav-item */ .nav-item { font-size: 16px; padding: 5px 30px; } /* style des .nav-item dans .nav-services */ .nav-service .nav-item { /* hérite du padding de .nav-item */ font-size: 20px; /* surcharge font-size */ } /* style du dernier .nav-item dans .nav-services */ .nav-service .nav-item:last-child { /* hérite du font-size et du padding de .nav-service .nav-item */ color: red; }
Tous les éléments html sont dans la balise body, il est donc inutile de préciser ce sélecteur pour chacune de tes règles css, il est donc inutile d'imbriquer tout ton code scss dans body { ... }.
Puisque à priori tu utilises Bootstrap, tu peux aussi consulter le code scss de ce framework sur github pour voir d'autres exemples d'utilisation.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question