Hvis du planlægger at bruge CSS regelmæssigt, skal du udvikle en forståelse af, hvad specificitet er, og hvordan den anvendes.
Bortset fra floats og positioner, kan specificitet være en af de sværeste ting at vænne sig til, endsige mester. De selektorer, du bruger i dit CSS, har alle forskellige vægte, og de styres af specificitet. Derfor er det nogle gange, når du bruger en regel til et element, det ikke afspejles i dit design.
Hvis du nogensinde har stolt på det frygtelige vigtige søgeord til at hack dit CSS, så er denne artikel til dig.
For at få dine fundamenter solid, skal du vide, hvordan browseren rent faktisk læser CSS og hvordan regler overstyres.
For det første læser browseren et stylesheet fra top til bund, hvilket betyder at med denne kode:
/*Line 10*/ul li a {color: red;}/*Line 90*/ul li a {color: blue;}
Reglen, du angav i linje 10, bliver overskredet, og at ankeretiketten bliver blå, fordi browseren vil overveje regler længere nede i din CSS for at have større prioritet.
Dette virker også med den egentlige rækkefølge, du importerer dine css-filer, for eksempel:
Siden du har placeret custom.css efter stilen.css, hvad som helst du skriver i stilen.css (diskontering for nu vil vægten af selektorer) blive overskredet og erstattet af hvad der er i custom.css, bruges denne teknik ofte af tema skabere at give brugeren noget plads til at tilføje deres egne stilarter uden at ændre hovedfilen. (Bemærk dog, at custom.css ikke erstatter style.css helt, kun de regler, der er specifikt overskredet, vil blive erstattet.)
Alt ovenfor gælder kun, hvis du bruger samme vægt på hver vælger. Hvis du angiver id'er, klasser eller stablingselementer, giver du dem vægt, og det er specificitet.
Der er fire kategorier, der definerer specificitetsniveauet for en vælger: inline-stilarter (disse bruges nogle gange af javascript), ID'er, klasser og elementer. Hvordan måles specificitet? Specificitet måles i punkter, hvor den højeste punktværdi anvendes.
At vide dette, hvis du bruger en vælger som sådan:
#content .sidebar .module li a
Den samlede vægt er 122 point (100 + 10 + 10 + 1 +1), som er et ID, to klasser og to elementer.
ul li a {color: red;}
Denne vælger vil rumme en vægt på 3, hvilket betyder at ved at tilføje en klasse et andet sted, kan du tilsidesætte det.
.content #sidebar {width: 30%;}
Denne vælger har en vægt på 110 point, hovedsagelig på grund af det id, der tilføjer 100 point af de 110 samlede.
.post p:first-letter {font-size: 16px;}
Denne vælger har en vægt på 12 point, da pseudo-elementet: første bogstav kun vejer 1 point og det gør også p-mærket.
p {font-family: Helvetica, arial, sans-serif;}
Denne vælger vejer kun 1 point. Denne type vælger skal bruges øverst på siden, når du markerer de grundlæggende stilarter, som senere kan overstyres for bestemte områder.
Vær altid opmærksom på, at for at tilsidesætte en ID-vælger skal du skrive 256 klasser for det samme element, som sådan:
#title {font-weight: bold;}.home .page .content .main .posts .post .post-content .headline-area .wrapper /* ... etc. ... */ .title {font-weight: normal;}
Kun denne måde vil den anden vælger slå den ene ved hjælp af id'et.
Specificitet er ikke et prangende aspekt af CSS, men efter min mening er det det mest oversete område. At få din specificitet ret hjælper ikke kun dig med at undgå fejl, men det vil fremskynde både din udvikling og dit endelige websted.
Overstyrer du ID'er, når du skriver CSS? Er du nogensinde faldet tilbage! Vigtigt? Lad os vide i kommentarerne.
Fremhævet billede / miniaturebillede, præcision billede via Shutterstock.