当前位置: 首页 > article >正文

CSS 嵌套元素的隐藏规则

简单介绍一下,在 HTML 和 CSS 中,元素大体分为 块级元素、内联元素(行内元素)、块级内联元素(行内块元素)。它们有着不同的嵌套规则和特殊之处。

1. 行内元素

行内元素特点:不独占一行、不可设置宽高、内容决定元素所占位置、不会打断上下文流畅。

包括<span>、<a>、<img>、<strong>、<em>等。

嵌套规则:只能嵌套行级元素,即行级元素内部只能包含其他行级元素,不能包含块级元素。

举个 🌰

正常的渲染:

非正常的渲染:

按道理来说,浏览器应该将 div 元素从 span 元素中移除,但实际没有。

虽然将 div 放在 span 中违反了 HTML 的规范,,但现代浏览器的错误处理机制,不会强制移除或改变这种结构,而是尽力按照嵌套结构正常渲染页面。这是因为:

1、浏览器宽容度高:为了尽可能显示开发者意图,浏览器会尽量渲染不符合标准的 HTML。

2、没有特定语义冲突,只是嵌套不符合规范。

2. 块级元素

块级元素特点:独占一行、可以设置宽高。

包括:<div>、<p>、<h1> 至 <h6>、<ul>、<ol>、<li>等。

嵌套规则:可以嵌套任何元素。块级元素内部既可以包含其他块级元素,也可以包含行级元素。

举个 🌰

3. 特殊规则

3.1 p 标签内不能嵌套 div 元素

当我们在 p 标签内嵌套一个 div 元素时,浏览器会自动将 div 元素移出 p 标签,并将 p 元素拆分为两个独立的段落。

举个 🌰

<p>
  这是段落的开始部分。
  <div>这是一个块级元素。</div>
  这是段落的剩余部分。
</p> 

渲染结果:

3.2 a 标签不能嵌套 a 标签

在 HTML5 规范中,<a> 标签不允许嵌套另一个 <a> 标签。

举个 🌰

<body>
  <a href="#">
    外层 a 标签的内容
    <a href="#"> 内层 a 标签的内容</a>
  </a>
</body>

浏览器解析:a 标签内部不允许嵌套另一个 a 标签。这是因为 a 标签定义的是一个超链接区域,嵌套的 a 标签会导致 HTML 语法和功能上的混乱。浏览器遇到这种情况,会将内部的 a 标签自动移到外部。

3.3 table 标签内的结构

table 标签只能包含特定的子元素,如 thead、tbody、tr、td 等。如果不合法的元素直接在 table 中,浏览器会自动将其移出 table,指定元素保留。

举个 🌰

<table>
  <tr>第一行</tr>
  <div>不合法的元素</div>
  <tr>第二行</tr>
</table>

渲染如下:

3.4 head 标签内的非元数据元素

head 标签通过包含页面的元数据(如 meta、title 等)。如果在 head 内插入非元数据元素(如 div、p 等),浏览器会将其移动 body 中,保证文档结构的正确性。

举个 🌰

<head>
  <title>页面标题</title>
  <div>不合法的内容</div>
</head>

渲染如下:


http://www.kler.cn/news/282852.html

相关文章:

  • Spring Boot DevTools:简化开发,实现热部署
  • 棱镜七彩参编的又一国家标准正式发布!
  • 探索音视频SDK在软件集成与私有化部署中的技术难题与解决策略
  • JAVA基础:文件字符流
  • C#高效异步文件监控与日志记录工具
  • Apache RocketMQ 中文社区全新升级丨阿里云云原生 7 月产品月报
  • 解决IDEA 控制台中文乱码及无法输入中文
  • MacOS通过Docker部署MySQL数据库,以及Docker Desktop进行管理
  • C++ 快速输入的优化与缓冲区管理(竞赛必用)
  • 使用requests库发起post请求处理json的两种方式
  • ROS 2 Jazzy和QT组合开发教程
  • 音频PCM的能量dB计算
  • 一个符合软件开发工程师认知的思考框架简单了解下
  • 1899. 最满意的方案
  • 盛元广通高等级生物安全实验室管理系统2.0
  • 【私有云场景案例分享②】批量装包与冒烟测试的自动化实现
  • Linux——进程管理
  • 嵌入式Linux学习笔记-Linux基础操作
  • Elasticsearch 8.13.4 LocalDateTime类型转换问题
  • 使用seamless-scroll-v3 实现无缝滚动,自动轮播平滑的滚动效果
  • Linux系统——服务器长时间训练不间断指令(nohup的简单用法)
  • PsConvertToGuiThread函数调用前传
  • 力扣第二阶段Days34
  • AI在医学领域:GluFormer一种可泛化的连续血糖监测数据分析基础模型
  • 自动化任务工具 | zTasker v1.97.1 绿色版
  • [Hive]四、Hive On Tez
  • 私域流量升级下的新机遇——“开源 AI 智能名片S2B2C 商城小程序”与新兴技术的融合
  • ARM/Linux嵌入式面经(二七):韶音
  • Java LeetCode 练习
  • pmp证书为何会被骂?他真的就是个垃圾证书?