web前端入門到實戰:HTML元素巢狀問題
HTML元素巢狀問題
元素巢狀
塊元素可以包含內聯元素或
某些
塊元素,但內聯元素卻不能包含塊元素,只能包含其他的內聯元素。
P元素巢狀問題
<p> <div></div> </p>
在P元素中巢狀div等塊級元素,在瀏覽器中解析如下:
可以看到在元素最後會多出一個空的
<p></p>
。
通過查詢,發現原來
p元素
內無法包裹
塊級元素
。
因為我們使用的DTD中規定了
塊級元素
是不能放在
<p>
裡面的,再加上一些瀏覽器縱容這樣的寫法:
<p>這是一個段落的開始 <p>這是另一個段落的開始 web前端開發學習Q-q-u-n: 731771211,分享學習的方法和需要注意的小細節,不停更新最新的教程和學習方法(詳細的前端專案實戰教學視訊,PDF)
當一個
<p>
標籤還沒結束時,遇到下一個塊元素就會把自己結束掉,其實瀏覽器是把它們處理成這樣:
<p>這是一個段落的開始</p> <p>這是另一個段落的開始</p>
這也就解釋了,為何瀏覽器中最後會多出1個空的
<p></p>
。
塊級元素巢狀問題
可以先把所有的塊元素再次劃分成幾個級別的,我們已經知道
<html>
是在最外層,
<html>
下一級裡面只會有
<head>、<body>、<frameset>、<noframes>
,而我們已經知道了可視的元素只會出現在
<body>
裡,所以我們把
<body>
劃在第一個級裡面。接著,把
不可以自由巢狀
的元素劃在第三個級,其他的就歸進第二個級。所謂的不可自由巢狀的元素就是裡面只能放內聯元素的,它們包括有:標題標記的
<h1>、<h2>、<h3>、<h4>、<h5>、<h6>、<caption>
;段落標記的
<p>
;分隔線
<hr>
和一個特別的元素
<dt>
(它只存在於列表元素
<dl>
的子一級)。
三級元素
就是指,只能巢狀內聯元素的塊級元素。
p
也恰好是其中之一。
為什麼第二級的元素可以自由巢狀
我們可以把它們看成是一些容器(或者說是盒子), 這些容器的大小可以自由變化,例如我們可以把
<ul>
嵌在
<div>
裡面,也可以把
<div>
嵌在
<li>
裡面。
在HTML裡有幾個元素是比較特別的:
<ul>、<ol>、<dl>、<table>
,它們的子一層必須是指定元素,
<ul>、<ol
>的子一級必須是
<li>
;
<dl>
的子一級必須是
<dt>
或者
<dd>
;
<table>
的子一層必須是
<caption>
或
<thead>、<tfoot>、<tbody>
等,而再子一層必須是
<tr>
(
<tr>
只存在於
<thead>、<tfoot>、<tbody>
中),之後才是可放內容的
<td>
或者
<th>
。
內聯元素
其實在內聯元素中,還是可以再區分一下的,有幾個元素(
<img>、<input>
等)比較特別,它們可以定義寬高。雖然在
IE
瀏覽器裡,所有的元素都可以定義寬高,但這是
IE
自己的標準,並非所有瀏覽器都支援,
W3C
稱它們為replaced元素,其實它們也就是我們常說的行內塊,雖然這些元素屬於inline,但是卻具有一定的block(可以設定寬高),我們也可以賦予任何元素css屬性display:inline-block。
本身具有inline-block的元素應該沒有!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901074/viewspace-2672919/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- web前端入門到實戰:html元素有多個類名時,樣式覆蓋問題Web前端HTML
- web前端入門到實戰:常用網頁元素命名規範Web前端網頁
- web前端入門到實戰:Js代理模式Web前端JS模式
- 前端開發入門到實戰:html塊級元素和行級元素的區別和認識前端HTML
- web前端入門到實戰:好用的Js圖表庫Web前端JS
- web前端入門到實戰:css3 實現大轉盤Web前端CSSS3
- Nginx入門到實戰(4)常見問題Nginx
- web前端入門到實戰:擼兩個天氣小程式Web前端
- web前端入門到實戰:簡單的圖片輪播Web前端
- web前端入門到實戰:H5-canvas實現粒子時鐘Web前端H5Canvas
- web前端入門到實戰:css騷操作之表單驗證Web前端CSS
- web前端入門到實戰:CSS 層疊上下文(Stacking Context)Web前端CSSContext
- 前端開發入門到實戰:HTML5進階FileReader的使用前端HTML
- 前端開發入門到實戰:html5語義化標籤前端HTML
- web前端入門到實戰:非同步載入CSS最簡單的實現方式Web前端非同步CSS
- web前端入門到實戰:JS中new操作符原始碼實現Web前端JS原始碼
- web前端入門到實戰:30行前端程式碼實現任意文字轉粒子Web前端
- web前端入門到實戰:原生js判斷某個元素是否有指定的class名的幾種方法Web前端JS
- 前端開發入門到實戰:css單行截斷和多行截斷問題前端CSS
- web前端入門到實戰:css滑鼠經過彈出子選單特效Web前端CSS特效
- web前端入門到實戰:js擷取字串相關的知識點Web前端JS字串
- 前端開發入門到實戰:HTML5新增和廢棄的標籤前端HTML
- Flutter For Web入門實戰FlutterWeb
- web前端入門到實戰:你真的瞭解CSS繼承嗎?看完必跪Web前端CSS繼承
- MyBatis從入門到精通(十二):使用collection標籤實現巢狀查詢MyBatis巢狀
- MyBatis從入門到精通(十):使用association標籤實現巢狀查詢MyBatis巢狀
- web3從入門到實戰-理論篇Web
- Linux入門到實戰Linux
- web前端入門到實戰:css3迴圈,模擬拼多多動畫效果Web前端CSSS3動畫
- web3從入門到實戰-NFT與代幣Web
- html的巢狀規則HTML巢狀
- 前端大資料視覺化從入門到實戰前端大資料視覺化
- 巢狀ScrollView問題解決思路巢狀View
- 為什麼HTML不能巢狀PHP,而PHP檔案卻可以巢狀HTMLHTML巢狀PHP
- Redis 從入門到實戰Redis
- Gin + GORM 入門到實戰GoORM
- Locust 從入門到實戰
- web前端從入門到精通的自學之路Web前端