新聞資訊

道(dào)維向您推薦的(de)一(yī)種組織CSS的(de)方✔¶ 法

推薦的(de)一(yī)種組織CSS的(de)方法:base.css+∑ε£common.css+page.css。将網站(zhε<àn)內(nèi)的(de)所有(yǒu)樣式,按照(zhào☆™♦↓)職能(néng)分(fēn)成三大(dà)類:base、common π&§和(hé)page。在一(yī)般情況下☆≠α(xià),任何一(yī)個(gè)網頁的(de)最終表現€π¶ε(xiàn)都(dōu)是(shì)由這(zhè)三者共同完成的(de)。≥♥★這(zhè)三者并不(bù)是(shì)并列結構,而是(s&¥αhì)層疊結構。


    page
    ↓
    common
    ↓
    base


1.base層


這(zhè)一(yī)層位于三者的(de)最<γ>底層,提供CSS reset功能(néng)和(hé)粒度最小(xiǎo)的(®↑‍↓de)通(tōng)用(yòng)類---原子(zǐ)類。
這(zhè)一(yī)層會(huì)被所有(yǒu)頁面引用 ±♥(yòng),是(shì)頁面樣式所需以×↔✔來(lái)的(de)最底層。這(zhè)一(yīπ↓×)層與具體(tǐ)UI無關,無論何種風(fēng)格的(de)設計(jì)都•ε(dōu)可(kě)以引用(yòng)它,素以baseε ₩§層要(yào)力求精簡和(hé)通(tō↓λ✔​ng)用(yòng)。這(zhè)一(yī)層•φ​✔的(de)核心職能(néng)猶如(rú)房(fáng)子(zǐαφ  )的(de)地(dì)基一(yī)樣重要(yào₩♠),亦扮演著(zhe)網頁中最基礎的(de)同樣重要(σλ÷yào)的(de)角色。


2.common層


這(zhè)一(yī)層位于中間(jiā σ‌♠n),提供組件(jiàn)級的(de)CSS類↔π←'。與common層相(xiàng)關的(de)是(shì)樣式的(σ•"de)模塊化(huà),模塊化(huà)可(kě)以從(cóng)"≥∞樣式和(hé)行(xíng)為(wèi)兩個(gè)層面來(​γ®≠lái)考慮。我們可(kě)以将頁面內(nè©π↔↓i)的(de)元素拆分(fēn)成一(yī)">小(xiǎo)塊一(yī)小(xiǎo)塊功能(nén≥&∑±g)和(hé)樣式相(xiàng)對(duì)獨立的(de)小(α$xiǎo)模塊,這(zhè)些(xiē)模塊有(yǒu)些(xδ®>iē)是(shì)很(hěn)少(shǎo)重複的(de)≠  ∑,有(yǒu)些(xiē)是(shì)會(huì)大(dà)量↕βββ重複的(de),我們可(kě)以将大(dà)量重複的(de)模塊視(s>≠βhì)為(wèi)一(yī)個(gè)組件(€←jiàn)。我們從(cóng)頁面盡可(kě)能(néng)♦®¥多(duō)地(dì)将組件(jiàn)提取出λ☆來(lái),放(fàng)在common層裡(lǐ)。common層♥ε就(jiù)相(xiàng)當于MVC模式中的(↓★σ≠de)M(Model模型)。為(wèi)了(le)保證重用(yòng)性Ω‍φβ和(hé)靈活性,M需要(yào)盡可(kě)能(néng)将內(nèi↔φφ)部實現(xiàn)封裝,對(duì)可(kě)λ±♠ 能(néng)會(huì)經常變化(huà)的(de)部分✔£(fēn)提供靈活的(de)接口。不(bù)同的(de)房(δ♣fáng)子(zǐ)選用(yòng)不(bù)同的(de)門<•§σ(mén)窗(chuāng),common層就(jiù)像建房(fáng∞≤)時(shí)用(yòng)到(dào)的(de)門(mén)窗​§₹(chuāng),房(fáng)子(zǐ)選用(yòng)的£♠©(de)門(mén)窗(chuāng)就(jiù)好(hǎo €​)比這(zhè)個(gè)網站(zhàn)選用(yòng)的(deπ♠)UI組件(jiàn)。門(mén)窗(ch☆©uāng)最好(hǎo)與整個(gè)房(fáng)♦π子(zǐ)的(de)風(fēng)格保持一(yī)緻。同樣<&☆,網站(zhàn)最好(hǎo)讓UI組件(jπ‍iàn)的(de)風(fēng)格保持相(xiàng)同。UI組件(jiàn)α£φ是(shì)網站(zhàn)中的(de)單位,↔±在網站(zhàn)內(nèi)部可(kě↕☆÷)以高(gāo)度重用(yòng),但(dàn)不(bù)用(yò£×ng)的(de)網站(zhàn)可(kě)能(n∑♠π₩éng)會(huì)用(yòng)不(bù)同的(de)UI組件(jΩ☆iàn)。
所以,comman層的(de)網站(zhàn)級的(de),不(♠≥bù)同的(de)網站(zhàn)有(yǒu)不(bù)同的(de)commoπ®∑‍n層,同一(yī)個(gè)網站(zhàn)±✔‍÷隻有(yǒu)一(yī)個(gè)commo"¥♦n層。common層是(shì)放(fàng)在一(yī)個(<®β&gè)common.css文(wén)件(jiàn)裡(lǐ↔ε),還(hái)是(shì)按照(zhào)功能(n←σéng)劃分(fēn)放(fàng)在諸如(rú)common_for¶♠γm.css、common_imagelist.css的(de)多(duō)λ¶®★個(gè)文(wén)件(jiàn)裡(lǐ≥☆),需要(yào)根據網站(zhàn)規模來(lái)決定。在λ∏'團隊合作(zuò)中,common層最好(☆±​hǎo)由一(yī)個(gè)人(rén)負責,統一(yī)管理(lλ★ǐ)。


3.page層


網站(zhàn)中高(gāo)度重用(yòng)的(de)模塊,"≤✔♠我們把它們視(shì)為(wèi)組件(jiàn),放(fàng≠')在common層;非高(gāo)度重用(yòng)的(de)模塊,可★ ∏(kě)以把它們放(fàng)在page層。page層位于最高(gāo)層,₹'提供頁面級的(de)樣式。page層就(jiù)好→≤δ(hǎo)比是(shì)房(fáng)間(jiāγ↕>←n)內(nèi)的(de)裝飾畫(huà),↓‌‌‌不(bù)同房(fáng)間(jiān)的(de)裝飾畫(huà)各不(bù)"↑相(xiàng)同。
page層是(shì)頁面級的(de),每個(gè)頁面都♦‍(dōu)可(kě)能(néng)有(yǒu)自(zì)己的(de)page層 ↔CSS.page層的(de)文(wén)件(jiàn)可(kě)以分(₩φfēn)離(lí)出來(lái)寫,也(yě)可♦$(kě)以放(fàng)在一(yī)個(gè)pag  e.css文(wén)件(jiàn)裡(lǐ),根據頁面配上(shàng)注✔♣釋,分(fēn)塊書(shū)寫,便于維護。實例:


/*首頁*/
.test{}
.test2{}


/*關于我們*/
.test3{}
.test4{}


/*聯系我們*/
.test5{}
.test6{}


這(zhè)樣做(zuò)可(kě)能(≤≠ néng)會(huì)帶來(lái)些(xiē)冗餘,比如(rú&‍£),首頁的(de)css文(wén)件(jiàn)裡(lǐ)帶有(y±♦ǒu)“關于我們”、“聯系我們”頁的(de)page↕↕Ω±層CSS文(wén)件(jiàn),而這(zhè)些(xiē)對(duì)首 >頁的(de)樣式毫無影(yǐng)響。但(dàn)是(₽$shì),對(duì)于文(wén)件(jiàn)過于 '₩π分(fēn)散和(hé)集中的(de)問(wèn)πφ'題并沒有(yǒu)完美(měi)的(de)解決方法,我們需要(♠&≤ yào)根據實際情況做(zuò)些(xiē)适當的(de)折中。比起讓pa→←$ge層的(de)CSS文(wén)件(jiàn)過÷&于繁多(duō)和(hé)零散,把它們集中在一(yī)個(‍÷©¶gè)文(wén)件(jiàn)中更便于維護,且↑÷便于浏覽器(qì)緩存,浏覽網站(zhàn)↓→β時(shí)隻有(yǒu)首頁的(de)下(xià)載時(shí)間(jΩ←iān)較長(cháng),浏覽其他(tā)頁面時(♦ βπshí)反而較快(kuài)。當然,page.css還(háλβ'i)是(shì)應當越精簡越好(hǎo),能(néng)用(y→₩$×òng)base層和(hé)common層的(γ★$de)CSS解決的(de),就(jiù)盡量不(bù)要(≥₩yào)用(yòng)到(dào)page層。


base層基本上(shàng)不(bù)需要(y★ε™₩ào)維護,common層修改的(de)幅度不(bù)會(huì)很​≤(hěn)大(dà),通(tōng)常隻由一(yī)個(gè)人↔∑∏(rén)負責維護,但(dàn)到(dào)了(le)p∑★ age層,代碼可(kě)能(néng)由$‍多(duō)人(rén)開(kāi)發,如(rú)何避免沖突是(s™↕♦​hì)個(gè)需要(yào)注意的(de)問(wèn)題。通(t$ €ōng)常我們通(tōng)過命名規則來(lái)避免這(zhè)種♠♠¶ 沖突。