【疑點】 標籤爲何不能包含塊級標籤?還有哪些特殊的HTML標籤?

 

最近,在碼代碼的時候,就是下面的這段代碼,我犯了一個很不起眼,但犯了就致命的BUG。css

<body>
    <p>
       <ol>
          <li>Hello</li>
       </ol>
    </p>
    <div>How are you?</div>
</body>
<script src="jquery-3.1.1.js"></script>
<script>
    var result= $("p").filter(function(index) {
        console.log($("ol", this).length== 0)
        return $("ol", this).length == 0;
    });
</script>

 

由於只要你犯了,估計檢查半天都找不出。我但是費了老勁,才發現是<p>和<ol>嵌套的問題。可是兩個不都是塊級元素,難道不能嵌套麼?並且最後的結果竟然是自動補全了兩個</p>標籤。java

它涉及到了塊級元素和內聯元素的嵌套問題。這是一個特別容易被咱們遺忘的知識點!!!如今就來讓我給大家補一下課也給我本身加深一下印象~jquery

一、塊級元素(block)、內聯元素(inline)和可變元素(inline-block)的定義和區別瀏覽器

二、各種具體包含明細架構

三、嵌套規則和某些特殊標籤 app

 


 

 

定義和區別ide

  • display:block
  1. block元素會獨佔一行,多個block元素會各自新起一行。默認狀況下,block元素寬度自動填滿其父元素寬度。
  2. block元素能夠設置width,height屬性。塊級元素即便設置了寬度,仍然是獨佔一行
  3. block元素能夠設置margin和padding屬性。

 

  • display:inline
  1. inline元素不會獨佔一行,多個相鄰的行內元素會排列在同一行裏,直到一行排列不下,纔會新換一行,其寬度隨元素的內容而變化
  2. inline元素設置width,height屬性無效
  3. inline元素的margin和padding屬性,水平方向的padding-left, padding-right, margin-left, margin-right都產生邊距效果;但豎直方向的padding-top, padding-bottom, margin-top, margin-bottom不會產生邊距效果。
  4. 能夠經過display:block來將它變成爲塊元素以後,就能夠用css其餘樣式應用了。

 

  • display:inline-block
  1. 簡單來講就是將對象呈現爲inline對象,可是對象的內容做爲block對象呈現。
  2. 元素展示inline元素的屬性,可是能夠設置本身的寬和高了。好比咱們能夠給一個link(a元素)inline-block屬性值,使其既具備block的寬度高度特性又具備inline的同行特性

 

  • 區別
  1. 塊級元素通常用來搭建網站架構、佈局、承載內容
  2. 內聯元素通常用來在網站內容中的某些細節或者部位,用以「強調、區分樣式、上標、下標、錨點」等等。佈局

  3. 它們能夠互相轉換。display:inline|block字體

 

  • 注意
  1. 通常咱們會用display:block,display:inline或者display:inline-block來調整元素的佈局級別,其實display的參數遠遠不止這三種,僅僅是比較經常使用而已。
  2. IE(低版本IE)原本是不支持inline-block的,因此在IE中對內聯元素使用display:inline-block,理論上IE是不識別的,但使用display:inline-block在IE下會觸發layout,從而使內聯元素擁有了display:inline-block屬性的表象。

 


 

 

各種具體包含明細網站

  • 塊元素(block element) HTML標籤分類明細
  1. address - 地址
  2. blockquote - 塊引用
  3. center - 舉中對齊塊
  4. dir - 目錄列表
  5. div - 經常使用塊級容易,也是css layout的主要標籤
  6. dl - 定義列表
  7. fieldset - form控制組
  8. form - 交互表單 (只能用來容納其它塊元素)
  9. h1-h6 - 標題
  10. hr - 水平分隔線
  11. isindex - input prompt
  12. menu - 菜單列表
  13. noframes - frames可選內容,(對於不支持frame的瀏覽器顯示此區塊內容
  14. noscript - 可選腳本內容(對於不支持script的瀏覽器顯示此內容)
  15. ol - 排序表單
  16. p - 段落
  17. pre - 格式化文本
  18. table - 表格
  19. ul - 非排序列表

 

  • 內聯元素(inline element) HTML標籤分類明細(黃色高光標明的是特殊的內聯元素,能夠設置高寬度,爲可變元素)
  1. a - 錨點
  2. abbr - 縮寫
  3. acronym - 首字
  4. b - 粗體(不推薦)
  5. bdo - bidi override
  6. big - 大字體
  7. br - 換行
  8. cite - 引用
  9. code - 計算機代碼(在引用源碼的時候須要)
  10. dfn - 定義字段
  11. em - 強調
  12. font - 字體設定(不推薦)
  13. i - 斜體
  14. img - 圖片
  15. input - 輸入框
  16. kbd - 定義鍵盤文本
  17. label - 表格標籤
  18. q - 短引用
  19. s - 中劃線(不推薦)
  20. samp - 定義範例計算機代碼
  21. select - 項目選擇
  22. small - 小字體文本
  23. span - 經常使用內聯容器,定義文本內區塊
  24. strike - 中劃線
  25. strong - 粗體強調
  26. sub - 下標
  27. sup - 上標
  28. textarea - 多行文本輸入框
  29. tt - 電傳文本
  30. u - 下劃線
  31. var - 定義變量

 

  • 可變元素(inline-block element) HTML標籤分類明細
  1. applet - java applet  
  2. button - 按鈕  
  3. del - 刪除文本  
  4. iframe - inline frame  
  5. ins - 插入的文本  
  6. map - 圖片區塊(map)  
  7. object - object對象  
  8. script - 客戶端腳本

 


 

 

嵌套規則和某些特殊標籤 

   

一、塊狀元素可包含內聯元素或某些塊元素,但內聯元素不可包含塊元素,只能包含內聯元素。

  •     <div><h1></h1><p></p></div>     正確
  •     <a href="#"><span></span></a>    正確
  •     <span><div></div></span>     錯誤

 

二、塊級元素不能放在<p>裏面

  •     <p><ol><li></li></ol></p>    錯誤
  •     <p><div></div></p>  錯誤

 

三、有幾個特殊塊級元素只能包含內聯元素或者可變元素,不能包含塊級元素。這幾個特殊標籤是 h1~h六、p、dt

 

四、特殊的 li 內可包含 div 標籤

  •     <li><div></div></li>

 

五、塊級元素與塊級元素並列、內聯元素與內聯元素並列

  •     <div><h2></h2><p></p></div>  正確
  •     <div><a href="#"></a><span></span></div>  正確
  •     <div><h2></h2><span></span></div>  錯誤
相關文章
相關標籤/搜索