What is the order of precedence for CSS?

前端 未结 8 1636
攒了一身酷
攒了一身酷 2020-11-22 09:43

I\'m trying to figure out why one of my css classes seems to override the other (and not the other way around)

Here I have two css classes

.smallbo         


        
8条回答
  •  伪装坚强ぢ
    2020-11-22 10:23

    There are several rules ( applied in this order ) :

    1. inline css ( html style attribute ) overrides css rules in style tag and css file
    2. a more specific selector takes precedence over a less specific one
    3. rules that appear later in the code override earlier rules if both have the same specificity.
    4. A css rule with !important always takes precedence.

    In your case its rule 3 that applies.

    Specificity for single selectors from highest to lowest:

    • ids (example: #main selects
      )
    • classes (ex.: .myclass), attribute selectors (ex.: [href=^https:]) and pseudo-classes (ex.: :hover)
    • elements (ex.: div) and pseudo-elements (ex.: ::before)

    To compare the specificity of two combined selectors, compare the number of occurences of single selectors of each of the specificity groups above.

    Example: compare #nav ul li a:hover to #nav ul li.active a::after

    • count the number of id selectors: there is one for each (#nav)
    • count the number of class selectors: there is one for each (:hover and .active)
    • count the number of element selectors: there are 3 (ul li a) for the first and 4 for the second (ul li a ::after), thus the second combined selector is more specific.

    A good article about css selector specificity.

提交回复
热议问题