歡迎訪(fǎng)問(wèn)世紀網(wǎng)絡(luò )官網(wǎng),寶雞網(wǎng)站建設SEO優(yōu)化已累計服務(wù)超過(guò)900家企業(yè)!     咨詢(xún)熱線(xiàn):13619273150

15年網(wǎng)站建設優(yōu)化經(jīng)驗,900家客戶(hù)的選擇,值得信賴(lài)!


網(wǎng)頁(yè)制作,改變你的思維方式

作者:佚名      發(fā)布時(shí)間:2012-01-06      瀏覽:1750

62.9K


“重構”的春風(fēng)吹遍大江南北,互聯(lián)網(wǎng)一時(shí)間風(fēng)聲鶴唳,“div+CSS”儼然已成為一種“時(shí)尚”,難以盡數的網(wǎng)站都不約而同地開(kāi)始了自己的“重構”。然而打開(kāi)這形形色色網(wǎng)站的源代碼,卻時(shí)常令人啞然失笑——

我們看到有嵌套6、7層的div布局,有不用table的表格,有純div+a構成的頁(yè)面,有成百上千的表現層class……現在關(guān)于標準的書(shū)籍越來(lái)越多,除了少數幾本標榜“高級技巧”的書(shū)籍以外,很少有人不會(huì )在自己著(zhù)作的前幾章強調這樣一句話(huà)——“結構與表現分離”。然而這些書(shū)籍的讀者們,又有多少人認認真真地讀過(guò)前幾章呢?還是更多地直接跳過(guò)那些乏味的結構講解,一頭扎到貌似高深的布局技巧與Hack中去?

其實(shí)div+CSS這個(gè)說(shuō)法從一開(kāi)始就誤導了太多的人,急功近利的心態(tài)則更是造成這種現象的罪魁禍首。一個(gè)習慣了table布局的網(wǎng)頁(yè)制作接觸標準的第一步,不應該是去盲目尋求實(shí)現各種布局的CSS技巧,而是努力改變自己的思維方式。

下面將結合我的切身體會(huì )談一談順應標準的思維方式,其中有不少是我曾經(jīng)走過(guò)的彎路,希望對剛剛接觸標準的兄弟姐妹們有些幫助:

1、“節省代碼”是營(yíng)銷(xiāo)手段,不是宗旨

“使用div布局可以比table布局節省更多的代碼”,我在很多書(shū)籍和網(wǎng)站上見(jiàn)到過(guò)這句話(huà)。這句話(huà)本身是沒(méi)錯的,可以“節省代碼”的確是網(wǎng)頁(yè)標準化所帶來(lái)的好處之一。然而切記,它只是“好處之一”,而不是“唯一好處”,更不是宗旨?!肮澥〈a”更多的時(shí)候是我們用來(lái)說(shuō)服那些頑固不化的老板的營(yíng)銷(xiāo)手段。網(wǎng)頁(yè)標準化的唯一宗旨是“結構與表現分離”,而絕不是為了節省代碼而節省代碼。我曾經(jīng)因為網(wǎng)站邊欄甚至主體內容的表現形式相同而采用了統一的class (至今還有一些書(shū)是這樣教的),這樣的確比分別命名id更節省代碼,然而這樣做的代價(jià)是代碼失去了良好的結構。失去良好結構的后果是:一、源代碼沒(méi)有了可讀性;二、網(wǎng)站增加了未知的維護成本。試想,當某一塊內容因為需要而作出表現形式的變動(dòng),例如鏈接的顏色等等,我們就不得不去修改頁(yè)面源文件,增加額外的class,工作量比起只需要調整id分組就大了許多。而且長(cháng)此以往,結構將會(huì )越來(lái)越差,形成難以逆轉的惡性循環(huán)。

還有一種情況,出現在id的命名方面,也是本人曾經(jīng)犯過(guò)的錯誤。那時(shí)為了“節省代碼”,而把主菜單命名為“mm”,二級菜單命名為“m2”,三級菜單為“m3”,結果嚴重降低了網(wǎng)頁(yè)的可讀性,使其他同事很難接手,圖省事卻累了自己。同理,文件及文件夾命名方面也不宜過(guò)簡(jiǎn),象《網(wǎng)站重構》里建議把圖片都用“i”目錄存放,個(gè)人以為并不可取,除非你能為這種高度縮寫(xiě)的目錄結構撰寫(xiě)詳細說(shuō)明并保證每個(gè)相關(guān)人員包括其他制作人員、開(kāi)發(fā)、甚至懂行的老板……都能理解和執行,否則只會(huì )給你自己增添不必要的麻煩。

2、ID是狙擊槍?zhuān)?/FONT>class是雙刃劍

想要做好網(wǎng)頁(yè)結構,idclass都是必須熟練掌握的,所謂“兩手抓,兩手都要硬”。ID就象狙擊槍一樣,可以幫助我們精準地定位要想要加載樣式的元素;而class則是俠客的佩劍,信手拈來(lái)更加輕盈靈便,兩者的結合能夠實(shí)現結構良好且表現豐富的頁(yè)面。然而現在有一種錯誤的觀(guān)點(diǎn),就是id完全可以用class來(lái)取代,事實(shí)上許多網(wǎng)頁(yè)源代碼也的確如此,打開(kāi)來(lái)通篇class,找不到一個(gè)id。造成這種現象的理由有很多種,然而自table時(shí)代傳下來(lái)的根深蒂固的“class=CSS”的觀(guān)念才是本因。的確,classid用途更廣更靈活,但也必須意識到,class對于構建良好的網(wǎng)頁(yè)結構遠不如id有效。id的強制唯一性使得我們可以很容易通過(guò)id檢索到我們需要的任意模塊,而class則沒(méi)有這個(gè)優(yōu)勢。雖然我們可以為模塊定義唯一的class名,但前提是——只有制作者本人可以動(dòng)網(wǎng)頁(yè)樣式。否則換一個(gè)稍微懶一些伙計,看到樣式相同便直接把前面的class拿來(lái)套用,其結果就是我們發(fā)現網(wǎng)頁(yè)里有十幾個(gè)模塊都叫做“gonggao”或者“xinwen”,以至于為了區分還不得不加上大量的html注釋?zhuān)@樣的結果顯然并不是我們想要的。再者就是前面提到的,通過(guò)通用class所節省下來(lái)的代碼,又不得不在每個(gè)單獨定義的class中揮霍掉。

ID是狙擊槍?zhuān)?/FONT>class是雙刃劍,合則兩利,分則兩敗。

3、并不是所有的內容都需要div做“容器”

主菜單究竟是用



0