建站常識
網(wǎng)頁制作,改變你的思維方式
2007-10-01 08:32:00
“重構(gòu)”的春風(fēng)吹遍大江南北,互聯(lián)網(wǎng)一時間風(fēng)聲鶴唳,“div+CSS”儼然已成為一種“時尚”,難以盡數(shù)的網(wǎng)站都不約而同地開始了自己的“重構(gòu)”。然而打開這形形色******站的源代碼,卻時常令人啞然失笑——
我們看到有嵌套6、7層的div布局,有不用table的表格,有純div+a構(gòu)成的頁面,有成百上千的表現(xiàn)層class……現(xiàn)在關(guān)于標(biāo)準(zhǔn)的書籍越來越多,除了少數(shù)幾本標(biāo)榜“高級技巧”的書籍以外,很少有人不會在自己著作的前幾章強(qiáng)調(diào)這樣一句話——“結(jié)構(gòu)與表現(xiàn)分離”。然而這些書籍的讀者們,又有多少人認(rèn)認(rèn)真真地讀過前幾章呢?還是更多地直接跳過那些乏味的結(jié)構(gòu)講解,一頭扎到貌似高深的布局技巧與Hack中去?
其實(shí)div+CSS這個說法從一開始就誤導(dǎo)了太多的人,急功近利的心態(tài)則更是造成這種現(xiàn)象的罪魁禍?zhǔn)?。一個習(xí)慣了table布局的網(wǎng)頁制作接觸標(biāo)準(zhǔn)的第一步,不應(yīng)該是去盲目尋求實(shí)現(xiàn)各種布局的CSS技巧,而是努力改變自己的思維方式。
下面將結(jié)合我的切身體會談一談順應(yīng)標(biāo)準(zhǔn)的思維方式,其中有不少是我曾經(jīng)走過的彎路,希望對剛剛接觸標(biāo)準(zhǔn)的XDJM們有些幫助:
1、“節(jié)省代碼”是營銷手段,不是宗旨
“使用div布局可以比table布局節(jié)省更多的代碼”,我在很多書籍和網(wǎng)站上見到過這句話。這句話本身是沒錯的,可以“節(jié)省代碼”的確是網(wǎng)頁標(biāo)準(zhǔn)化所帶來的好處之一。然而切記,它只是“好處之一”,而不是“唯一好處”,更不是宗旨?!肮?jié)省代碼”更多的時候是我們用來說服那些頑固不化的老板的營銷手段。網(wǎng)頁標(biāo)準(zhǔn)化的唯一宗旨是“結(jié)構(gòu)與表現(xiàn)分離”,而絕不是為了節(jié)省代碼而節(jié)省代碼。我曾經(jīng)因?yàn)榫W(wǎng)站邊欄甚至主體內(nèi)容的表現(xiàn)形式相同而采用了統(tǒng)一的class (至今還有一些書是這樣教的),這樣的確比分別命名id更節(jié)省代碼,然而這樣做的代價是代碼失去了良好的結(jié)構(gòu)。失去良好結(jié)構(gòu)的后果是:一、源代碼沒有了可讀性;二、網(wǎng)站增加了未知的維護(hù)成本。試想,當(dāng)某一塊內(nèi)容因?yàn)樾枰鞒霰憩F(xiàn)形式的變動,例如鏈接的顏色等等,我們就不得不去修改頁面源文件,增加額外的class,工作量比起只需要調(diào)整id分組就大了許多。而且長此以往,結(jié)構(gòu)將會越來越差,形成難以逆轉(zhuǎn)的惡性循環(huán)。
還有一種情況,出現(xiàn)在id的命名方面,也是本人曾經(jīng)犯過的錯誤。那時為了“節(jié)省代碼”,而把主菜單命名為“mm”,二級菜單命名為“m2”,三級菜單為“m3”,結(jié)果嚴(yán)重降低了網(wǎng)頁的可讀性,使其他同事很難接手,圖省事卻累了自己。同理,文件及文件夾命名方面也不宜過簡,象《網(wǎng)站重構(gòu)》里建議把圖片都用“i”目錄存放,個人以為并不可取,除非你能為這種高度縮寫的目錄結(jié)構(gòu)撰寫詳細(xì)說明并保證每個相關(guān)人員包括其他制作人員、開發(fā)、甚至懂行的老板……都能理解和執(zhí)行,否則只會給你自己增添不必要的麻煩。
2、ID是狙擊槍,class是雙刃劍
想要做好網(wǎng)頁結(jié)構(gòu),id與class都是必須熟練掌握的,所謂“兩手抓,兩手都要硬”。ID就象狙擊槍一樣,可以幫助我們精準(zhǔn)地定位要想要加載樣式的元素;而class則是俠客的佩劍,信手拈來更加輕盈靈便,兩者的結(jié)合能夠?qū)崿F(xiàn)結(jié)構(gòu)良好且表現(xiàn)豐富的頁面。然而現(xiàn)在有一種錯誤的觀點(diǎn),就是id完全可以用class來取代,事實(shí)上許多網(wǎng)頁源代碼也的確如此,打開來通篇class,找不到一個id。造成這種現(xiàn)象的理由有很多種,然而自table時代傳下來的根深蒂固的“class=CSS”的觀念才是本因。的確,class比id用途更廣更靈活,但也必須意識到,class對于構(gòu)建良好的網(wǎng)頁結(jié)構(gòu)遠(yuǎn)不如id有效。id的強(qiáng)制唯一性使得我們可以很容易通過id檢索到我們需要的任意模塊,而class則沒有這個優(yōu)勢。雖然我們可以為模塊定義唯一的class名,但前提是——只有制作者本人可以動網(wǎng)頁樣式。否則換一個稍微懶一些伙計(jì),看到樣式相同便直接把前面的class拿來套用,其結(jié)果就是我們發(fā)現(xiàn)網(wǎng)頁里有十幾個模塊都叫做“gonggao”或者“xinwen”,以至于為了區(qū)分還不得不加上大量的html注釋,這樣的結(jié)果顯然并不是我們想要的。再者就是前面提到的,通過通用class所節(jié)省下來的代碼,又不得不在每個單獨(dú)定義的class中揮霍掉。
ID是狙擊槍,class是雙刃劍,合則兩利,分則兩敗。
3、并不是所有的內(nèi)容都需要div做“容器”
主菜單究竟是用<div id="mainnav"><ul>還是<ul id="mainnav">?這是一個博弈的問題。至今這個問題也沒有人能夠給出明確的答案,就連我也是如此。誠然,<div id="mainnav">在只包含了一個<ul>元素的時候,這個div就顯得有些冗余,但有時候?yàn)榱伺浜厦拦そk麗的設(shè)計(jì),多一層標(biāo)簽就意味著多一層變化(有些人在a標(biāo)簽里套span也是如此)。而div不帶任何原始屬性的先天優(yōu)勢也是其它標(biāo)簽所無法比擬的。這個命題我只是想說明一件事,就是我們應(yīng)該意識到,<div id="mainnav"><ul>之外,還有<ul id="mainnav">這種寫法,同樣具有良好的結(jié)構(gòu)和語義,并且省去了一層嵌套。在我們不需要為華麗的美工勞心勞神的時候,是不是也可以讓結(jié)構(gòu)更加簡約呢?
這個命題其實(shí)還可以引申為——“并不是所有內(nèi)容都需要塊元素做容器”、“并不是所有鏈接都需要其它元素做容器”,例如很多頁面都有的“更多”。有些人寫做“<div class="more"><a>”,也有人寫做<p><a>或者<strong><a>。在這些“容器”只包含了一個<a>標(biāo)簽的時候,它們是否還有存在的必要?直接寫成<a class="more">會破壞結(jié)構(gòu)嗎?會缺乏語義嗎?會影響布局嗎?換一種思路,你也許就會有不一樣的收獲。
4、工作上也做到“結(jié)構(gòu)與表現(xiàn)分離”
關(guān)于這一點(diǎn),網(wǎng)絡(luò)上很多高手都是這樣建議的,也就是先打開編輯器,把結(jié)構(gòu)完整地寫出來,再去CSS里寫表現(xiàn),而盡量不去動已經(jīng)寫好的結(jié)構(gòu)。
然而以看書為主要學(xué)習(xí)方式的人卻很難體會,因?yàn)殛P(guān)于標(biāo)準(zhǔn)的書籍多半是手把手來教的,也就是必然是結(jié)構(gòu)表現(xiàn)結(jié)合,循序漸進(jìn)。雖然有些書籍有這方面的建議,但短短的幾句話遠(yuǎn)不如讀書過程中的潛移默化。在制作人員能夠?qū)Y(jié)構(gòu)良好把握的時候,同時寫結(jié)構(gòu)與表現(xiàn)也不會對結(jié)果有太大的影響。但以我的經(jīng)驗(yàn),結(jié)構(gòu)表現(xiàn)分離的工作方式,要比同時寫結(jié)構(gòu)與表現(xiàn)效率高很多,同時也不容易遺漏頁面上的元素。
當(dāng)然,所謂的“結(jié)構(gòu)與表現(xiàn)分離”并不是完全不考慮表現(xiàn),想要兼顧到表現(xiàn),就要保證——在不破壞結(jié)構(gòu)的前提下,CSS選擇器能夠選擇到盡量多的內(nèi)容。在哪些地方加class,或者用哪些標(biāo)簽來區(qū)分,是一個見仁見智的地方,相信每個人都有自己的體會。而結(jié)合不同的設(shè)計(jì)稿,有時候也需要做出相應(yīng)的變化,然而這些變化都應(yīng)該有一個同樣的前提——不破壞代碼的結(jié)構(gòu)和可讀性。
再就是,一定要意識到,任何可視化的工具都是魔鬼。它們可視化界面下所呈現(xiàn)的效果,往往與真實(shí)瀏覽器相差千里,而我們真正要兼容的是瀏覽器,不是編輯器的可視化界面。
5、CSS不是萬能的,沒有CSS也不是萬萬不能的
相比于CSS1.0時代,今天CSS可以完成更多的事情,然而需求永遠(yuǎn)是領(lǐng)先于技術(shù)的,CSS無法完成網(wǎng)頁所有的表現(xiàn)層工作,有時候我們必須結(jié)合JS或者其他語言來實(shí)現(xiàn)一些效果。而另一些時候,用JS的方法比只靠CSS簡單得多,并且代碼結(jié)構(gòu)更加良好——最典型的例子就是下拉菜單。這些時候,我們要說服自己,或者說服老板與客戶,去采用更簡單更合理的方式。因?yàn)镈OM同樣是網(wǎng)頁標(biāo)準(zhǔn)的重要組成,并不是使用了JS我們的網(wǎng)頁就降低了效率或是不再標(biāo)準(zhǔn),恰恰相反,這是對JS最大的誤解。說到這里不得不提一點(diǎn),就是今天的時代,比以往更要求每個職業(yè)了解更多的相關(guān)知識,做設(shè)計(jì)的人要懂一點(diǎn)交互和制作,做制作的也必須了解設(shè)計(jì)和程序,尤其是JS這樣的前端技術(shù),只有這樣,你和同事才能夠更好地合作,個人的發(fā)展前景也會更加光明。
沒有CSS,指的是當(dāng)我們的網(wǎng)站因?yàn)楦鞣N未知的原因?qū)е翪SS文件載入失敗,不要因此而慌亂,這是考驗(yàn)我們代碼質(zhì)量的最佳時機(jī)。在沒有CSS的時候,如果網(wǎng)頁仍舊保持良好的可讀性,這成果要遠(yuǎn)比通過W3C驗(yàn)證更值得我們自豪。
近期更新
- [2023-06-25 23:22:29] 優(yōu)秀網(wǎng)站設(shè)計(jì)的五大特點(diǎn)
- [2023-04-27 14:05:55] Html 5 響應(yīng)式網(wǎng)站設(shè)計(jì)制作
- [2023-04-10 11:07:30] 網(wǎng)站建設(shè)制作流程知多少
- [2022-10-14 10:11:30] 做網(wǎng)站設(shè)計(jì)應(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è)計(jì)的好看,這個網(wǎng)站就成功了一大半!
- [2022-05-20 09:34:19] 網(wǎng)站后臺管理系統(tǒng)是什么?有什么作用?
- [2022-05-17 11:29:32] 作為消費(fèi)者,應(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è)計(jì)都有哪些新的趨勢?
延伸閱讀
- [2006-01-07 23:00:00] 網(wǎng)頁制作需要注意的問題集錦
- [2006-11-08 09:57:00] 學(xué)網(wǎng)頁設(shè)計(jì)與網(wǎng)頁制作,你該做些什么?
- [2006-08-21 12:08:00] 網(wǎng)頁制作常見問題:網(wǎng)頁、圖片路徑問題
- [2006-01-08 20:56:00] 網(wǎng)頁制作需要注意的問題集錦
- [2006-04-27 11:59:00] 提高網(wǎng)頁下載速度的網(wǎng)頁制作方法二則
- [2005-12-28 13:59:00] 網(wǎng)頁制作之“事不過三”
- [2006-08-17 10:22:00] 50條網(wǎng)頁制作小技巧集錦
- [2006-08-24 18:25:00] 網(wǎng)頁制作者和網(wǎng)頁設(shè)計(jì)師的距離
解決方案
輪胎行業(yè)網(wǎng)站設(shè)計(jì)解決方案 機(jī)械行業(yè)網(wǎng)站設(shè)計(jì)解決方案 房地產(chǎn)行業(yè)網(wǎng)站設(shè)計(jì)解決方案 科技企業(yè)網(wǎng)站設(shè)計(jì)解決方案 電子家電網(wǎng)站設(shè)計(jì)解決方案 食品行業(yè)網(wǎng)站設(shè)計(jì)解決方案 集團(tuán)公司網(wǎng)站設(shè)計(jì)解決方案 企事業(yè)單位網(wǎng)站設(shè)計(jì)解決方案 外貿(mào)行業(yè)網(wǎng)站設(shè)計(jì)解決方案 健身運(yùn)動網(wǎng)站設(shè)計(jì)解決方案 美容與化妝品網(wǎng)站設(shè)計(jì)解決方案 建筑設(shè)計(jì)行業(yè)網(wǎng)站設(shè)計(jì)解決方案 物流行業(yè)網(wǎng)站設(shè)計(jì)解決方案
TAGS關(guān)鍵字
青島網(wǎng)頁制作 視覺靈感 官網(wǎng)建設(shè) 網(wǎng)站策劃 頁面設(shè)計(jì) 青島網(wǎng)絡(luò)公司 力圖數(shù)字科技 青島網(wǎng)站建設(shè)公司哪家好 新的元素 高端輪胎網(wǎng)站設(shè)計(jì) 網(wǎng)站規(guī)劃 網(wǎng)站設(shè)計(jì)資訊 交互設(shè)計(jì) 青島不錯的英文網(wǎng)站建設(shè)公司 微信小程序 青島網(wǎng)站建設(shè) 集團(tuán)公司網(wǎng)站建設(shè) 青島海洋投資集團(tuán) 空白和簡潔的設(shè)計(jì) 蘋果系統(tǒng) 青島高端網(wǎng)站建設(shè)公司哪家好 青島網(wǎng)站建設(shè)基礎(chǔ)知識 響應(yīng)式設(shè)計(jì) 網(wǎng)站的速度 海信網(wǎng)絡(luò)科技 SEO優(yōu)化 程序開發(fā) 網(wǎng)站開發(fā) 營銷策略 扁平化設(shè)計(jì)