28163 sujets

CSS et mise en forme, CSS3

Bonjour à vous tous,

J'ai trouvé ce site qui me semble intéressant : https://isellsoap.github.io/specificity-visualizer/
Il permet de connaître la spécificité des déclarations CSS, c'est-à-dire de connaître la valeur de l'importance de chaque déclaration. Ainsi, chaque déclaration d'élément vaut 0,0,1 (ou 1), chaque déclaration de classe vaut 0,1,0 (ou 10), chaque déclaration d'identifiant vaut 1,0,0 (ou 100), chaque déclaration avec "!important" vaut 10 000, cette dernière valeur n'est pas affichée dans les graphiques mais elle surclasse bien toutes les autres. Exemple :

<!DOCTYPE html>
<html lang="fr">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Test sur les spécificités des déclarations CSS</title>
    <style>
        #texte_rouge {
            color: red;
        }
    
        .texte_vert {
            color: green!important;
        }
    
        body p .texte_vert {
            color: green;
        }
    
        [class="texte_vert"] {
            color: green;
        }
    </style>
</head>

<body>
    <p id="texte_rouge" class="texte_vert">
        Ceci est un exemple pour montrer les spécificités des déclarations CSS.
    </p>
</body>

</html>

Avec ce site web, il vous suffit de copier/coller votre code CSS directement dans la zone prévue à cet effet et vous pourrez voir sous, forme de graphique, toutes les spécificités de vos déclarations CSS. Dites-moi si vous trouvez ce site intéressant.

Cela aurait été bien qu'on puisse voir les spécificités de chaque déclaration CSS directement dans l'inspecteur des éléments du navigateur mais ce n'est pas possible. On peut juste voir leur classement, le plus important se trouvant en bas de la liste des styles CSS et ceux qui ont une faible valeur sont au dessus voire barrés.

Quelques sources :
https://blog.organicweb.fr/comprendre-le-poids-des-regles-css/#:~:text=Le%20poids%20du%20code%20CSS, %2D0%2D0%20par%20ID.
https://www.zonecss.fr/cours-css/poids-des-selecteurs-css.html
https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity

Bien à vous et
Que le code soit avec vous !
Modifié par ObiJuanKenobi (16 Oct 2024 - 15:10)
Salut,

hum, dans les outils développeurs, si tu survoles une règle tu as la spécificité qui apparaît.
Par exemple ici si je choisi ton message, à droite j'ai la liste des styles et quand je survole .p_text m'affiche : Specificity: (0,1,0)
Modérateur
Salut,

Je trouve le concept très intéressant pour les débutants/but pédagogique mais il manque, a mon sens, le lien crucial avec les éléments HTML.

Connaitre le poids d'un sélecteur c'est très bien (la représentation en graph c'est un poil trop, juste le score du poids à coté du sélecteur suffirait).

Ce qui serait clé, encore selon mon point de vue, serait de pouvoir voir les sélecteurs en conflit et pourquoi l'un surpasse l'autre (donc lien avec un élément HTML qui aurait les deux en même temps, impossible de le faire juste avec le CSS).

PS: les spécificités sont belles et bien dispo dans les inspecteurs de code (vérifié sur chrome et firefox)

upload/1729086022-42161-capturedancran2024-10-1615333.jpg

Bonne aprem !
Meilleure solution
_laurent a écrit :
Salut,
PS: les spécificités sont belles et bien dispo dans les inspecteurs de code (vérifié sur chrome et firefox)

Je viens de tester sur Chrome et je n'ai pas cette information quand je survole une déclaration CSS.
Modifié par ObiJuanKenobi (16 Oct 2024 - 16:30)
Modérateur
ObiJuanKenobi a écrit :

Je viens de tester sur Chrome et je n'ai pas cette information quand je survole une déclaration CSS.


Je suis sur Chrome (v129.0.6668.100) et ca marche bien. Faut rester un peu dessus sans bouger pour que ca s'affiche y'a un petit délai d'apparition
_laurent a écrit :

Je suis sur Chrome (v129.0.6668.100) et ca marche bien. Faut rester un peu dessus sans bouger pour que ca s'affiche y'a un petit délai d'apparition

C'est ce que je fais, je reste pas moins de 3 secondes dessus et rien ne s'affiche.
C'est peut être dans une autre fenêtre mais je suis bien sur celle des styles CSS.
Quand à la version de mon navigateur Chrome, il se met à jour automatiquement.
Modifié par ObiJuanKenobi (16 Oct 2024 - 17:26)
Salut,

@ObiJuanKenobi je vais faire un aveu : je n'avais jamais remarqué cette fonctionnalité auparavant mais, surtout, je n'en ai jamais eu besoin.

C'est bien d'avoir vu passer le concept mais il ne faut pas trop perdre de temps avec ça ; pour le coup c'est la pratique qui permettra d'intégrer les "poids" des sélecteurs de manière presque intuitive par la suite.

La théorie c'est cool, mais la manipulation c'est mieux (surtout en CSS).
C'est pourtant bon de savoir que les déclarations CSS subissent une importance (spécificités). Combien de fois j'étais bloqué au début quand j'utilisais à la fois un attribut id et un attribut class en ne comprenant pas pourquoi ce dernier n'appliquait pas la propriété que je lui donnais, alors qu'il était bien à la suite de l'attribut id et que normalement c'est la dernière déclaration qui l'emporte. A mes débuts, je ne savais pas qu'un id a une importance de 100 alors qu'une classe a une importance de 10 et donc la surclasse largement. Maintenant, ma solution pour éviter ce genre de conflit, c'est de ne plus utiliser l'attribut id pour déclarer des styles, mais toujours l'attribut class, je réserve id pour identifier des éléments en Javascript ou PHP.

Mais d'après laurent, il est possible de voir la spécificité d'une déclaration dans l'inspecteur des éléments du navigateur, rendant le travail plus simple, mais je ne comprends pas pourquoi je ne parviens pas à voir les spécificités dans mon navigateur. Sûrement un bug de mon navigateur et je ne sais pas comment le réosudre. A moins qu'il ne faille installer un plugin pour le navigateur.
Modifié par ObiJuanKenobi (17 Oct 2024 - 07:39)
Administrateur
Bonjour,

_laurent Je ne connaissais pas cette fonctionnalité ; j'en apprend encore sur CSS Smiley lolol
Le panneau indique déjà les spécificités "relatives" des sélecteurs qui s'appliquent à un élément : c'est trié de haut en bas par élément duquel c'est hérité puis par spécificité me semble-t-il (et par @layer quand il y en a) mais c'est bon à prendre Smiley good

Le Specificity graph est un bon outil (disons une notion intéressante) quand on débute dans les projets d'une certaine taille et que les styles commencent à s'écraser dans tous les sens, qu'on patche sans trop savoir ce qu'on fait (ou sans savoir ce qu'il serait préférable de faire...)
On a inventé plusieurs méthodologies CSS (et pas que CSS, disons front end) pour ne plus avoir à s'en préoccuper. BEM, ITCSS, OOCSS, etc Tailwind, Uno, etc scoped, CSS-in-JS (argh)
On a même inventé de nouvelles fonctionnalités CSS pour ça : @layer et closed Shadow DOM.
Modérateur
Salut !

ObiJuanKenobi a écrit :

Mais d'après laurent, il est possible de voir la spécificité d'une déclaration dans l'inspecteur des éléments du navigateur, rendant le travail plus simple, mais je ne comprends pas pourquoi je ne parviens pas à voir les spécificités dans mon navigateur. Sûrement un bug de mon navigateur et je ne sais pas comment le réosudre. A moins qu'il ne faille installer un plugin pour le navigateur.


Alors même sans voir les spécificité, ton inspecteur de code va afficher les styles dans l'ordre du poids de sélecteur et barrer les règles qui sont redéfinies donc tu peut facilement voir qui a la priorité et qui gène qui :

upload/1729152535-42161-capturedancran2024-10-1710083.jpg

ObiJuanKenobi a écrit :
Maintenant, ma solution pour éviter ce genre de conflit, c'est de ne plus utiliser l'attribut id pour déclarer des styles, mais toujours l'attribut class, je réserve id pour identifier des éléments en Javascript ou PHP.

Pour moi c'est une bonne pratique que j'utilise également (avec quelques entorses à la règles parfois sinon c'est pas drole)

Sinon ce que voulais dire Olivier C c'est un peu la même chose que moi je pense à savoir c'est bien de savoir ca au début mais une fois qu'on a intégré se concept de base (normalement c'est un des premiers concept CSS a apprendre) et bah c'est automatique et on a plus besoin d'un outil comme ca au quotidien pour tester son CSS quand y'a un soucis de priorité.

Bonne journée à tous !