個(gè)人總結(jié)了在開(kāi)發(fā)css框架中的一點(diǎn)經(jīng)驗(yàn),獻(xiàn)丑了。希望大家的討論能使我們共同進(jìn)步。:)
1、css框架
中國(guó)的互聯(lián)網(wǎng)行業(yè)已經(jīng)發(fā)展了10年,瀏覽器也從最早流行的NS到現(xiàn)在的FF3.IE7等等……前端開(kāi)發(fā)工程師的職位也誕生了。近幾年在web開(kāi)發(fā)中,有個(gè)非;鸬脑~——“框架”。YUI、JQuery、Prototype這些javascript框架在開(kāi)發(fā)網(wǎng)站時(shí),確實(shí)成為前端開(kāi)發(fā)工程師的手中利器。為什么呢?因?yàn)榭蚣苁前ぞ摺⒑瘮?shù)庫(kù)、約定,以及嘗試從常用任務(wù)中抽象出可以復(fù)用的通用模塊,讓設(shè)計(jì)師與程序員避免重復(fù)開(kāi)發(fā)。通俗地講便是把大多數(shù)重復(fù)工作的時(shí)間給節(jié)約了。
編寫css也是一樣,從最初只是定義文字顏色、內(nèi)容排版,到現(xiàn)在定義所有的表現(xiàn)。css框架也漸漸被重視了,因?yàn)榇蠹叶颊J(rèn)識(shí)到:從具象的表現(xiàn)中抽出抽象的模塊來(lái)重復(fù)使用,是減少用戶下載、方便團(tuán)隊(duì)及個(gè)人開(kāi)發(fā)最重要的手段。
2、css框架的開(kāi)發(fā)順序
a) 格式化 reset.css
格式化css的真正好處是能夠快速啟動(dòng)工作,你可以在新的HTML文件里引入框架,不用再處理重置padding 和 margins,實(shí)現(xiàn)統(tǒng)一的排版、瀏覽器下的相同表現(xiàn)。
b) 布局 layout.css 網(wǎng)頁(yè)教學(xué)網(wǎng)
定義頁(yè)面是二欄還是三欄,是全屏還是1024×768…… 網(wǎng)頁(yè)教學(xué)網(wǎng)
一個(gè)網(wǎng)站的設(shè)計(jì)可能有很多種布局,但是大多數(shù)都是由幾個(gè)具有復(fù)用性的布局組成,選擇性的引入所需要的布局,可以很快地應(yīng)用所期望的頁(yè)面布局。
c) 基本樣式 type.css 網(wǎng)頁(yè)教學(xué)網(wǎng)
定義body、h1-h6、a:link-a:active、p等的字體大小和顏色。
基本樣式的css引用,譬如將ul定義class為“ul-text”,用來(lái)展現(xiàn)相同的icon、行間距、鏈接色彩。
還可以像這樣應(yīng)用:class=”ul-text square”,li前展現(xiàn)的是方型的icon。 網(wǎng)頁(yè)教學(xué)網(wǎng)
d) 表格修飾 table.css
定義table、tr、td、th、thead、tfoot、tbody、caption等標(biāo)簽的表現(xiàn)。
和基本樣式一樣,但是表格在現(xiàn)有網(wǎng)站的展現(xiàn)形式幾乎都是處理數(shù)據(jù),所以分開(kāi)存放引用。譬如在table上應(yīng)用table-style-1便是黑色邊框的表格,table-style-2便是黃色邊框的表格。 網(wǎng)頁(yè)教學(xué)網(wǎng)
e) 表單修飾 form.css
定義fieldset、label、button、input 、select、textarea這幾個(gè)標(biāo)簽的表現(xiàn)。
大多數(shù)網(wǎng)站的表單、按鈕、輸入框幾乎都是一樣的。之所以引入這個(gè)css,是為了便于統(tǒng)一在各個(gè)瀏覽器中的展現(xiàn)。默認(rèn)的按鈕、輸入框等在各個(gè)瀏覽器下的展現(xiàn)區(qū)別很大,雖然在格式化的css中已經(jīng)初步的統(tǒng)一,但是輸入框的邊框,按鈕的樣式都是需要在這個(gè)css中定義的。無(wú)奈的是select無(wú)法做到統(tǒng)一,如果考慮到用js實(shí)現(xiàn)的話,這個(gè)成本太大了點(diǎn)。
f) 打印修飾 print.css
修飾打印輸出的頁(yè)面。
g) 包含其他css的css
frontpage.css、list.css、detail.css、register.css等等
根據(jù)各種引用去引入相應(yīng)的css。譬如list頁(yè)面中沒(méi)有需要表格的修飾,那就不引入table.css。以節(jié)約代碼量。||| 3、css框架文件夾的建立
a) core 主要的
存放reset.css、layout.css、type.css、print.css Webjx.Com
b) bud 模塊
存放table.css、form.css、album.css等css Webjx.Com
c) petal 具體應(yīng)用
存放封裝過(guò)的css。frontpage.css、llist.css、detail.css、register.css等css。這個(gè)文件夾存放的css都是被直接引用的。
文件夾的命名,按個(gè)人喜好啦! 我還希望用電子、質(zhì)子等命名呢。嘿嘿!
4、css框架的優(yōu)點(diǎn)
a) 提高開(kāi)發(fā)效率。
b) 規(guī)范名稱定義,便于維護(hù)。
c) 規(guī)范項(xiàng)目開(kāi)發(fā)流程
d) css代碼更清晰、簡(jiǎn)單。html代碼更合理。
5、css框架的弊端。
a) 學(xué)習(xí)成本提高。你需要了解整個(gè)框架,需要閱讀框架的文檔。
b) css框架對(duì)于一個(gè)小項(xiàng)目等頁(yè)面來(lái)說(shuō)很臃腫?蚣苤锌赡苡写蟛糠帜阌貌坏降拇a。
c)可能會(huì)無(wú)法幫助你的技術(shù)提高。太依賴框架,以至于很難排除bug。包括框架中本身就帶的bug。
d) 選擇自己需要的框架與開(kāi)發(fā)框架都很痛苦。寫到后面發(fā)現(xiàn)越來(lái)越不靈活,越來(lái)越臃腫。殘念 -_-
6、開(kāi)發(fā)及使用css框架中常遇到的問(wèn)題。
1、頁(yè)面外部引用樣式過(guò)多。
譬如關(guān)于ul的margin定義,在格式化的css中會(huì)聲明為0,而在基本樣式的css中又可能會(huì)聲明margin:5px 10px;
所以在Yslow中會(huì)出現(xiàn)多次定義。
2、組件復(fù)用性的考量。
譬如表單定義的css中定義了所有表單的修飾,而假定在注冊(cè)這個(gè)頁(yè)面中只是需要這個(gè)css的百分之三十。那是否應(yīng)切割出去那不要的百分之七十?
綜合以上的二個(gè)問(wèn)題,個(gè)人認(rèn)為解決的方式便是封裝,讓該有的有,不該有的沒(méi)有。盡量減少http連接數(shù)和css的大小。但如果徹底是這樣做的話,css的復(fù)用性又會(huì)變得很差,后期手工的封裝會(huì)很痛苦。只能套用小馬的一句話“具體情況,具體分析”。人生真是矛盾啊… 網(wǎng)頁(yè)教學(xué)網(wǎng)
3、到底該不該支持em?
可見(jiàn)如要支持em,最大的目的是為了在瀏覽器中可以根據(jù)用戶的分辨率大小自由縮放,對(duì)于擁有超大顯示器的用戶與小顯示器的用戶是非常有用的?墒窃诓杉覀冇脩舻臑g覽器數(shù)據(jù)后,發(fā)現(xiàn)分辨處于這二端的用戶非常少,可想而知,為這部分的用戶多花比正常開(kāi)發(fā)一倍以上的時(shí)間顯然是件不劃算的事情,所以當(dāng)初在開(kāi)發(fā)tbsp的時(shí)候,我們團(tuán)隊(duì)就決定了不支持em。當(dāng)然這是個(gè)建議,我們也希望能使用em帶給用戶最好的感受。
以上六點(diǎn)就是我和整個(gè)淘寶UED團(tuán)隊(duì)在日常開(kāi)發(fā)中的思考與總結(jié) ,可能您會(huì)提出一些不同的觀點(diǎn),沒(méi)關(guān)系,給我們留留言,一起探討吧!