1.Règles d'ID
2.Règles de classe
3. Règles de balise
4 Règles générales
La compréhension générale de l'efficacité vient de "High-Performance Website Construction" publiée par Steve Souders dans. 2009 À partir du « Guide avancé », bien que le livre le répertorie plus en détail, vous pouvez également consulter la liste de référence complète ici, ou vous pouvez consulter plus de détails dans les « Meilleures pratiques pour des sélecteurs CSS efficaces » de Google.
Dans cet article, je souhaite partager quelques exemples simples et directives que j'utilise pour écrire du CSS haute performance. Ceux-ci s’inspirent du guide pour un CSS efficace écrit par MDN et suivent un format similaire.
1. Évitez les contentions excessives
Une règle générale, n’ajoutez pas de contraintes inutiles.
// Oups
ul#someid {.. }
.menu#otherid{..}
// D'accord
#someid {..}
#otherid {..}
2. Le sélecteur descendant est le pire
Non seulement les performances sont faibles, mais le code est également fragile. Le code html et le code css sont sévèrement couplés. La structure du code HTML change, le CSS doit également être modifié. C'est grave, surtout dans les grandes entreprises, les personnes qui écrivent du HTML et du CSS ne sont souvent pas les mêmes.
// C'est nul
html div tr td {..}
3. Évitez les sélecteurs de chaîne (intersection)
Ceci est similaire à la situation de surcontrainte. Une approche plus judicieuse consiste simplement à créer un nouveau sélecteur de classe CSS.
// Oups
.menu. left.icon {..}
// Ok
.menu-left-icon {..}
4. Adhérez au principe KISS
Imaginez que nous ayons le DOM suivant :
Voici les règles correspondantes...
// Oups
#navigator li a {..}
// D'accord
#navigator {..}
5. Utilisez la syntaxe composée (compacte)
Utilisez la syntaxe composée autant que possible.
// Oups
.someclass {
padding-top: 20px;
padding-bottom: 20px;
padding-left: 10px;
padding-right: 10px;
background: #000;
background-image : url( ../imgs/carrot.png);
background-position: bottom;
background-repeat: répétition-x;
}
// D'accord
. someclass {
remplissage : 20px 10px 20px 10px;
arrière-plan : #000 url(../imgs/carrot.png) répéter-x bottom;
}
6. Évitez les espaces de noms inutiles
// Oups
.someclass table tr.otherclass td.somerule {..}
//Okay
.someclass .otherclass td.somerule {.. >
7. Évitez les répétitions inutiles
Combinez autant que possible les règles répétées.
// Oups
.someclass {
couleur : rouge;
fond : bleu;
taille de police : 15px;
}
.otherclass {
couleur : rouge;
fond : bleu;
taille de police : 15px;
}
// D'accord
.someclass, . otherclass {
couleur : rouge;
fond : bleu;
taille de police : 15px;
}
8. Rationalisez les règles autant que possible. Sur la base des règles ci-dessus, vous pouvez fusionner davantage les règles répétées dans différentes catégories.
// Oups
.someclass {
couleur : rouge;
fond : bleu;
hauteur : 150px;
largeur : 150px;
taille de police : 16px;
}
.otherclass {
couleur : rouge;
fond : bleu;
hauteur : 150px;
largeur : 150px;
taille de la police : 8px;
}
// Okay
.someclass, .otherclass {
couleur : rouge;
fond : bleu;
hauteur : 150px;
largeur : 150px;
}
.someclass {
taille de police : 16px;
}
.otherclass {
taille de police : 8px;
}
9. ambiguïté La convention de dénomination de est préférable d'utiliser des noms sémantiques. Un bon nom de classe CSS doit décrire ce qu'elle est plutôt que ce à quoi elle ressemble.
10. Évitez !importantsEn fait, vous devriez également pouvoir utiliser d'autres sélecteurs de haute qualité.
11. Suivre un ordre de déclaration standard
Bien qu'il existe des méthodes courantes pour organiser l'ordre des propriétés CSS, vous trouverez ci-dessous une méthode populaire que je suis.
.someclass {
/* Positionnement */
/* Modèle d'affichage et de boîte */
/* Styles de fond et de typographie */
/* Transitions */
/* Autre */
}
12. Format de code bien organisé La lisibilité du code est directement proportionnelle à la facilité de maintenabilité. Vous trouverez ci-dessous la méthode de formatage que je suis.
// Oups
.someclass- a, .someclass-b, .someclass-c, .someclass-d {
...
}
// D'accord
.someclass-a,
.someclass- b,
.someclass-c,
.someclass-d {
...
}
// Bonne pratique
.someclass {
background-image :
Dégradé linéaire ( #000, #ccc),
Dégradé linéaire (#CCC, #DDD) ;
Ombre de boîte :
2px 2px 2px #000,
1px 4px ; 1px 1px 1px #ddd encart ;
}
Évidemment, ce ne sont là que quelques règles que j'essaie de suivre dans mon propre CSS afin d'être plus efficace et maintenable. Si vous souhaitez en savoir plus, je vous recommande de lire le Guide de MDN pour écrire du CSS efficace et le Guide de Google pour optimiser le rendu du navigateur.