怎么說呢?雖然我很想說對div類似的這種熟悉是錯誤的,div不是一個布局元素,沒有一個tag是用來布局的,但是我是對的嗎?我也不知道。幾乎所有人對div的宣傳都是布局,不管是‘民間’的還是‘官方’的,但是假如我們找根源,中文中,div是一個結(jié)構(gòu)化標(biāo)簽,是一個塊級元素。好吧,我們首先看看div擁有的語義,division(分隔),按語義它的作用是將兩個部分分隔開來。然后我們再回到w3去看看怎么定義div和span的:The DIV and SPAN elements, in conjunction with the id and class attributes, offer a generic mechanism for adding structure to documents. These elements define content to be inline (SPAN) or block-level (DIV) but impose no other presentational idioms on the content.
注重到我上面加粗的一句話了嗎?W3可沒說是 for layout,而是for structure,是結(jié)構(gòu)!因?yàn)榉指魪亩a(chǎn)生(定義)一個代碼結(jié)構(gòu)。我想,結(jié)構(gòu)和布局應(yīng)該是兩個概念吧。或許,因?yàn)閠able確實(shí)被用于布局了,所以這種根深蒂固的布局思路又自然而然的轉(zhuǎn)嫁到div上,我曾在很長一段時間里也是這么理解的。但是,現(xiàn)在我要說,這絕對是一個錯誤并且,這是極度嚴(yán)重的錯誤!!!這純粹個人觀點(diǎn)個人理解,自己取舍好了。
上篇文章我提出的關(guān)于結(jié)構(gòu)應(yīng)當(dāng)分為兩種:語義結(jié)構(gòu)和代碼結(jié)構(gòu)。理解了這兩個結(jié)構(gòu)之后,那么div的用處就比較明朗了,稍稍動動腦筋就能想到,用于組織代碼結(jié)構(gòu)。所以hx標(biāo)簽的問題我認(rèn)為經(jīng)典呢,不要說html了,即便對于xhtml,大部分的人關(guān)心的仍是如何表現(xiàn),小部分人關(guān)心語義結(jié)構(gòu),很少人去關(guān)心代碼結(jié)構(gòu),似乎xml有了,xhtml就不需要代碼結(jié)構(gòu)了。但是從hx系列的問題可以看出并延伸知道W3可一直在關(guān)心代碼結(jié)構(gòu),從1.0,1.1直到2.0,一直希望xhtml擁有xml般嚴(yán)謹(jǐn)?shù)拇a結(jié)構(gòu)。說到這里再多看xhtml 2.0的另一個變化,br不再被推薦,應(yīng)該很好理解了,br的語義是產(chǎn)生一個截斷(break),但實(shí)際作用是產(chǎn)生一個行,語義結(jié)構(gòu)上仍不完美,所以使用line進(jìn)行替代<line>this is one line</line>。同樣br也無代碼結(jié)構(gòu)可言,假如我想提取第三行的數(shù)據(jù)如何操作?所以很有可能類似br、hr這類標(biāo)簽都將被廢棄。我琢磨著,xhtml1.x是W3清理表現(xiàn),將人們往語義結(jié)構(gòu)[Semantic]的方向牽引,而xhtml 2.0則是展示和突出代碼結(jié)構(gòu)[structure]。呵呵,您說我琢磨得對嗎?瞎猜瞎猜。
回過頭來,那么怎么組織?首先對于一個設(shè)計稿,一定要不被設(shè)計所迷惑和左右,只提取看得見和看不見的數(shù)據(jù),然后就扔掉設(shè)計稿,先完成數(shù)據(jù)的語義結(jié)構(gòu),再添加代碼結(jié)構(gòu)(adding structure to documents.),完成xhtml后,最后一步才是重新拾起設(shè)計稿打開css,還原。當(dāng)然實(shí)際做的時候不可能不看設(shè)計稿,但是怎么看?只提數(shù)據(jù)!再說一點(diǎn),數(shù)據(jù)在文檔中的先后順序由什么定?當(dāng)然是由文檔而定,不是由設(shè)計稿所定。舉個例子,假如有兩個欄目,新聞頭條和普通新聞。誰在前誰在后,很顯然在文檔中應(yīng)該是頭條在前普通在后,這是由UE(用戶體驗(yàn))和欄目輕重的綜合考慮決定。但是按照div布局的話,是按照設(shè)計稿上前下后左前右后的順序來決定的,那么假如設(shè)計稿中將普通新聞欄目設(shè)計在左欄,頭條設(shè)計在中欄,文檔中普通新聞就跑到頭條新聞上面去了。所以我打開一個Web標(biāo)準(zhǔn)站點(diǎn)文檔瀏覽,假如文檔的先后順序是按照頁面布局上前下后,左前右后的順序而定的,那么我……特例一點(diǎn),假如一個單屏設(shè)計的網(wǎng)站,標(biāo)題和導(dǎo)航設(shè)計在頁面下方,那你的文檔豈不是最下面才是標(biāo)題和導(dǎo)航,這是什么UE?這不是扯蛋嘛。div,div布局的惡果――文檔結(jié)構(gòu)仍然在為表現(xiàn)所左右!貌合神離!!