建站常識
網(wǎng)站設(shè)計之合理架構(gòu)css
2006-11-02 14:13:00
架構(gòu)css
在當(dāng)前瀏覽器普遍支持的前提下,css被我們賦予了前所未有的使命。然而依賴css越多,樣式表文件就會變得越大越復(fù)雜。與此同時,文件維護(hù)和組織的考驗也隨之而來。
(曾幾何時)只要一個css文件就夠了——所有規(guī)則(rule)匯聚一堂,增刪改都很方便——可這種日子早已遠(yuǎn)去。(現(xiàn)在)建立新網(wǎng)站時,必須花點時間好好籌劃怎么組織和架構(gòu)css。
文件的組織
構(gòu)建css系統(tǒng)的第一步是大綱的擬定。(我認(rèn)為)css組織規(guī)劃的重要性堪比網(wǎng)站目錄結(jié)構(gòu)。(htmlor注:用詞夸張一點,讓你加深記憶) 沒有哪種方案放之四海而皆準(zhǔn),因此我們會討論一些基本的組織方案,以及它們各自的利弊。
主css文件
通常可以使用一個主css文件,來放置所有頁面共享的規(guī)則。這個文件會包含默認(rèn)的字體、鏈接、頁眉和其他等樣式。有了主css文件之后,我們開始探討高級組織策略。
方法一:基于原型
最基本的策略是基于原型頁面(archetype page)分離css文件。假如一個網(wǎng)站的首頁、子頁面和組合頁設(shè)計不同,就可以采用基于原型的策略。(這種策略下)每個頁面都會有專屬的css文件。
在原型數(shù)量不多的情況下,這個方法簡單明了、行之有效。然而,當(dāng)頁面元素并不按部就班的位于各個原型頁時,問題就出現(xiàn)了。如果子頁面和組合頁共享某些元素,而首頁卻沒有,我們應(yīng)該怎么做呢?
把共享元素放入主css文件。這雖不是最純正的解決辦法,卻適用于某些具體情況。可是如果網(wǎng)站龐大,(這樣做的話)主css文件會迅速膨脹——這就違背了分離文件的初衷:避免導(dǎo)入不必要的大文件。
在組合頁和子頁面的css文件里各放一份樣式代碼。(這么做)就意味著要維護(hù)冗余代碼,很顯然我們不想這樣。
創(chuàng)建一個新的文件,由這兩種頁面共享。這聽起來不錯。不過假如只有10行代碼,我們創(chuàng)建這個文件僅僅是為了共享這10行代碼?(htmlor注:殺雞用牛刀?) 這方法很純粹,但如果網(wǎng)站龐大有很多對頁面共享很少量元素時(htmlor注:比如30對頁面分別共享10行代碼),就顯得很笨重了。
創(chuàng)建一個單獨的css文件,包含所有共享元素的樣式。這方法可能比較簡單,卻要取決于網(wǎng)站的大小和共享元素的多少。有種情況會很煩:導(dǎo)入了一個很大的css文件,但頁面只用到一小部分樣式——還是那句話,這違背了分離文件的初衷。
這就是我所說的重疊的兩難(overlap dilemma)。零碎css規(guī)則的重疊不一而足,并沒有一個完全清晰無誤的方案來組織它們。
方法二:基于頁面元素/塊
如果網(wǎng)站使用服務(wù)器端include,這個方法會很不錯。舉例說明,如果使用頁眉include,它會有自己相應(yīng)的css文件。頁腳或者其他部分的include可以如法炮制,只須導(dǎo)入自己的css文件。這個方法簡單干凈,不過可能會產(chǎn)生很多小css文件。
舉例來說,假如頁腳的樣式只需要20行css代碼,單獨創(chuàng)建一個文件就劃不來了。而且這個方法會導(dǎo)致每個頁面都包含一堆css文件——因為有多少include,就得有多少css文件。
方法三:基于標(biāo)記
這個方案直觀實際,與前一個類似。如果網(wǎng)站共有30個頁面,其中10個含有form,那么可以創(chuàng)建一個css文件專門處理form的樣式,只在這10個頁面導(dǎo)入它。如果另外10個頁面含有table,就創(chuàng)建一個文件專門處理table樣式……諸如此類。
另外的組織技巧
除了用主觀的方法組織文件,我們還要考慮如打印、手持設(shè)備和屏幕等多種媒體類型。這雖然已經(jīng)很清楚的定義過,可依舊是建立文件結(jié)構(gòu)時應(yīng)該考慮的一個因素。一旦必須支持多種媒體類型,主css文件里的某些規(guī)則可能就得重新考慮。
另外,品牌聯(lián)合也可能是一個重要因素。(htmlor注:如google和nike聯(lián)手推出的joga) 如果涉及品牌聯(lián)合,你就得考慮哪些元素應(yīng)該調(diào)整以適應(yīng)另一品牌。比如分別使用不同的css文件等。
還有一個常被忽略的技巧:使用嵌套的@import語句。只包含一連串@import語句,或者再加幾句css規(guī)則,就能創(chuàng)建一個css文件。用這個方法完全可以創(chuàng)建網(wǎng)站的主css文件(用@import導(dǎo)入各部分的樣式文件)。假如網(wǎng)站的每個頁面都導(dǎo)入了4到5個不同的css文件,無疑你應(yīng)該考慮使用這個技巧。
規(guī)則和選擇器的組織
談完了文件組織,接著討論一下怎么組織文件里的東西吧。很自然,我們希望在文件里暢通無阻的瀏覽,迅速找到要編輯的選擇器(selector)或規(guī)則。
冗余 vs. 附屬
正如Dave Shea在其文章《冗余 vs. 附屬》(Redundancy vs. Dependency)里所說的,你必須不斷了解級聯(lián)(cascade)。你要決定是對選擇器編組(意味著附屬),還是把它們分離(意味著冗余)。編組可以保持代碼簡潔扼要,可是會建立附屬關(guān)系,導(dǎo)致維護(hù)開銷增加。如果不編組,就會增加文件大小,讓相似的選擇器保持一致變得困難。只有做好這種權(quán)衡、取舍,才能每次都作出正確的決定。
按相互關(guān)系/上下文編組
既然文件組織可以是主觀的,那么顯然,按照規(guī)則和選擇器與其他部分的相互關(guān)系來進(jìn)行編組是最好的方法。舉例說明,假設(shè)你用容器、頁眉和頁腳來完成布局,就應(yīng)該把它們編成一組。
這似乎很簡單,其實不然。比如,把頁眉中的導(dǎo)航加入css時,是將它跟父元素編組還是獨立編組?這種情況下,要視乎規(guī)則的上下文。通常,頁眉與頁面布局相關(guān),應(yīng)該與其他布局元素一起編組。而導(dǎo)航是頁眉的一塊,應(yīng)該和頁眉的其他塊編組,而不是頁眉本身。
使用注釋
跟大多數(shù)代碼類似,注釋是組織良好與否的關(guān)鍵。應(yīng)該根據(jù)css的控制范圍,清楚的標(biāo)注每節(jié)(section)。最好確保注釋視覺突出,以便在內(nèi)容滾動、一目十行時快速定位。
Doug Bowman在其文章《css組織技巧之一:標(biāo)記》(CSS Organization Tip #1: Flags)里把css注釋玩得高明之極。他詳細(xì)說明了在節(jié)名之前加上等號,以便使用文本編輯器的查找功能迅速跳到某節(jié)。
別忘了
你應(yīng)該細(xì)致認(rèn)真的了解了特異性、級聯(lián)和繼承,并善用它們。它們之中的每一項都可以是你最可怕的敵人,也可以是你最友善的朋友。當(dāng)建立龐大的網(wǎng)站時,是否理解這些細(xì)微精妙之處,決定了你所構(gòu)建的是堅如磐石的系統(tǒng),還是經(jīng)不起風(fēng)雨的豆腐渣工程。(htmlor注:這句完全意譯,比較爽)
屬性的組織
現(xiàn)在我們了解了文件的組織,也知道了文件內(nèi)規(guī)則的組織,但還有一個重要的組織環(huán)節(jié)(沒有提到),那就是屬性(attribute)。雖然屬性比前兩個概念更簡單,可是還有一些非常好的、能夠保持規(guī)則整潔的方法很值得一提。
按字母排序
提到屬性,如果說需要遵循什么原則的話,那就是:按-字-母-排-序。其實這招對于屬性瀏覽幫助不大,不過可以防止屬性值覆蓋這種偶然事件的發(fā)生。
舉個例子吧,已經(jīng)數(shù)不清有多少次,我為某個選擇器定義過了margin值,之后的某天無意間又加了一個(或前或后)。(這種情況下)后一個屬性自然會起作用。假設(shè)不知道第二個屬性存在,不管我怎么調(diào)整第一個屬性值、刷新瀏覽器,也看不到頁面變化。(htmlor注:這個問題我深有體會) 如果按照字母順序排列,你就會發(fā)現(xiàn)margin被定義了兩次(因為它們挨在一起),這個問題自然可以避免。
優(yōu)先項
當(dāng)網(wǎng)站復(fù)雜、牽涉太多css文件時,會建立大量的附屬關(guān)系。一旦需要定制某個元素特有的樣式,!important選項似乎是最佳選擇。沒錯,!important是能解一時之需,但最好搞清楚導(dǎo)致問題的根源,然后根據(jù)級聯(lián)關(guān)系決定是否真的需要用它。
如果你對上文提到的特異性、級聯(lián)和繼承很熟悉,大可不必抱著!important一顆樹不放。(htmlor注:整片森林等著你~) 當(dāng)然它還是會派上用場,不過使用之前要對具體情況了然于胸。千萬不要因為不知問題的癥結(jié)所在而把!important當(dāng)作捷徑或是補救方案。
小結(jié)
當(dāng)我們變得依賴css而使樣式表日漸復(fù)雜時,就需要正確的計劃來避免犯錯,并使代碼易于維護(hù)。既然完美無缺的方案并不存在,那么了解css的工作方式以及文件、選擇器和屬性的多種組織方案,無疑有助于我們寫出優(yōu)質(zhì)的代碼,經(jīng)受住時間考驗。
作者:Garrett Dimon
翻譯:htmlor
近期更新
- [2023-06-25 23:22:29] 優(yōu)秀網(wǎng)站設(shè)計的五大特點
- [2023-04-27 14:05:55] Html 5 響應(yīng)式網(wǎng)站設(shè)計制作
- [2023-04-10 11:07:30] 網(wǎng)站建設(shè)制作流程知多少
- [2022-10-14 10:11:30] 做網(wǎng)站設(shè)計應(yīng)該更看重框架搭建還是視覺觀感?
- [2022-08-09 15:57:48] 以“產(chǎn)品”思維搭建網(wǎng)站!
- [2022-08-08 09:12:57] 一家公司的網(wǎng)站應(yīng)該有哪些板塊內(nèi)容?
- [2022-08-05 09:28:06] 企業(yè)網(wǎng)站建設(shè)為什么要設(shè)置新聞板塊?
- [2022-07-04 15:58:06] 網(wǎng)站首頁設(shè)計的好看,這個網(wǎng)站就成功了一大半!
- [2022-05-20 09:34:19] 網(wǎng)站后臺管理系統(tǒng)是什么?有什么作用?
- [2022-05-17 11:29:32] 作為消費者,應(yīng)該如何選擇一家水平高的網(wǎng)站建設(shè)公司
- [2022-05-17 11:27:01] 高端網(wǎng)站定制與模板化網(wǎng)站應(yīng)該怎么選擇?
- [2022-04-22 16:00:41] 現(xiàn)在高端的網(wǎng)站設(shè)計都有哪些新的趨勢?
延伸閱讀
- [2009-09-27 21:49:00] 互聯(lián)網(wǎng)產(chǎn)品交互事件分析
- [2006-08-03 10:19:00] 賞析優(yōu)秀專業(yè)網(wǎng)站 學(xué)習(xí)網(wǎng)站建設(shè)經(jīng)驗
- [2007-05-25 15:48:00] 用戶喜歡點什么
- [2010-01-11 21:46:00] 閑言碎語:體驗如何設(shè)計
- [2009-05-13 21:46:00] 誰為用戶買單(1)—電子商務(wù)網(wǎng)站的交互設(shè)計
- [2010-03-03 14:19:00] 網(wǎng)頁表單中的行為也分主次
- [2006-04-20 10:27:00] 建站基礎(chǔ) 將網(wǎng)頁上傳到服務(wù)器
- [2006-01-06 21:46:00] 配色方案--構(gòu)圖必學(xué)
- [2009-07-07 08:03:00] 產(chǎn)品設(shè)計8條基本原則
- [2007-10-09 12:15:00] 視覺設(shè)計不只是圖形
- [2009-05-04 08:36:00] 勝過語言的圖形符號
- [2010-08-25 08:02:00] 互聯(lián)網(wǎng)界面設(shè)計模式
解決方案
輪胎行業(yè)網(wǎng)站設(shè)計解決方案 機(jī)械行業(yè)網(wǎng)站設(shè)計解決方案 房地產(chǎn)行業(yè)網(wǎng)站設(shè)計解決方案 科技企業(yè)網(wǎng)站設(shè)計解決方案 電子家電網(wǎng)站設(shè)計解決方案 食品行業(yè)網(wǎng)站設(shè)計解決方案 集團(tuán)公司網(wǎng)站設(shè)計解決方案 企事業(yè)單位網(wǎng)站設(shè)計解決方案 外貿(mào)行業(yè)網(wǎng)站設(shè)計解決方案 健身運動網(wǎng)站設(shè)計解決方案 美容與化妝品網(wǎng)站設(shè)計解決方案 建筑設(shè)計行業(yè)網(wǎng)站設(shè)計解決方案 物流行業(yè)網(wǎng)站設(shè)計解決方案
TAGS關(guān)鍵字
圖形網(wǎng)格 企業(yè)建站 青島好的網(wǎng)站優(yōu)化公司 青島網(wǎng)站SEO robots 審美 營銷型網(wǎng)站建設(shè) 網(wǎng)站改版 青島抖音小程序開發(fā) 青島網(wǎng)站建設(shè) html和css 微官網(wǎng) 外貿(mào)網(wǎng)站建設(shè) 用戶界面 視覺靈感 青島輪胎網(wǎng)站設(shè)計 響應(yīng)式設(shè)計 網(wǎng)站品牌 交互設(shè)計 微信開發(fā) 青島網(wǎng)站建設(shè)基礎(chǔ)知識 互聯(lián)網(wǎng) 膠南網(wǎng)站建設(shè)公司 手機(jī)網(wǎng)站建設(shè) H5 搜索引擎蜘蛛 良好的導(dǎo)航 H5定制設(shè)計 GOOGLE 青島flash網(wǎng)站