首先聲明,瀏覽器讀取css的方式是從上到下的。咱們通常書寫css只要元素具有這些屬性就會達到咱們預期的效果,可是這會給之後的維護和瀏覽器的渲染效率帶來必定的影響,那麼該怎麼書寫css的順序呢?有沒有必定的規範呢?css
首先咱們知道css的屬性按特性分爲幾類;html
1.規定元素特性,如display、position、float,這些屬性會決定他的排版方式jquery
2.規定元素的空間佔據,如line-height、margin、padding、width、height等,這些屬性會決定元素的大小和位置瀏覽器
3.規定元素的自身效果,如font-size、color、background等,這些屬性會決定元素的效果字體
其實當咱們把css的屬性分類結束後,咱們會獲得一個很明顯的答案,咱們能夠想象一下本身用css按照本身的書寫順序畫出來該元素,舉例說明spa
p.detail { font-size: 10px; line-height: 12px; width: 30px; height: 30px; display: inline; }
描述:這是一個元素 字體大小10px 行高12px 寬度30px 高度30px 陳列方式爲內聯樣式htm
當咱們開始讀取屬性的時候,咱們會很難對元素進行定位,由於咱們不知道元素的特性,陳列方式。讀到最後一行的時候才發現,原來這是一個內聯元素,寬度和高度的定義就會失效,因此這種css書寫順序是不被推薦的blog
p.detail { display: inline-block; margin-top: 20px; width: 100%; height: 20px; color: #fff; font-size: 10px; }
描述: 這是一個元素,陳列方式爲內聯-塊方式,距上有20px 寬度與父元素等寬 高度爲20px 顏色爲白色 字體大小爲10pxip
這樣的書寫方式就能按照一個咱們很容易理解的方式進行渲染it
總結: 咱們書寫css的時候推薦的規範是,先書寫影響元素陳列特性的屬性,再書寫影響元素位置的屬性,最後書寫元素的內部屬性
當鼠標hover的時候,咱們每每給須要改變的元素添加一個active類名,而後在active裏面書寫咱們須要改變的屬性
如:
.content { background: black; } .active { background: white; }
當咱們點擊某元素的時候,須要.content的背景色從黑色變成白色,那麼給.content添加active類名就會達到咱們的預期效果,然而咱們有的時候點擊的時候不止要改變一個元素的屬性,咱們有可能會有這種狀況
咱們須要在點擊一個類名爲.click的元素的時候,元素icon字體 和 span元素一個字體變大 一個變爲紅色怎麼辦,咱們能夠這樣
<div class="parent"> <div class="icon-font"></div> <span class="text"></span> </div> <div class="click"></div> <style> .icon-active{ font-size: 40px; } .text-active{ color: red; } </style> <script src="jquery.js"></script> <script> $(‘.click’).click(function() { $('.icon-font').addClass('icon-active'); $('.text').addClass('text-active') }) </script>
這樣能夠達到咱們的預期效果,可是這是兩個元素的關聯反應,假若有三個元素或更多,咱們會須要更多的代碼,
其實細心的朋友可能發現了我這裏有一個.parent 標籤,咱們能夠經過給.parent標籤添加active類名代碼以下:
<div class="parent"> <div class="icon-font"></div> <span class="text"></span> </div> <div class="click"></div> <style> .active .icon-font{ font-size: 40px; } .active .text{ color: red; } </style> <script src="jquery.js"></script> <script> $(‘.click’).click(function() { $('.parent').addClass('active'); }) </script>
這樣的話 咱們只須要將會改變css元素的最相近的最外層添加active類名,而後設置該類名下後代元素的樣式,這樣咱們只須要添加一個active類名就達到了咱們預期的效果