搜尋
首頁web前端css教學網站設計之合理架構css

網站設計之合理架構css

Nov 24, 2016 pm 02:48 PM
css

架構css

  在當前瀏覽器普遍支持的前提下,css被我們賦予了前所未有的使命。然而依賴css越多,樣式表檔案就會變得越大越複雜。同時,文件維護和組織的考驗也隨之而來。

  (曾幾何時)只要一個css檔案就夠了--所有規則(rule)匯聚一堂,增刪改都很方便--可這種日子早已遠去。 (現在)建立新網站時,必須花點時間好好規劃怎麼組織和架構css。

  文件的組織

  建構css系統的第一步是大綱的擬定。 (我認為)css組織規劃的重要性堪比網站目錄結構。 (htmlor註:用詞誇張一點,讓你加深記憶) 沒有哪種方案放之四海而皆準,因此我們會討論一些基本的組織方案,以及它們各自的利弊。

  主css文件

  通常可以使用一個主css文件,來放置所有頁面共享的規則。這個文件會包含預設的字體、連結、頁首和其他等樣式。有了主css檔案之後,我們開始探討高階組織策略。

  方法一:基於原型

  最基本的策略是基於原型頁面(archetype page)分離css檔案。假如一個網站的首頁、子頁和組合頁設計不同,就可以採用基於原型的策略。 (這種策略下)每個頁面都會有專屬的css檔。

  在原型數量不多的情況下,這個方法簡單明了、行之有效。然而,當頁面元素並不按部就班的位於各個原型頁時,問題就出現了。如果子頁面和組合頁共用某些元素,而首頁卻沒有,我們該怎麼做呢?

  把共享元素放入主css檔案。這雖不是最純正的解決辦法,卻適用於某些具體情況。可是如果網站龐大,(這樣做的話)主css文件會迅速膨脹-這就違背了分離文件的初衷:避免導入不必要的大文件。

  在組合頁和子頁的css檔案裡各放一份樣式代碼。 (這麼做)就意味著要維護冗餘程式碼,很顯然我們不想這樣。

  建立一個新的文件,由這兩種頁面共用。這聽起來不錯。不過假如只有10行程式碼,我們創建這個檔案只是為了共享這10行程式碼?(htmlor註:殺雞用牛刀?) 這方法很純粹,但如果網站龐大有很多對頁面共享很少量元素時( htmlor註:例如30對頁面分別共享10行程式碼),就顯得很笨重了。

  建立一個單獨的css文件,包含所有共享元素的樣式。這方法可能比較簡單,卻要取決於網站的大小和共享元素的多寡。有種情況會很煩:導入了一個很大的css文件,但頁面只用到一小部分樣式——還是那句話,這違背了分離文件的初衷。

  這就是我所說的重疊的兩難(overlap dil​​emma)。零碎css規則的重疊不一而足,並沒有一個完全清晰無誤的方案來組織它們。

  方法二:基於頁面元素/區塊

  如果網站使用伺服器端include,這個方法會很不錯。舉例說明,如果使用頁眉include,它會有自己對應的css檔。頁腳或其他部分的include可以如法炮製,只須匯入自己的css檔案。這個方法簡單乾淨,不過可能會產生很多小css檔。

  舉例來說,假如頁腳的樣式只需要20行css程式碼,單獨建立一個檔案就劃不來了。而且這個方法會導致每個頁面都包含一堆css檔案──因為有多少include,就得有多少css檔案。

  方法三:基於標記

  這個方案直觀實際,與前一個類似。如果網站共有30個頁面,其中10個含有form,那麼可以建立一個css檔案專門處理form的樣式,只在這10個頁面匯入它。如果另外10個頁面含有table,就建立一個檔案專門處理table樣式…諸如此類。

  另外的組織技巧

  除了用主觀的方法組織文件,我們還要考慮如打印、手持設備和屏幕等多種媒體類型。這雖然已經很清楚的定義過,但可依舊是建立文件結構時應該考慮的因素。一旦必須支援多種媒體類型,主css檔案裡的某些規則可能就得重新考慮。

  另外,品牌聯合也可能是一個重要因素。 (htmlor註:如google和nike聯手推出的joga) 如果涉及品牌聯合,你就得考慮哪些元素應該調整以適應另一個品牌。例如分別使用不同的css檔案等。

  還有一個常被忽略的技巧:使用巢狀的@import語句。只包含一連串@import語句,或是再加幾句css規則,就能建立一個css檔。用這個方法完全可以建立網站的主css檔案(用@import匯入各部分的樣式檔案)。假如網站的每個頁面都導入了4到5個不同的css文件,無疑你應該考慮使用這個技巧。

  規則和選擇器的組織

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

  冗餘 vs. 附屬

  正如Dave Shea在其文章《冗餘 vs. 附屬》(Redundancy vs. Dependency)裡所說的,你必須不斷了解級聯(cascade)。你要決定是對選擇器編組(意味著附屬),還是把它們分開(意味著冗餘)。編組可以保持程式碼簡潔扼要,可是會建立附屬關係,導致維護開銷增加。如果不編組,就會增加檔案大小,讓相似的選擇器保持一致變得困難。只有做好這種權衡、取捨,才能每次都做出正確的決定。


陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
鏈接HTML中CSS文件的最終指南鏈接HTML中CSS文件的最終指南May 13, 2025 am 12:02 AM

鏈接CSS文件到HTML可以通過在HTML的部分使用元素實現。 1)使用標籤鏈接本地CSS文件。 2)多個CSS文件可通過添加多個標籤實現。 3)外部CSS文件使用絕對URL鏈接,如。 4)確保正確使用文件路徑和CSS文件加載順序,優化性能可使用CSS預處理器合併文件。

CSS Flexbox與網格:全面評論CSS Flexbox與網格:全面評論May 12, 2025 am 12:01 AM

選擇Flexbox還是Grid取決於佈局需求:1)Flexbox適用於一維佈局,如導航欄;2)Grid適合二維佈局,如雜誌式佈局。兩者在項目中可結合使用,提升佈局效果。

如何包括CSS文件:方法和最佳實踐如何包括CSS文件:方法和最佳實踐May 11, 2025 am 12:02 AM

包含CSS文件的最佳方法是使用標籤在HTML的部分引入外部CSS文件。 1.使用標籤引入外部CSS文件,如。 2.對於小型調整,可以使用內聯CSS,但應謹慎使用。 3.大型項目可使用CSS預處理器如Sass或Less,通過@import導入其他CSS文件。 4.為了性能,應合併CSS文件並使用CDN,同時使用工具如CSSNano進行壓縮。

Flexbox vs Grid:我應該學習兩者嗎?Flexbox vs Grid:我應該學習兩者嗎?May 10, 2025 am 12:01 AM

是的,youshouldlearnbothflexboxandgrid.1)flexboxisidealforone-demensional,flexiblelayoutslikenavigationmenus.2)gridexcelstcelsintwo-dimensional,confffferDesignssignssuchasmagagazineLayouts.3)blosebothenHancesSunHanceSlineHancesLayOutflexibilitibilitibilitibilitibilityAnderibilitibilityAndresponScormentilial anderingStruction

軌道力學(或我如何優化CSS KeyFrames動畫)軌道力學(或我如何優化CSS KeyFrames動畫)May 09, 2025 am 09:57 AM

重構自己的代碼看起來是什麼樣的?約翰·瑞亞(John Rhea)挑選了他寫的一個舊的CSS動畫,並介紹了優化它的思維過程。

CSS動畫:很難創建它們嗎?CSS動畫:很難創建它們嗎?May 09, 2025 am 12:03 AM

CSSanimationsarenotinherentlyhardbutrequirepracticeandunderstandingofCSSpropertiesandtimingfunctions.1)Startwithsimpleanimationslikescalingabuttononhoverusingkeyframes.2)Useeasingfunctionslikecubic-bezierfornaturaleffects,suchasabounceanimation.3)For

@KeyFrames CSS:最常用的技巧@KeyFrames CSS:最常用的技巧May 08, 2025 am 12:13 AM

@keyframesispopularduetoitsversatoryand and powerincreatingsmoothcsssanimations.keytricksinclude:1)definingsmoothtransitionsbetnestates,2)使用AnimatingMultatingMultationMultationProperPertiessimultane,3)使用使用4)使用BombingeNtibalibility,4)使用CombanningWiThjavoFofofofoftofofo

CSS計數器:自動編號的綜合指南CSS計數器:自動編號的綜合指南May 07, 2025 pm 03:45 PM

CSSCOUNTERSAREDOMANAGEAUTOMANAMBERINGINWEBDESIGNS.1)他們可以使用forterablesofcontents,ListItems,and customnumbering.2)AdvancedsincludenestednumberingSystems.3)挑戰挑戰InclassINCludeBrowsEccerCerceribaliblesibility andperformiballibility andperformissises.4)創造性

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。