Dans un en-tête HTML, j'ai ceci:
<head>
<title>Title</title>
<link href="styles.css" rel="stylesheet" type="text/css"/>
<link href="master.css" rel="stylesheet" type="text/css"/>
styles.css
est ma feuille spécifique à la page. master.css
est une feuille que j'utilise sur chacun de mes projets pour remplacer les valeurs par défaut du navigateur. Laquelle de ces feuilles de style est prioritaire? Exemple: la première feuille contient des
body { margin:10px; }
Et les bordures associées, mais la seconde contient mes réinitialisations de
html, body:not(input="button") {
margin: 0px;
padding: 0px;
border: 0px;
}
En substance, l'élément en cascade de CSS fonctionne-t-il de la même manière en termes de références de feuille de style que dans les fonctions CSS typiques? Cela signifie que la dernière ligne est celle affichée?
css
overriding
stylesheet
ian5v
la source
la source
body:not(input="button")
n'est pas un sélecteur valide d'ailleurs. Vous vouliez probablement le diviser enbody, input:not([type="button"])
.master.css
devrait charger en premier, alors il est beaucoup plus facile de remplacer les master-styles de votrestyles.css
.Réponses:
Les règles pour la cascade de règles CSS sont complexes - plutôt que d'essayer de les paraphraser mal, je vais simplement vous référer à la spécification:
http://www.w3.org/TR/2011/REC-CSS2-20110607/cascade.html#cascade
En bref: les règles plus spécifiques prévalent sur les règles plus générales. La spécificité est définie en fonction du nombre d'identifiants, de classes et de noms d'élément impliqués, ainsi que du fait que la
!important
déclaration a été utilisée. Lorsqu'il existe plusieurs règles du même «niveau de spécificité», celle qui apparaît en dernier l'emporte.la source
!important
participe directement à la cascade, et n'a rien à voir avec la spécificité. La spécificité est liée aux sélecteurs, alors qu'elle!important
est utilisée avec les déclarations de propriété. (Vous avez donc raison de dire que les règles sont complexes!;)Le style le plus spécifique est appliqué:
Si tous les sélecteurs ont la même spécificité, la déclinaison la plus récente est utilisée:
Dans votre cas,
body:not([input="button"])
est plus spécifique donc ses styles sont utilisés.la source
L'ordre compte. La dernière valeur déclarée d'occurrence multiple sera prise. S'il vous plaît voir le même que j'ai travaillé: http://jsfiddle.net/Wtk67/
Si vous changez l'ordre de
.test{}
, vous pouvez voir que le HTML prend la valeur du dernier déclaré dans CSSla source
Le dernier CSS de chargement est THE MASTER, qui remplacera tous les css avec les mêmes paramètres css
Exemple:
reset.css
master.css
La sortie de la balise h1 sera police-size: 30px;
la source
.css
est chargé en dernier. Sont-ils appliqués dans l'ordre où ils sont chargés ou dans l'ordre où ils sont définis?Essayons de simplifier la règle en cascade avec un exemple. Les règles vont plus spécifiquement au général.
Voici le code css et html;
Voici le style css
Voici le résultat. Peu importe l'ordre des fichiers de style ou la déclaration de style,
id="important"
s'applique à la fin (notez leclass="deadline"
dernier déclaré mais ne prend aucun effet).L'
<article>
élément contient l'<aside>
élément, cependant le dernier style déclaré prendra effet, dans ce casarticle h2 { .. }
sur le troisième élément h2.Voici le résultat sur IE11: (Droits insuffisants pour publier une image) DarkBlue: Houston Chronicle News, DarkGreen: Derniers développements dans votre ville, Violet: Houston Section des publicités locales, Noir: Section suivante
la source
Cela dépend à la fois de l'ordre de chargement et de la spécificité des règles réelles appliquées à chaque style. Compte tenu du contexte de votre question, vous souhaitez d'abord charger votre réinitialisation générale, puis la page spécifique. Ensuite, si vous ne voyez toujours pas l'effet escompté, vous devez examiner la spécificité des sélecteurs impliqués, comme d'autres l'ont déjà souligné.
la source
Oui, cela fonctionne de la même manière que s'ils étaient sur une seule feuille, cependant:
L'ordre de chargement compte!
Dans le code ci-dessus, il n'y a aucune garantie qui
master.css
se chargera aprèsstyles.css
. Par conséquent, simaster.css
est chargé rapidement, etstyles.css
prend un certain temps,styles.css
deviendra la deuxième feuille de style, et toutes les règles de même spécificité demaster.css
seront écrasées.Il est préférable de mettre toutes vos règles dans une seule feuille (et de les réduire) avant le déploiement.
la source
master.css
et en laissant lestyles.css
chargement complètement. Ensuite, je laissemaster.css
charger. Le style de "chevauchement" demaster.css
toujours appliqué - et le rendu a été bloqué jusqu'à ce qu'il soitmaster.css
chargé et analysé. Note : J'ai essayérel=preload
surmaster.css' (no halting) and that apparently alters its _declaration_ order by hoisting it above
styles.css`.La meilleure façon est d'utiliser autant que possible les classes. Évitez de toute façon les sélecteurs d'identification (#). Lorsque vous écrivez des sélecteurs avec des classes uniques, l'héritage CSS est bien plus facile à suivre.
Mise à jour: En savoir plus sur la spécificité CSS dans cet article: https://css-tricks.com/specifics-on-css-specificity/
la source
D'après votre question, je soupçonne que vous avez des sélections en double, un ensemble principal, qui s'applique à toutes les pages, et un ensemble plus spécifique que vous souhaitez remplacer les valeurs principales pour chaque page individuelle. Si tel est le cas, votre commande est correcte. Le Master est chargé en premier et les règles du fichier suivant prévaudront (si elles sont identiques ou ont le même poids). Il y a une description fortement recommandée de toutes les règles sur ce site Web http://vanseodesign.com/css/css-specificity-inheritance-cascaade/ Quand j'ai commencé le développement front-end, cette page a résolu de nombreuses questions.
la source
C'est le cascade qui définit la priorité des déclarations. Je peux recommander la spécification officielle; cette partie est bien lisible.
https://www.w3.org/TR/css-cascade-3/#cascading
Les éléments suivants ont un effet sur le tri, par ordre de priorité décroissant.
Une combinaison d' origine et d' importance:
Transition
déclarations!important
!important
!important
style
attributAnimation
déclarationsstyle
attributSi deux déclarations ont la même origine et la même importance, la spécificité, c'est -à- dire la clarté de la définition de l'élément, entre en jeu, calculant une notation.
#x34y
).level
)li
):hover
) à l'exclusion:not
Par exemple, le sélecteur
main li + .red.red:not(:active) p > *
a une spécificité de 24.L' ordre d'apparition ne joue un rôle que si deux définitions ont la même origine, importance et spécificité. Les définitions ultérieures précèdent les définitions antérieures dans le document (y compris les importations).
la source
Je crois que lors de l'exécution du code, il est lu de haut en bas, ce qui signifie que le dernier lien CSS remplacerait les styles similaires dans toutes les feuilles de style au-dessus.
Par exemple, si vous avez créé deux feuilles de style
et dans les deux, vous définissez la couleur d'arrière-plan du corps sur deux couleurs différentes - la couleur du corps dans style2.css serait prioritaire.
Vous pouvez éviter le problème de priorité de style en utilisant
!IMPORTANT
à l'intérieur du style de classe que vous souhaitez privilégier, ou éventuellement en réorganisant votre<link>
commande.la source