02-HTML元素分类以及嵌套规则

简介: 02-HTML元素分类以及嵌套规则

HTML元素的分类


块级元素


在上一章里,对HTML进行了初步的描述。我们的网页,就是由一个一个的标签拼接起来组成的。由于输出设备(电脑屏幕,手机屏幕等)在大多数情况下都是竖向滚动的,网页里的标签,默认也是竖向排列的。简单来说,HTML标签排列的时候,大多数标签会占据一行的空间,然后一行一行往下排列。这种标签占据了其父元素的整个水平空间,垂直空间等于其内容的宽度,就像在页面里占据一”块“区域。这样的标签,被称为块级元素。针对每一个块级元素,浏览器都会新起一行。


一般情况下,块级元素可以包含行内元素和其他块级元素。常见的块级元素有:div,p,main,section,h1,h2等等

640.png

内联元素(行内元素)


并非所有的标签都会占据一行。有的标签只会占据一行内的一部分水平空间。这样的标签,被称为内联元素。针对内联元素,浏览器不会新起一行。

一般情况下,行内元素只能包含数据和其他行内元素。

640.png

以下的元素,都是内联元素,其中标黑的,都是比较常用的:

a, b, i, button, input, label, select, textarea, strong, em, br, img,span, small, tt, abbr, acronym, cite, code, dfn, kbd, , samp, var, big, bdo, , map, object, q, script, , sub, sup

下面是一个块级元素和内联元素混合的例子:

640.png


注意:块级元素和内联元素,作为基础内容,在面试中出现的概率不小


HTML元素的第二种分类


除了块级元素和内联元素的分类,根据元素本身的特点,还可以将元素分成可替换元素不可替换元素


可替换元素就是浏览器根据元素的标签和属性,来决定元素的具体显示内容。最常见的,就是img。我们在html代码里看不到img实际的内容,但是浏览器却可以读取图片实际的内容,展示出来。


而不可替换元素,就是直接将元素内容展示出来。例如


<span>hello</span>


在HTML代码里,能看到 hello,并且hello会被直接展示在屏幕上。


HTML元素的嵌套规则


HTML元素之间是可以互相嵌套的,上面提到过,在一般情况下,块级元素可以包含行内元素和其他块级元素,行内元素只能包含数据和其他行内元素


注意:经过实测,常见的行内元素是可以包含块级元素的。


<div><p></p></div> - ✅
<span>hello world</span> - ✅
<a><span></span></a> - ✅
<a><div></div></a> - ✅
<p><div></div></p> - ❌
<button><div></div></button> - ✅ 这也是可以的


这里需要注意的是,a 标签是可以包含 div 标签的。

640.png

至于为什么 a 标签可以包含 div 标签(以及其他的一些内联元素可以包含块级元素),主要是由元素自身的 Categories 和 Content Model 决定的。具体讲解和HTML标准可以参考这里:


传送门


另外一个需要着重注意的是,p 标签内部是不能包含 div 标签的。之前在项目里遇到过这种写法,被坑过。


<html>
    <p><div>这是在p内部的div</div></p>
</html>

640.png


稍微总结一下,关于元素嵌套规则,我们只需要对特殊情况有所记忆就行了,比如 p 内包含 div 是不行的。剩下的情况,一般不会有什么问题。

相关文章
|
1月前
|
移动开发 开发者 UED
HTML5 语义元素详解
HTML5引入了诸多语义元素
WK
|
1月前
|
存储 移动开发 前端开发
HTML5新增了哪些其他元素和属性
这段文字介绍了HTML5中新增的多种元素和属性,包括页面布局元素如header、nav等,表单元素如email、tel输入框等,以及其他元素如canvas、svg等。此外,还介绍了全局及表单属性,例如contenteditable、placeholder等,这些新功能显著增强了HTML5在现代网页设计与开发中的实用性与灵活性。
WK
52 1
|
2月前
|
JavaScript 前端开发 容器
用HTML DOM实现有条件地渲染网页元素(上)
用HTML DOM实现有条件地渲染网页元素(上)
|
2月前
|
存储 JavaScript 前端开发
用HTML DOM实现有条件地渲染网页元素(下)
用HTML DOM实现有条件地渲染网页元素(下)
|
25天前
HTML 元素
HTML文档由HTML元素定义,元素包括开始标签、内容和结束标签。某些元素内容为空,可在开始标签中关闭。大多数元素可拥有属性,且元素间可相互嵌套,形成复杂结构。
|
2月前
|
移动开发 前端开发 HTML5
Twaver-HTML5基础学习(8)拓扑元素(Element)_网元(Element)、节点(Node)
本文介绍了Twaver HTML5中的拓扑元素(Element),包括网元(Element)、节点(Node)和连线(Link)的基本概念和使用方法。文章详细解释了Element的属性和方法,并通过示例代码展示了如何在React组件中创建节点、设置节点属性和样式。
44 1
Twaver-HTML5基础学习(8)拓扑元素(Element)_网元(Element)、节点(Node)
|
2月前
|
移动开发 前端开发 JavaScript
Twaver-HTML5基础学习(7)Layer图层元素
本文介绍了Twaver HTML5中的图层元素(Layer),包括图层的属性和使用方法。文章详细解释了如何创建图层、设置图层属性(如可见性、可编辑性、可移动性和可旋转性),并通过示例代码展示了如何在React组件中使用图层。
41 1
Twaver-HTML5基础学习(7)Layer图层元素
|
2月前
|
移动开发 JavaScript 前端开发
Twaver-HTML5基础学习(6)告警元素(Alarm)闪烁效果
本文介绍了在Twaver HTML5中如何为告警元素(Alarm)创建闪烁效果,以提醒用户注意。文章通过示例代码展示了如何通过定时器间隔性地改变告警标签的颜色,从而实现闪烁提示效果。
36 1
Twaver-HTML5基础学习(6)告警元素(Alarm)闪烁效果
|
2月前
|
移动开发 前端开发 HTML5
Twaver-HTML5基础学习(2)基本数据元素(Data)
本文介绍了Twaver HTML5中的基本数据元素,包括Data、Element、Alarm和Layer等,它们分别用来描述拓扑的网元、告警和图层。文章详细解释了Data类的基本属性和方法,并提供了如何在React组件中使用Twaver创建节点和连线的示例代码。
43 1
Twaver-HTML5基础学习(2)基本数据元素(Data)
|
1月前
|
移动开发 数据安全/隐私保护 UED
HTML5 表单元素详解
HTML5 引入了新的表单元素和属性,如 `&lt;form&gt;、&lt;input&gt;、&lt;textarea&gt;、&lt;select&gt;` 和 `&lt;button&gt;`,以及 `required、min、max` 等属性,增强了表单的创建与交互。其中,`&lt;input&gt;` 支持多种类型如 `email、url、date` 等,提供了更好的用户体验和数据验证。此外,HTML5 还新增了原生表单验证功能,简化了开发流程并提升了安全性。