成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

div再議以及對span的迷惑

2024-02-16    分類: 網(wǎng)站建設(shè)

修整一個月,我又回來了,好吧,咱繼續(xù)聊。

上篇文章中主要否定了使用div進行布局這種說法,提出div應(yīng)當用于組織代碼結(jié)構(gòu),現(xiàn)在我們再深入一點,div擁有語義嗎?這個問題前段時間在研究群里曾激烈爭論過,當時米隨隨發(fā)問:“什么是語義化WEB,div是什么?”小毅答曰:“DIV表示無意義容器?!蔽艺f:“否定?!比缓笈赃呌腥肃止荆骸?..又要打起來了?!蔽掖笮χM入戰(zhàn)斗狀態(tài),結(jié)果迅速被圍攻了。呵呵,總是和主流格格不入的我又一次站在主流的對立面。我還是不贊成將div視為無意義容器。容器這個概念是模糊的,是與設(shè)計掛鉤的,理解成容器以后又遠離結(jié)構(gòu)了。再說每一個不是自我關(guān)閉的標簽都可以視為容器,有什么區(qū)別?難道div可以包含一切(別斷章取義哈),于是就可以隨意使用了嗎?那又如何固定xhtml?所以還是要回到div的語義上來,div是有語義的,只不過它的語義是面向代碼結(jié)構(gòu)的,是面向程序的。

division(分割),對了,前段時間瀏覽w3schools時,看到它是這樣定義div的:The div tag defines a division/section in a document. 我想我對div的理解是沒錯的。在文檔中定義一個分割或者節(jié)點。我說div用于模塊化頁面內(nèi)容,實際上從代碼結(jié)構(gòu)角度是展現(xiàn)xml化的節(jié)點結(jié)構(gòu)。除了定義一個節(jié)點以外,div目前還用于定義一個分割,產(chǎn)生具有結(jié)構(gòu)的行。還是以登陸為例:

<div> <h3>用戶登陸</h3> <div> <label for="name">用戶名</label> <input id="name" /> </div> <div> <label for="pw">密碼</label> <input id="pw" /> </div> <p><button /></p> </div>

最外層的div是作為產(chǎn)生節(jié)點使用,而用戶名和密碼部分實際上是為了產(chǎn)生具有結(jié)構(gòu)的行,這里若使用br同樣能夠產(chǎn)生行,但是缺乏結(jié)構(gòu),所以div代替了br。猜到我要說什么了嗎?呵呵,又是xhtml 2.0,2.0中的section和line標簽,是的,在1.X中,div同時扮演了section和line的角色,因為分割產(chǎn)生節(jié)點,因為分割產(chǎn)生行。但是很明顯section和line具有比div更為明確的語義,那么我們可不可以認為div的語義和br一樣是模糊的,既然是模糊的,br已經(jīng)被斃了,我們現(xiàn)在大量使用的div會不會落到同樣的下場呢?不知道,至少目前的xhtml 2.0中,div仍然存在??纯瓷厦娴慕Y(jié)構(gòu)代碼在xhtml 2.0中應(yīng)該如何展示(沒考慮XForm):

<section> <h>用戶登陸</h> <line> <label for="name">用戶名</label> <input id="name" /> </line> <line> <label for="pw">密碼</label> <input id="pw" /> </line> <div><button /></div> </section>

所以有些人單純的認為好像是div在不斷嵌套,其實不是的,是沒有辦法而產(chǎn)生出來的假象。這里再請大家注意一個情況,需要和css結(jié)合起來看待,按鈕那個部分,在xhtml1.X中我使用了p,嚴格說從結(jié)構(gòu)上是錯誤的,很明顯按鈕不是一個段落,我僅僅是希望它換行呈現(xiàn),但是如果使用div,那么就必須給予這個div一個class="button"以區(qū)分開來,并且在設(shè)定css的時候必須先清除公有的樣式屬性,這樣會帶來不少麻煩。另外作為節(jié)點的div和作為行的div同樣會出現(xiàn)這種問題。示例:如果我定義節(jié)點div{width: 300px; padding: 10px;},那么我就必須在定義行div時要么覆蓋要么清除以避免沖突,div div{width: 200px /*覆蓋*/; margin: 10px; padding: 0 /*清除*/; color: #333;},然后在定義div div.button{margin: 0 /*清除*/; color: #F60 /*覆蓋*/; background: #999;}的時候再做對行div的樣式?jīng)_突避免,為了避免這種情況,采用對節(jié)點div增加class="loginarea"和p,這樣就可以避開兩次樣式清除和覆蓋操作。這樣的情況在結(jié)構(gòu)復雜的頁面中更為明顯,不要告訴我加class就行了,class越多,文檔通用性越差,xhtml越難固定。這就是在xhtml1.X 中因為div的語義模糊帶來的麻煩,回頭在xhtml 2.0的結(jié)構(gòu)中就很好辦了,section{},section line{},section div{},無需class也互不干擾,誒誒誒,這里的div貌似很適合它分隔的語義哈,不是行也不是節(jié)點,僅僅就是一個分隔,呵呵。

在我認為標簽中最難理解的2個之一的div現(xiàn)在應(yīng)該算是很清楚了。剩下的一個就是span,至今我仍未能理解到span如何產(chǎn)生結(jié)構(gòu),只好說說自己的迷惑了。

先還是說說div和span的區(qū)別,從大的方面來說,div被歸類到Structural Module(結(jié)構(gòu)模塊),而span被歸類到Text Module(文本模塊)。小的方面,div是block-elements(塊級元素),span是inline-elements(行內(nèi)元素)。在所有Structural Module中,div是唯一一個語義模糊的,在所有Text Module中,span也是唯一一個語義模糊的,呵呵,兩個Tag唯一的共性:語義模糊。

回到span的語義:跨度、范圍。這個這個……比division(分割)更為抽象,難以理解。在一陣瘋狂google后還是沒找到我想要的那種解釋,接近的都沒有,也許根本就沒有,所有的結(jié)果都指向表現(xiàn),無論中英文都是指為字體添加樣式,可是可是W3中明文寫著The span element, in conjunction with the id, class and role attributes, offers a generic mechanism for adding structure to documents. 這里的for adding structure to documents做何解釋?百思不得其解,后來氣不過,甚至打開W3的源碼查看他是如何使用span的,雖說獲得了一些提示,但依舊不足以領(lǐng)悟到structure的真諦,我想應(yīng)該是我的XML功力還不夠。唉,既然語義上,結(jié)構(gòu)上行不通,那么只好換個角度,從實際應(yīng)用中試著去理解。span是行內(nèi)元素,主要應(yīng)用于文本,這點沒什么異議,關(guān)鍵在于如何運用?為什么我始終不認為span是個樣式容器,對,又是容器,google的時候發(fā)現(xiàn)清一色的容器解釋,div是大容器,span是小容器,我郁悶。如果span因為文本的樣式而存在,它憑什么存在?一段文本為什么要添加樣式?如果你想強調(diào)應(yīng)該使用em,如果想特別強調(diào)應(yīng)該使用strong,Text Module里還有很多語義明確的標簽可以使用。所以span應(yīng)該不是作為樣式容器而存在,就像div不是作為布局容器而存在一樣。但是我領(lǐng)悟不到span的真諦,哭啊!不過我可以拋磚引玉,在有一個地方,我一定會使用span的。那就是表單中。還是以登陸為例,如果登陸的數(shù)據(jù)需要展現(xiàn)出來,比如很多edit頁面和view頁面,結(jié)構(gòu)應(yīng)該完全相同,不同的是在edit頁面中是輸入框,而view頁面中則用span展現(xiàn)數(shù)據(jù)。類似如下:

<div> <h3>用戶登陸</h3> <div> <label for="name">用戶名</label> <span>MyName</span> </div> <div> <label for="pw">密碼</label> <span>MyPassword</span> </div> <p><button /></p> </div>

這樣的好處有兩點:1、和label區(qū)分開來,便于應(yīng)用樣式,如下定義:div div span{}。2、可以通過節(jié)點提取所有錄入的數(shù)據(jù)。這是我目前唯一非常明確的使用span的地方,這里除了span好像沒有更合適的了,也有點符合它的語義:范圍和結(jié)構(gòu)化。這是我拋出的一塊磚頭,誰能引出玉來,或者知道玉,求之。其他span的運用仍在摸索中,包括從W3源代碼中獲得的提示。

差不多要說完了,這時我對關(guān)于容器的說法又耿耿于懷了,于是再次以容器為關(guān)鍵詞瘋狂google,憑什么上上下下都說是容器,我要找出根源來,終于在最后,皇天不負有心人,在我執(zhí)迷不悟的,懷著容器是錯誤理解的信念下,挖出來了根源。W3在這里對div和span進行了這樣的解釋:generic language/style container。兩者都一樣。哦,原來如此,怪說不得所有的中文翻譯都是容器,我想很少人去看英文追根到底吧。確實style container應(yīng)當翻譯為樣式容器。這一點都沒錯,錯的是請注意,這是html中的div和span!?。《皇莤html中的div和span,隨即我再查到W3在對xhtml中的div和span的解釋,已經(jīng)不一樣了:對于div是Define the characteristics of a block,而對于span是Define characteristics of text。對!這才是我的理解,也是我想要的正確解釋?。∫驗檫@個是xhtml 2.0中的解釋,由于2.0中section的存在,所以在對div的解釋中,節(jié)點的含義被取消了,xhtml1.x的解釋我懶得去找了。現(xiàn)在回頭看我剛才試著寫下的xhtml 2.0登陸結(jié)構(gòu)中的div和最后一句話。嗯,div即便不做節(jié)點也不做行,可能還是有用的。

說到這里,問一句,html和xhtml大的不同在哪里?是語法嗎?是名稱嗎?是嚴格了,xml化了嗎?不不不,本質(zhì)區(qū)別是:html是面向表現(xiàn)的語言,而xhtml是面向結(jié)構(gòu)的語言!所以我們應(yīng)當從結(jié)構(gòu)的角度去審視和理解與運用xhtml中的每一個Tag。比如容器的理解,在面向表現(xiàn)的html中,是正確的,但是在面向結(jié)構(gòu)的xhtml中則錯了,應(yīng)該理解為節(jié)點。理解直接影響運用,以表現(xiàn)的理解顯然無法寫出結(jié)構(gòu)化的代碼。否則什么合什么離,哈哈哈,忍不住又敲出來了。

好了,span現(xiàn)在總結(jié)不出來,只好先對div做個總結(jié)收尾:在當前xhtml1.x環(huán)境下,我們需要產(chǎn)生節(jié)點(section)和行(line)的時候選用div。

本文來源于成都網(wǎng)站建設(shè)公司與成都網(wǎng)站設(shè)計制作公司-創(chuàng)新互聯(lián)成都公司!

網(wǎng)頁題目:div再議以及對span的迷惑
網(wǎng)頁鏈接:http://jinyejixie.com/news40/317540.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計、ChatGPT、營銷型網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)網(wǎng)站制作、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司
江门市| 小金县| 奉化市| 柘荣县| 习水县| 新密市| 新密市| 正蓝旗| 昔阳县| 龙里县| 内乡县| 葫芦岛市| 通许县| 大同县| 吉木萨尔县| 大同县| 祥云县| 二连浩特市| 凉城县| 安陆市| 邯郸县| 嘉荫县| 马山县| 沁源县| 故城县| 四子王旗| 洛阳市| 雷州市| 潮州市| 巴林左旗| 十堰市| 名山县| 水城县| 汕头市| 海南省| 舞钢市| 厦门市| 连云港市| 阿拉善左旗| 旌德县| 关岭|