伦理片hd-伦理片 在线播放-伦理片 在线-伦理免费在线观看-综合图片区-综合婷婷

訂閱本欄目 RSS您所在的位置: 深山工作室 > DIV+CSS > 正文

網頁制作,改變你的思維方

網絡 2008/4/22 22:37:05 深山行者 字體: 瀏覽 6454

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

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

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

下面將結合我的切身體會談一談順應標準的思維方式,其中有不少是我曾經走過的彎路,希望對剛剛接觸標準的XDJM們有些幫助:

1、“節省代碼”是營銷手段,不是宗旨

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

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

2、ID是狙擊槍,class是雙刃劍

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

ID是狙擊槍,class是雙刃劍,合則兩利,分則兩敗。

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

主菜單究竟是用<div id="mainnav"><ul>還是<ul id="mainnav">?這是一個博弈的問題。至今這個問題也沒有人能夠給出明確的答案,就連我也是如此。誠然,<div id="mainnav">在只包含了一個<ul>元素的時候,這個div就顯得有些冗余,但有時候為了配合美工絢麗的設計,多一層標簽就意味著多一層變化(有些人在a標簽里套span也是如此)。而div不帶任何原始屬性的先天優勢也是其它標簽所無法比擬的。這個命題我只是想說明一件事,就是我們應該意識到,<div id="mainnav"><ul>之外,還有<ul id="mainnav">這種寫法,同樣具有良好的結構和語義,并且省去了一層嵌套。在我們不需要為華麗的美工勞心勞神的時候,是不是也可以讓結構更加簡約呢?

這個命題其實還可以引申為——“并不是所有內容都需要塊元素做容器”、“并不是所有鏈接都需要其它元素做容器”,例如很多頁面都有的“更多”。有些人寫做“<div class="more"><a>”,也有人寫做<p><a>或者<strong><a>。在這些“容器”只包含了一個<a>標簽的時候,它們是否還有存在的必要?直接寫成<a class="more">會破壞結構嗎?會缺乏語義嗎?會影響布局嗎?換一種思路,你也許就會有不一樣的收獲。

4、工作上也做到“結構與表現分離”

關于這一點,網絡上很多高手都是這樣建議的,也就是先打開編輯器,把結構完整地寫出來,再去CSS里寫表現,而盡量不去動已經寫好的結構。

然而以看書為主要學習方式的人卻很難體會,因為關于標準的書籍多半是手把手來教的,也就是必然是結構表現結合,循序漸進。雖然有些書籍有這方面的建議,但短短的幾句話遠不如讀書過程中的潛移默化。在制作人員能夠對結構良好把握的時候,同時寫結構與表現也不會對結果有太大的影響。但以我的經驗,結構表現分離的工作方式,要比同時寫結構與表現效率高很多,同時也不容易遺漏頁面上的元素。

當然,所謂的“結構與表現分離”并不是完全不考慮表現,想要兼顧到表現,就要保證——在不破壞結構的前提下,CSS選擇器能夠選擇到盡量多的內容。在哪些地方加class,或者用哪些標簽來區分,是一個見仁見智的地方,相信每個人都有自己的體會。而結合不同的設計稿,有時候也需要做出相應的變化,然而這些變化都應該有一個同樣的前提——不破壞代碼的結構和可讀性。

再就是,一定要意識到,任何可視化的工具都是魔鬼。它們可視化界面下所呈現的效果,往往與真實瀏覽器相差千里,而我們真正要兼容的是瀏覽器,不是編輯器的可視化界面。

5、CSS不是萬能的,沒有CSS也不是萬萬不能的

相比于CSS1.0時代,今天CSS可以完成更多的事情,然而需求永遠是領先于技術的,CSS無法完成網頁所有的表現層工作,有時候我們必須結合JS或者其他語言來實現一些效果。而另一些時候,用JS的方法比只靠CSS簡單得多,并且代碼結構更加良好——最典型的例子就是下拉菜單。這些時候,我們要說服自己,或者說服老板與客戶,去采用更簡單更合理的方式。因為DOM同樣是網頁標準的重要組成,并不是使用了JS我們的網頁就降低了效率或是不再標準,恰恰相反,這是對JS最大的誤解。說到這里不得不提一點,就是今天的時代,比以往更要求每個職業了解更多的相關知識,做設計的人要懂一點交互和制作,做制作的也必須了解設計和程序,尤其是JS這樣的前端技術,只有這樣,你和同事才能夠更好地合作,個人的發展前景也會更加光明。

沒有CSS,指的是當我們的網站因為各種未知的原因導致CSS文件載入失敗,不要因此而慌亂,這是考驗我們代碼質量的最佳時機。在沒有CSS的時候,如果網頁仍舊保持良好的可讀性,這成果要遠比通過W3C驗證更值得我們自豪。

轉載自68設計

相關閱讀
旅行社管理系統商業版3.0發布
判斷輸入字符串中是否含有危險字符
一個效果非常不錯圖片載入loading等待效果
默認系統
中國簽證行業領導者--91出國簽證網
深山留言板 v7.0.1 bulid2014.11.15錯誤更新版
一個可以用來思考的故事,非常不錯
安康藍天旅行社官網
共有0條關于《網頁制作,改變你的思維方》的評論
發表評論
正在加載評論......
返回頂部發表評論
呢 稱:
表 情:
內 容:
評論內容:不能超過 1000 字,需審核,請自覺遵守互聯網相關政策法規。
驗證碼: 驗證碼 
網友評論聲明,請自覺遵守互聯網相關政策法規。

您發布的評論即表示同意遵守以下條款:
一、不得利用本站危害國家安全、泄露國家秘密,不得侵犯國家、社會、集體和公民的合法權益;
二、不得發布國家法律、法規明令禁止的內容;互相尊重,對自己在本站的言論和行為負責;
三、本站對您所發布內容擁有處置權。

更多信息>>欄目類別選擇
百度小程序開發
微信小程序開發
微信公眾號開發
uni-app
asp函數庫
ASP
DIV+CSS
HTML
python
更多>>同類信息
jquery設置或獲取修改classname
利用css3.0寫出一個音樂播放的唱片碟盤的效果
利用css中的scale()實現放大縮小效果
利用background-color:#000000a8在背景顏色16進制代碼之后加字母加上數字讓背景色透明
css背景使用base64編碼或者將base64編碼放在img圖片標簽中
利用css3中的-webkit-font-smoothing把網頁文字的毛邊去掉
更多>>最新添加文章
dw里面查找替換使用正則刪除sqlserver里面的CONSTRAINT
Android移動端自動化測試:使用UIAutomatorViewer與Selenium定位元素
抖音直播音掛載小雪花 懂車帝小程序
javascript獲取瀏覽器指紋可以用來做投票
火狐Mozilla Firefox出現:無法載入您的Firefox配置文件 它可能已經丟失 或是無法訪問 問題解決集合處理辦法
在Android、iOS、Windows、MacOS中微信小程序的文件存放路徑
python通過代碼修改pip下載源讓下載庫飛起
python里面requests.post返回的res.text還有其它的嗎
更多>>隨機抽取信息
JavaScript的40種網頁常用小技巧
ul,li設置新聞列表,超出范圍對象,自動隱藏
頁面javascript倒計時跳轉
網易評論的蓋樓樣式
深山行者留言系統V1.0 (簡稱深山留言V1.0)
19寸寬屏旅行社網站模板7
主站蜘蛛池模板: h漫在线观看 | 亚洲b| 欧美视频区| 国产资源免费 | 久久精品国产一区二区三区 | 日韩a在线| 精品麻豆视频 | 痴女中文字幕在线视频 | 久久精品国产99国产精偷 | 青青网在线视频 | 日韩欧美综合视频 | 男人的天堂va| 国产免费一区二区三区免费视频 | 92手机看片福利永久国产 | mm在线观看免费视频 | 男人v天堂 | 日本一区免费观看 | 99久久精品免费看国产免费 | 伊人久久五月天 | 午夜视频在线播放 | 国产乱老熟视频胖女人 | 97成人资源 | 玖玖玖免费观看视频 | 丁香伊人网 | 久久视热这只是精品222 | 日韩 在线视频精品 | 狠狠色综合色综合网站久久 | 欧美日韩视频在线成人 | 国产手机精品一区二区 | 国产第一福利精品导航 | 久久久国产成人精品 | 一级特黄a视频 | 国产日韩一区二区三区在线观看 | 欧美视频 亚洲视频 | 青青在线精品 | 欧美高清在线播放 | 国产日本免费 | 日本亚洲中午字幕乱码 | 欧美影院在线观看完整版 mp4 | 麻豆成人在线视频 | 欧美影欧美影院免费观看视频 |