# 認識CSS#4 CSS的規則 ###### tags: `CSS` ## 規則1 - Cascading CSS是一種 <font color='red'> **階層式(Cascading)**</font> 的語言,由上往下讀程式碼 ```=CSS h1{ color:red; } h2{ color:green; } h1{ color:yellow; } ``` 範例中程式碼從第一行開始讀取,原本渲染 h1 的字是要紅色的,到了最後又把 h1 渲染成黃色的,這時候就會把第一行的h1渲染給取代掉 ## 規則2 - Specificity CSS selectors 有不同的權重,CSS 會選擇權重比較重的會蓋過權重比較輕的進行渲染,<font color='red' size=5>不會管 規則1 - Cascading </font> 有相同的權重時就使用規則1來決定要渲染哪一個 ### 權重 > id - specificity(1,0,0) > > class - specificity(0,1,0) > > element selector - specificity(0,0,1) > ```=CSS h1.class{ /* class+tag(0,1,1)*/ } h1{/*tag(0,0,1)*/} /*本來規則h1會蓋過h1.class的設定 但是specificity比h1{}還高 故還是套用h1.class*/ P.S. (1,0,0)>(0,1,1) specificity最前面的1還是最大 ``` ### 不管權重的例外 - inline styling 不管你的權重有多高都會比不上直接用 inline styling 寫 CSS 上去,從範例來看從其他 CSS 檔案撰寫 h1 的樣式都不能蓋過直接從 HTML 寫出來的樣式,所以字體顏色都會是紅色 ```=HTML <h1 style="color:red"> Hello! </h1> ``` ## 規則3 - inheritance 每個 element 都會預設繼承自己的 parent element 所寫的各種渲染的 CSS 樣式 ```=CSS body{ color:green; } h1{ /*h1會繼承body的color:green*/ } ``` ## 標籤分數權重 * HTML 標籤 : 1分 * class : 10分 * id : 100分 * HTML style : 1000分 * important : 10000分 ## CSS總決定順序總結 <font size=4>inline styling > id selector > class selector > element selector > inheritance </font>