要是XHTML與CSS能面向?qū)ο?。。太?yáng)應(yīng)該從北邊升起了。但是,凡事都應(yīng)該帶著OO的思想來(lái)看問(wèn)題,也勉強(qiáng)可以湊數(shù)拉。其實(shí),早在零幾年就有人提出了OO-style,不過(guò)已找不到。
那要怎樣OO呢?現(xiàn)在大家都知道CSS是可以介樣寫(xiě)滴:
.G_G { /* xxxxxx */ }
我們可以把它大約看一個(gè)原型,或者說(shuō)成類(lèi),-__-b 好像本來(lái)就是類(lèi)的樣子,然后要在HTML里“實(shí)例化”一個(gè)對(duì)象,例如:
<div class="G_G">笨蛋嗷嗷</div>
該元素會(huì)使用上CSS相應(yīng)的定義,但僅僅對(duì)應(yīng)的class還是不夠的,因?yàn)槲覀冺?yè)面可能會(huì)多處應(yīng)用到這個(gè)class,為了處理好“私有”的關(guān)系,把剛才的代碼改成:
<div id="aoao" class="G_G">笨蛋嗷嗷</div>
這樣的話,這個(gè)ID為aoao的元素就會(huì)應(yīng)用.G_G這個(gè)類(lèi)的定義,而且可以用#aoao{}這樣的選擇符來(lái)進(jìn)去私有效果的定義,這樣也不會(huì)影響到公共用的.G_G這個(gè)類(lèi),同時(shí),#aoao定義的優(yōu)先權(quán)會(huì)比.G_G高,符合私有定義比公共定義優(yōu)先高的常理^^。
由于我使用了ID這個(gè)具有唯一性的東東,對(duì)這種私有定義后的東西復(fù)用就成了問(wèn)題(一個(gè)ID只能在一個(gè)頁(yè)面上出現(xiàn)一次,不知道誰(shuí)說(shuō)的,反正是真理)。如果我們要實(shí)現(xiàn)多相同私有化的東東怎辦呢?那我們就必須來(lái)實(shí)現(xiàn)“多態(tài)”。挖哈哈。再改一下代碼:
<div class="G_G o_O">笨蛋嗷嗷</div>
一個(gè)是“G_G”,另一個(gè)是“o_O”,但是我們?nèi)绻褂蒙?o_O{}也是可以定義到元素,假如CSS是這樣的話:
.G_G {width:100%} .o_O {color:#123456}
元素將都被定義到,而且由于定義不層疊,都會(huì)給應(yīng)用。再假如代碼是這樣的話,不知道會(huì)不會(huì)更好理解。
<div class="layout color">不是笨蛋嗷嗷鳥(niǎo)</div>
.layout{width:100%} .color{color:#123456}
接著,要來(lái)實(shí)現(xiàn)“封裝”。子級(jí)選擇符大家應(yīng)該常常用吧,換代碼:
<div class="G_G"><span class="bendan">笨蛋</span>嗷嗷</div>
雖然.bendan{}跟.G_G .bendan{}都可以定義,但是后者只能應(yīng)用在class為“G_G”的元素,我們可以簡(jiǎn)單把.bendan{}理解成全局定義,把.G_G .bendan{}理解成局部定義,這樣的話就有利于我們XHTML與CSS的模塊化。^^傳說(shuō)中的“封裝”出現(xiàn)了,再接著。
<div id="aoao" class="G_G o_O"><span class="bendan">笨蛋</span>嗷嗷</div>
這樣的代碼就可以產(chǎn)生無(wú)數(shù)的變化了,還不明白的從頭看起。^^
其實(shí),這些跟真正的面向?qū)ο筮€有很大一段距離,我只是在學(xué)標(biāo)題黨,不過(guò)可以用它來(lái)理解ID與class的應(yīng)用。