SCSS problème compilation media queries non pris en compte
Résolu/Fermé
rdbn
Messages postés
95
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
26 décembre 2022
-
16 oct. 2021 à 20:21
rdbn Messages postés 95 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022 - 18 oct. 2021 à 13:43
rdbn Messages postés 95 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022 - 18 oct. 2021 à 13:43
A voir également:
- Media queries ne fonctionne pas
- Media creation tool - Télécharger - Systèmes d'exploitation
- Ps3 media server - Télécharger - Divers Réseau & Wi-Fi
- Telecharger windows media player - Télécharger - Lecture
- Media coder - Télécharger - Montage & Édition
- Vlc media player gratuit - Télécharger - Lecture
5 réponses
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
17 oct. 2021 à 10:13
17 oct. 2021 à 10:13
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
rdbn
Messages postés
95
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
26 décembre 2022
Modifié le 17 oct. 2021 à 13:49
Modifié le 17 oct. 2021 à 13:49
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 ?
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
17 oct. 2021 à 15:52
17 oct. 2021 à 15:52
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; } }
rdbn
Messages postés
95
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
26 décembre 2022
Modifié le 17 oct. 2021 à 19:16
Modifié le 17 oct. 2021 à 19:16
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 !!
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
18 oct. 2021 à 10:13
18 oct. 2021 à 10:13
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
rdbn
Messages postés
95
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
26 décembre 2022
18 oct. 2021 à 13:43
18 oct. 2021 à 13:43
Bonjour, d'accord merci pour vos explications clair et net !