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 是不行的。剩下的情况,一般不会有什么问题。

相关文章
|
12月前
|
JavaScript 前端开发 开发者
Vue 动态添加 HTML 元素组件封装使用方法及长尾关键词优化指南
本文详细介绍了Vue中动态添加HTML元素的使用方法与组件封装技巧。内容涵盖条件渲染(v-if/v-show)、列表渲染(v-for)、动态组件(:is)、手动操作DOM及动态创建组件实例等核心方法。同时,通过动态表单、弹窗组件和动态加载组件的封装示例,展示如何提升代码复用性和可维护性。最后,总结性能优化策略与注意事项,如批量更新DOM、懒加载大型组件及避免直接操作DOM等,帮助开发者在实际项目中灵活应用Vue动态元素管理功能。
335 15
|
8月前
|
XML 前端开发 C#
C#编程实践:解析HTML文档并执行元素匹配
通过上述步骤,可以在C#中有效地解析HTML文档并执行元素匹配。HtmlAgilityPack提供了一个强大而灵活的工具集,可以处理各种HTML解析任务。
350 19
|
11月前
|
移动开发 前端开发 JavaScript
HTML表单验证:确认input元素输入为具有特定整数和小数位数的数值。
将上述JavaScript代码与HTML一同使用,便可以确保用户输入的数值符合特定的格式要求。特别要注意,在实际的生产环境中,仅仅依靠前端验证是不够的。为了安全起见,后端也应该实施相应的验证措施,以防止不匹配格式的数据通过其他手段提交到服务器。
572 74
|
移动开发 开发者 UED
HTML5 语义元素详解
HTML5引入了诸多语义元素
WK
|
存储 移动开发 前端开发
HTML5新增了哪些其他元素和属性
这段文字介绍了HTML5中新增的多种元素和属性,包括页面布局元素如header、nav等,表单元素如email、tel输入框等,以及其他元素如canvas、svg等。此外,还介绍了全局及表单属性,例如contenteditable、placeholder等,这些新功能显著增强了HTML5在现代网页设计与开发中的实用性与灵活性。
WK
577 1
|
12月前
|
JavaScript 前端开发 开发者
Vue 动态添加 HTML 元素组件封装使用方法及长尾关键词优化指南
本文详细介绍了Vue中动态添加HTML元素的多种方法与组件封装技巧,涵盖条件渲染(v-if/v-show)、列表渲染(v-for)、动态组件(:is)、手动DOM操作及动态创建组件实例等内容。同时提供了性能优化建议,如批量更新DOM、使用v-show代替v-if以及懒加载大型组件等。通过合理封装组件,可提高代码复用性和维护性。文中还附有具体示例代码,帮助开发者更好地理解和应用相关技术。适用于前端开发人员学习和实践Vue动态元素处理与组件设计。
274 19
|
12月前
|
缓存 JavaScript 前端开发
Vue 项目中动态添加 HTML 元素的方法与实践
本文探讨了 Vue 中动态添加 HTML 元素的多种技术方案,包括条件渲染(v-if/v-show)、动态组件(component :is)、手动挂载($mount)及 Vuex 状态管理等方法。通过实例分析,如动态表单生成器与全局模态框服务,展示了这些方案在实际开发中的应用。同时提供了性能优化建议和注意事项,帮助开发者根据需求选择最佳方式,在保持 Vue 响应式特性的同时实现灵活交互。附带代码示例,便于理解和实践。
436 2
|
JavaScript 前端开发 容器
用HTML DOM实现有条件地渲染网页元素(上)
用HTML DOM实现有条件地渲染网页元素(上)
|
存储 JavaScript 前端开发
用HTML DOM实现有条件地渲染网页元素(下)
用HTML DOM实现有条件地渲染网页元素(下)