我的CSS架構


寫在前面

都是自己看別人的架構,自己積累下來的一些東西,這里只是闡述自己的一些觀念。借此希望同行交流交流下看法,共勉。

不同架構的CSS

業務流程不同,團隊配員不同。會有各種各樣的CSS架構。

有的會分為:header.css,body.css,footer.css

有的會分為:reset.css,main.css,content.css

有的會分為:common.css,然后每個種類再單獨划分,比如:首頁(index.css),分頁(page.css)

有的直接嵌入到HTML代碼中

這些處理方式,只能是適不適合,沒有真正的對錯之分。

之前做的項目CSS架構的一些問題

上一家公司做的是商城網站,最開始剛接手的時候,sAss 編寫的。那會還不是很懂sAss,簡單的了解下還是挺好上手的。

坑1:每次改的小東西樣式,都得先編譯下,雖說有自動編譯,對小調整開說不夠暢快

坑2:當時編譯后是合成到一個css文件,最終呈現的130K左右(未壓縮)

坑3:看編譯后的css文件,會發現編譯后的css層級有些會特別長,看你寫的代碼耦合程度了。

后來我索性就拋棄的Sass(可能還沒挖掘到Sass的好處吧)

1、當時的程序目錄結構是跟后台的模塊控制器一一對應建文件夾的。我css也就根據模塊控制器划分。比如:控制器(home)->首頁(index),分頁(page)...

2、划分為基礎的

base.css(包含瀏覽器reset,網站基本的header、footer、paging。。)

public_home.css(模塊home下面通用的樣式)

home_active(模塊home下面active樣式)

3、這么架構的好處(對於這個項目)

每個頁面最多只會引入3個CSS文件,相對體積都比較小

對於之后協同辦公,不同的人員改不同的模塊,不會沖突

相對之前的,css架構沒有按照模塊划分,要找到響應的點去修改樣式的並不是很容易找,按模塊划分小塊后,比較容易找到對應的代碼

新增模塊的話,編輯代碼的話比較不會和其他的沖突

現在我是如何架構的

現在的話換了家公司做游戲網站,可能比較傾向使用一個css文件,對於class命名規范化,統一標准。

使用單css文件,會不會隨着網站頁面增加,相對的css大小會增加。其實不然。

網站如果規划好的話,風格一致,css是可以控制到非常小的。但是類似上面說的商城就不適用了。

CSS內部結構划分

下面慢慢闡述細節~~

CSS reset

 

CSS reset,為了是保證各個瀏覽器的統一。但是有些CSS reset是沒必要的,有時太多的重置代碼反而會正佳頁面的重寫(overwrite)。像*{margin個:0;padding:0}更是不可取。像上面的reset,我只是針對該項目下常用的標簽簡單的重置下,有些大網站的reset寫的很細,但是很多標簽我們並不是都會用到。所以我們只要取我們常用的,需要的設置reset就可以了。樣式精簡,而且也高效。

base 基礎模塊

我們網站基本的框架,頂部、頭部、底部單獨提取出來,統一base命名。獲取你會覺得用base_前贅不是增加代碼的大小的?

1、我是這么考慮的統一塊的編寫,方便以后好維護,如果是多人協助,會比較好改動,也比較明確這塊css代碼主要是做什么用的。

2、減少名字沖突,下面會講到。

3、如果頁面改動的話,方便刪除整塊的代碼。

global公共樣式

主要是單一的一段css代碼,沒有層級。

1、一般我們網站都會有個主體是要居中顯示就想上面的global_body三個樣式就會經常用。

2、global前綴,不知道是不是有點多此一舉。主要思想也是語義話class樣式名。

common常用屬性

就是所謂的原子類,之前一直挺排斥這種寫法的。主要原因也是那時認為這么寫的話:有時后改個小樣式,都得來回看,沒辦法找到對應的css塊直接在塊上面修改。現在想這么寫了主要是精簡代碼:

1、上面的有些樣式是不是有些是挺經常用的,何不有及的結合起來,精簡CSS大小。

2、html嵌套原子類的話,原則上最好不要超過3個,比如html看起來會顯得比較臃腫。

3、實用原子類,有助於統一效果。有時候設計獅設計的 同個色值可能偏差些色系,導致我們吸取的色值不一樣。但其實設計的是要統一的。實用原子類,我們吧常用的色值放一起,就比較不會出現整個網站色值不統一...

public公共模塊

像類是的側邊模塊,很多個頁面都會用到,我就會用public_包起來,這個是有層級的。

命名規則

1、命名規則,語義化命名。之后的層級前贅取父級的首字母組合,再下一層級類推;例如:sort_order-》so_class-》soc_active

2、這樣的命名,減少層級(下面會講到少層級的好處)。你可能會問這樣不是會很容易命名沖突?其實只有前綴適合,是不會有這問題。我整一個網站下來,還沒碰到過。

3、層級明確方便修改,也方便加上html。有時后端的程序員可能不小心把我們的html結構搞亂了,我們可以根據css的層級還原。

4、減少命名困難。

小結

准則1:對網站同樣樣式使用global_或者原子類(1~3個屬性)。

准則2:少層級,提高渲染速度。css渲染速度是從右到左的,減少層級對渲染速度是有提升的。

<div id="test">
    <ul class="test"></ul>
</div>

 

#test test{},ul.test{},#test ul{},.test{}哪個渲染速度最快?

如果單純的ul與.test PK,我還真拿不定誰的渲染速度更快些。但是,一旦牽扯到層級與標簽,我100%確定,.test這種最直接的命名方式渲染效率是最高的。

准則3:無ID,區分開JS與CSS,寫js中如果突然想改下ID的名稱,有得改CSS是不是很累。

准則4:少標簽,li.list{}這樣的寫法是很慢的。

多說兩句

上面寫的這些,在我實際項目使用中,暫時還沒發現什么問題,現在團隊前端只有我一個,代碼也考慮到了多個前端的情況。之后有啥改動在來探討下經驗。

上面的結論,都是我個人的一些觀點,經驗只談。有什么詫異之處還忘指點一二...

每個人的成長環境不同,工作環境不同,比然會在某些問題的看法上有許不同。

歡迎交流討論。

 

小tip:css的渲染速度測試:http://perfectionkills.com/profiling-css-for-fun-and-profit-optimization-notes/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM