日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
DIVCSS網(wǎng)頁(yè)布局時(shí)合理架構(gòu)CSS

本文向大家描述一下如何合理架構(gòu)CSS,構(gòu)建CSS系統(tǒng)的***步是大綱的擬定,CSS組織規(guī)劃的重要性堪比網(wǎng)站目錄結(jié)構(gòu),沒(méi)有哪種方案放之四海而皆準(zhǔn),因此我們會(huì)討論一些基本的組織方案,以及它們各自的利弊。

DIV CSS網(wǎng)頁(yè)布局時(shí)如何合理架構(gòu)CSS?

當(dāng)前瀏覽器普遍支持的前提下,CSS被我們賦予了***的使命。然而依靠CSS越多,樣式表文件就會(huì)變得越大越復(fù)雜。與此同時(shí),文件維護(hù)和組織的考驗(yàn)也隨之而來(lái)。(曾幾何時(shí))只要一個(gè)CSS文件就夠了——所有規(guī)則(rule)匯聚一堂,增刪改都很方便——可這種日子早已遠(yuǎn)去。(現(xiàn)在)建立新網(wǎng)站時(shí),必須花點(diǎn)時(shí)間好好籌劃怎么組織和架構(gòu)CSS。

文件的組織

  構(gòu)建CSS系統(tǒng)的***步是大綱的擬定。(我認(rèn)為)CSS組織規(guī)劃的重要性堪比網(wǎng)站目錄結(jié)構(gòu)。(htmlor注:用詞夸張一點(diǎn),讓你加深記憶)沒(méi)有哪種方案放之四海而皆準(zhǔn),因此我們會(huì)討論一些基本的組織方案,以及它們各自的利弊。

主CSS文件

  通??梢允褂靡粋€(gè)主CSS文件,來(lái)放置所有頁(yè)面共享的規(guī)則。這個(gè)文件會(huì)包含默認(rèn)的字體、鏈接、頁(yè)眉和其他等樣式。有了主CSS文件之后,我們開(kāi)始探討高級(jí)組織策略。

方法一:基于原型

  最基本的策略是基于原型頁(yè)面(archetypepage)分離CSS文件。假如一個(gè)網(wǎng)站的首頁(yè)、子頁(yè)面和組合頁(yè)設(shè)計(jì)不同,就可以采用基于原型的策略。(這種策略下)每個(gè)頁(yè)面都會(huì)有專屬的CSS文件。

  在原型數(shù)量不多的情況下,這個(gè)方法簡(jiǎn)單明了、行之有效。然而,當(dāng)頁(yè)面元素并不按部就班的位于各個(gè)原型頁(yè)時(shí),問(wèn)題就出現(xiàn)了。假如子頁(yè)面和組合頁(yè)共享某些元素,而首頁(yè)卻沒(méi)有,我們應(yīng)該怎么做呢?

  把共享元素放入主CSS文件。這雖不是最純正的解決辦法,卻適用于某些具體情況??墒羌偃缇W(wǎng)站龐大,(這樣做的話)主CSS文件會(huì)迅速膨脹——這就違反了分離文件的初衷:避免導(dǎo)入不必要的大文件。

  在組合頁(yè)和子頁(yè)面的CSS文件里各放一份樣式代碼。(這么做)就意味著要維護(hù)冗余代碼,很顯然我們不想這樣。

  創(chuàng)建一個(gè)新的文件,由這兩種頁(yè)面共享。這聽(tīng)起來(lái)不錯(cuò)。不過(guò)假如只有10行代碼,我們創(chuàng)建這個(gè)文件僅僅是為了共享這10行代碼?(htmlor注:殺雞用牛刀?)這方法很純粹,但假如網(wǎng)站龐大有很多對(duì)頁(yè)面共享很少量元素時(shí)(htmlor注:比如30對(duì)頁(yè)面分別共享10行代碼),就顯得很粗笨了。

  創(chuàng)建一個(gè)單獨(dú)的CSS文件,包含所有共享元素的樣式。這方法可能比較簡(jiǎn)單,卻要取決于網(wǎng)站的大小和共享元素的多少。有種情況會(huì)很煩:導(dǎo)入了一個(gè)很大的CSS文件,但頁(yè)面只用到一小部分樣式——還是那句話,這違反了分離文件的初衷。

  這就是我所說(shuō)的重疊的兩難(overlapdilemma)。零碎CSS規(guī)則的重疊不一而足,并沒(méi)有一個(gè)完全清楚無(wú)誤的方案來(lái)組織它們。

方法二:基于頁(yè)面元素/塊

  假如網(wǎng)站使用服務(wù)器端include,這個(gè)方法會(huì)很不錯(cuò)。舉例說(shuō)明,假如使用頁(yè)眉include,它會(huì)有自己相應(yīng)的CSS文件。頁(yè)腳或者其他部分的include可以如法炮制,只須導(dǎo)入自己的CSS文件。這個(gè)方法簡(jiǎn)單干凈,不過(guò)可能會(huì)產(chǎn)生很多小CSS文件。

  舉例來(lái)說(shuō),假如頁(yè)腳的樣式只需要20行CSS代碼,單***建一個(gè)文件就劃不來(lái)了。而且這個(gè)方法會(huì)導(dǎo)致每個(gè)頁(yè)面都包含一堆CSS文件——因?yàn)橛卸嗌賗nclude,就得有多少CSS文件。

方法三:基于標(biāo)記

  這個(gè)方案直觀實(shí)際,與前一個(gè)類似。假如網(wǎng)站共有30個(gè)頁(yè)面,其中10個(gè)含有form,那么可以創(chuàng)建一個(gè)CSS文件專門處理form的樣式,只在這10個(gè)頁(yè)面導(dǎo)入它。假如另外10個(gè)頁(yè)面含有table,就創(chuàng)建一個(gè)文件專門處理table樣式……諸如此類。

另外的組織技巧

  除了用主觀的方法組織文件,我們還要考慮如打印、手持設(shè)備和屏幕等多種媒體類型。這雖然已經(jīng)很清楚的定義過(guò),可依舊是建立文件結(jié)構(gòu)時(shí)應(yīng)該考慮的一個(gè)因素。一旦必須支持多種媒體類型,主CSS文件里的某些規(guī)則可能就得重新考慮。

  另外,品牌聯(lián)合也可能是一個(gè)重要因素。(htmlor注:如google和nike聯(lián)手推出的joga)假如涉及品牌聯(lián)合,你就得考慮哪些元素應(yīng)該調(diào)整以適應(yīng)另一品牌。比如分別使用不同的CSS文件等。

  還有一個(gè)常被忽略的技巧:使用嵌套的@import語(yǔ)句。只包含一連串@import語(yǔ)句,或者再加幾句CSS規(guī)則,就能創(chuàng)建一個(gè)CSS文件。用這個(gè)方法完全可以創(chuàng)建網(wǎng)站的主CSS文件(用@import導(dǎo)入各部分的樣式文件)。假如網(wǎng)站的每個(gè)頁(yè)面都導(dǎo)入了4到5個(gè)不同的CSS文件,無(wú)疑你應(yīng)該考慮使用這個(gè)技巧。#p#

規(guī)則和選擇器的組織

  談完了文件組織,接著討論一下怎么組織文件里的東西吧。很自然,我們希望在文件里暢通無(wú)阻的瀏覽,迅速找到要編輯的選擇器(selector)或規(guī)則。

冗余vs附屬

  正如DaveShea在其文章《冗余vs.附屬》(Redundancyvs.Dependency)里所說(shuō)的,你必須不斷了解級(jí)聯(lián)(cascade)。你要決定是對(duì)選擇器編組(意味著附屬),還是把它們分離(意味著冗余)。編組可以保持代碼簡(jiǎn)潔扼要,可是會(huì)建立附屬關(guān)系,導(dǎo)致維護(hù)開(kāi)銷增加。假如不編組,就會(huì)增加文件大小,讓相似的選擇器保持一致變得困難。只有做好這種權(quán)衡、取舍,才能每次都作出正確的決定。

按相互關(guān)系/上下文編組

  既然文件組織可以是主觀的,那么顯然,按照規(guī)則和選擇器與其他部分的相互關(guān)系來(lái)進(jìn)行編組是***的方法。舉例說(shuō)明,假設(shè)你用容器、頁(yè)眉和頁(yè)腳來(lái)完成布局,就應(yīng)該把它們編成一組。

  這似乎很簡(jiǎn)單,其實(shí)不然。比如,把頁(yè)眉中的導(dǎo)航加入CSS時(shí),是將它跟父元素編組還是獨(dú)立編組?這種情況下,要視乎規(guī)則的上下文。通常,頁(yè)眉與頁(yè)面布局相關(guān),應(yīng)該與其他布局元素一起編組。而導(dǎo)航是頁(yè)眉的一塊,應(yīng)該和頁(yè)眉的其他塊編組,而不是頁(yè)眉本身。

使用注釋

  跟大多數(shù)代碼類似,注釋是組織良好與否的要害。應(yīng)該根據(jù)CSS的控制范圍,清楚的標(biāo)注每節(jié)(section)。***確保注釋視覺(jué)突出,以便在內(nèi)容滾動(dòng)、一目十行時(shí)快速定位。

  DougBowman在其文章《CSS組織技巧之一:標(biāo)記》(CSSorganizationTip#1:Flags)里把CSS注釋玩得高明之極。他具體說(shuō)明了在節(jié)名之前加上等號(hào),以便使用文本編輯器的查找功能迅速跳到某節(jié)。

  你應(yīng)該細(xì)致認(rèn)真的了解了特異性、級(jí)聯(lián)和繼續(xù),并善用它們。它們之中的每一項(xiàng)都可以是你最可怕的敵人,也可以是你最友善的朋友。當(dāng)建立龐大的網(wǎng)站時(shí),是否理解這些細(xì)微精妙之處,決定了你所構(gòu)建的是堅(jiān)如磐石的系統(tǒng),還是經(jīng)不起風(fēng)雨的豆腐渣工程。(htmlor注:這句完全意譯,比較爽)

屬性的組織

  現(xiàn)在我們了解了文件的組織,也知道了文件內(nèi)規(guī)則的組織,但還有一個(gè)重要的組織環(huán)節(jié)(沒(méi)有提到),那就是屬性(attribute)。雖然屬性比前兩個(gè)概念更簡(jiǎn)單,可是還有一些非常好的、能夠保持規(guī)則整潔的方法很值得一提。

按字母排序

  提到屬性,假如說(shuō)需要遵循什么原則的話,那就是:按-字-母-排-序。其實(shí)這招對(duì)于屬性瀏覽幫助不大,不過(guò)可以防止屬性值覆蓋這種偶然事件的發(fā)生。

  舉個(gè)例子吧,已經(jīng)數(shù)不清有多少次,我為某個(gè)選擇器定義過(guò)了margin值,之后的某天無(wú)意間又加了一個(gè)(或前或后)。(這種情況下)后一個(gè)屬性自然會(huì)起作用。假設(shè)不知道第二個(gè)屬性存在,不管我怎么調(diào)整***個(gè)屬性值、刷新瀏覽器,也看不到頁(yè)面變化。(htmlor注:這個(gè)問(wèn)題我深有體會(huì))假如按照字母順序排列,你就會(huì)發(fā)現(xiàn)margin被定義了兩次(因?yàn)樗鼈儼ぴ谝黄?,這個(gè)問(wèn)題自然可以避免。

優(yōu)先項(xiàng)

  當(dāng)網(wǎng)站復(fù)雜、牽涉太多CSS文件時(shí),會(huì)建立大量的附屬關(guān)系。一旦需要定制某個(gè)元素特有的樣式,!important選項(xiàng)似乎是***選擇。沒(méi)錯(cuò),!important是能解一時(shí)之需,但***搞清楚導(dǎo)致問(wèn)題的根源,然后根據(jù)級(jí)聯(lián)關(guān)系決定是否真的需要用它。

  假如你對(duì)上文提到的特異性、級(jí)聯(lián)和繼續(xù)很熟悉,大可不必抱著!important一顆樹(shù)不放。(htmlor注:整片森林等著你~)當(dāng)然它還是會(huì)派上用場(chǎng),不過(guò)使用之前要對(duì)具體情況了然于胸。千萬(wàn)不要因?yàn)椴恢獑?wèn)題的癥結(jié)所在而把!important當(dāng)作捷徑或是補(bǔ)救方案。

小結(jié)

  當(dāng)我們變得依靠CSS而使樣式表日漸復(fù)雜時(shí),就需要正確的計(jì)劃來(lái)避免犯錯(cuò),并使代碼易于維護(hù)。既然***無(wú)缺的方案并不存在,那么了解CSS的工作方式以及文件、選擇器和屬性的多種組織方案,無(wú)疑有助于我們寫(xiě)出優(yōu)質(zhì)的代碼,經(jīng)受住時(shí)間考驗(yàn)。
 

【編輯推薦】

  1. 調(diào)用DIV+CSS實(shí)現(xiàn)模擬表格對(duì)角線
  2. JavaScript動(dòng)態(tài)創(chuàng)建div屬性和樣式
  3. SPAN元素和DIV元素的區(qū)別
  4. CSS2.0中page-break-after屬性用法
  5. 探究CSS中border:none;與border:0;的區(qū)別

分享題目:DIVCSS網(wǎng)頁(yè)布局時(shí)合理架構(gòu)CSS
瀏覽路徑:http://www.5511xx.com/article/cdgishs.html