一、css順序
首先聲明,瀏覽器讀取css的方式是從上到下的。我們一般書寫css只要元素具備這些屬性就會達到我們預期的效果,但是這會給以后的維護和瀏覽器的渲染效率帶來一定的影響,那么該怎么書寫css的順序呢?有沒有一定的規(guī)范呢?
首先我們知道css的屬性按特性分為幾類;
1.規(guī)定元素特性,如display、position、float,這些屬性會決定他的排版方式
2.規(guī)定元素的空間占據(jù),如line-height、margin、padding、width、height等,這些屬性會決定元素的大小和位置
3.規(guī)定元素的自身效果,如font-size、color、background等,這些屬性會決定元素的效果
其實當我們把css的屬性分類結(jié)束后,我們會得到一個很明顯的答案,我們可以想象一下自己用css按照自己的書寫順序畫出來該元素,舉例說明
p.detail { font-size: 10px; line-height: 12px; width: 30px; height: 30px; display: inline; }
描述:這是一個元素 字體大小10px 行高12px 寬度30px 高度30px 陳列方式為內(nèi)聯(lián)樣式
當我們開始讀取屬性的時候,我們會很難對元素進行定位,因為我們不知道元素的特性,陳列方式。讀到最后一行的時候才發(fā)現(xiàn),原來這是一個內(nèi)聯(lián)元素,寬度和高度的定義就會失效,所以這種css書寫順序是不被推薦的
p.detail { display: inline-block; margin-top: 20px; width: 100%; height: 20px; color: #fff; font-size: 10px; }
描述: 這是一個元素,陳列方式為內(nèi)聯(lián)-塊方式,距上有20px 寬度與父元素等寬 高度為20px 顏色為白色 字體大小為10px
這樣的書寫方式就能按照一個我們很容易理解的方式進行渲染
總結(jié): 我們書寫css的時候推薦的規(guī)范是,先書寫影響元素陳列特性的屬性,再書寫影響元素位置的屬性,最后書寫元素的內(nèi)部屬性
二、點擊或hover等觸發(fā)高亮情況的css書寫
當鼠標hover的時候,我們往往給需要改變的元素添加一個active類名,然后在active里面書寫我們需要改變的屬性
如:
.content { background: black; } .active { background: white; }
當我們點擊某元素的時候,需要.content的背景色從黑色變成白色,那么給.content添加active類名就會達到我們的預期效果,然而我們有的時候點擊的時候不止要改變一個元素的屬性,我們有可能會有這種情況
我們需要在點擊一個類名為.click的元素的時候,元素icon字體 和 span元素一個字體變大 一個變?yōu)榧t色怎么辦,我們可以這樣
<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?1.1.11"></script> <script> $(‘.click’).click(function() { $('.icon-font').addClass('icon-active'); $('.text').addClass('text-active') }) </script>
這樣可以達到我們的預期效果,但是這是兩個元素的關(guān)聯(lián)反應,假如有三個元素或更多,我們會需要更多的代碼,
其實細心的朋友可能發(fā)現(xiàn)了我這里有一個.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?1.1.11"></script> <script> $(‘.click’).click(function() { $('.parent').addClass('active'); }) </script>
這樣的話 我們只需要將會改變css元素的最相近的最外層添加active類名,然后設置該類名下后代元素的樣式,這樣我們只需要添加一個active類名就達到了我們預期的效果