<p id="my-id" class="a b">
    段落要素です
</p>
* {
    color: red;
}
p {
    color: blue;
}
#my-id {
    color: green;
}
.a {
    color: olive;
}
.b {
    color: pink;
}
<p>要素にCSSが適用された様子 複数のセレクターが<p> 要素を選択してスタイルを適用しましたが、#my-idセレクターで指定された緑色(green)が適用されました。
h2 {color: red;} /* 詳細度の値 = 0,0,0,1 */

p em {color: purple;} /* 詳細度の値 = 0,0,0,2 */

.grape {color: purple;} /* 詳細度の値 = 0,0,1,0 */

* .bright {color: yellow;} /* 詳細度の値 = 0,0,1,0 */

p.bright em.dark {color: maroon;} /* 詳細度の値 = 0,0,2,2 */

#id216 {color: blue;} /* 詳細度の値 = 0,1,0,0 */

p#addr [href] {color: gray;} /* 詳細度の値 = 0,1,1,1 */
<p id="my-id" class="a b">
    段落要素です
</p>
* {  /* 詳細度の値 = 0,0,0,0 */
    color: red;
}
p {  /* 詳細度の値 = 0,0,0,1 */
    color: blue;
}
#my-id {  /* 詳細度の値 = 0,1,0,0 */
    color: green;
}
.a {  /* 詳細度の値 = 0,0,1,0 */
    color: olive;
}
.b {  /* 詳細度の値 = 0,0,1,0 */
    color: pink;
}
<p>要素にCSSが適用された状態 詳細度の値が最も大きい#idセレクターの値であるgreenが適用されました。
<h1 id="green-color" style="color:red;">idで選択された見出しです</h1> <!-- 詳細度の値 = 1,0,0,0 -->
<p id="my-id" class="a b">
    段落要素です
</p>
* {  /* 詳細度の値 = 0,0,0,0 */
    color: red;
}
p {  /* 詳細度の値 = 0,0,0,1 */
    color: blue;
}
#my-id {  /* 詳細度の値 = 0,1,0,0 */
    color: green;
}
.a {  /* 詳細度の値 = 0,0,1,0 */
    color: olive !important; /* !importantの使用 */
}
.b {  /* 詳細度の値 = 0,0,1,0 */
    color: pink;
}
<p>要素にCSSが適用された状態 詳細度のルールを無視して、!importantを使用した要素のセレクターのスタイルが適用されました。
<p class="a b">
    p段落要素です
</p>
.a {  /* 詳細度の値 = 0,0,1,0 */
    color: olive;
}
.b {  /* 詳細度の値 = 0,0,1,0 */
    color: pink;
}
<p>要素にCSSが適用された状態 後からスタイルを定義したセレクターのスタイルが適用されます。これは上書き(Override)と呼ばれます。
<p class="a b">
    p段落要素です
</p>
.a {
    color: olive; /* 同じプロパティを複数回指定しました */
    color: red; /* 同じプロパティを複数回指定しました */
}
<p>要素にCSSが適用された状態 後からスタイルを定義したプロパティのスタイルが適用されます。これは上書き(Override)です。
<p class="a b">
    p段落要素です
</p>
.a {  /* 詳細度の値 = 0,0,1,0 */
    color: olive !important;
}
.b {  /* 詳細度の値 = 0,0,1,0 */
    color: blue !important;
}
<p>要素にCSSが適用された状態 詳細度の値が同じ場合、後から!important宣言をしたセレクターのスタイルが適用されます。これは上書き(Override)と呼ばれます。