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

大河弯弯:CSS 文档流与三大元素显示模式

文章目录

  • 参考
  • 环境
  • 文档流
      • 概念
      • 三大显示模式
  • 内联元素
      • 概念
      • 常见的内联元素
      • 宽高由内容决定
  • 块级元素
      • 概念
      • 常见的块级元素
      • 宽度受容器影响,高度受内容影响
  • 内联块级元素
      • 概念
      • 常见的内联块级元素
      • 折中方案
  • 设置元素的显示模式
      • display 属性
      • 内联元素与块级元素的切换
      • 为什么要通过 display 来修改元素的显示模式?

参考

项目描述
搜索引擎BingGoogle
AI 大模型文心一言通义千问讯飞星火认知大模型ChatGPT
MDNMDN Web Docs
W3School在线教程

环境

项目描述
Chrome118.0.5993.88(正式版本) (64 位)
操作系统Windows 10(专业版)

文档流

概念

文档流是指网页上元素的 默认布局顺序想象你有一本书,这本书中的内容是 从上到下从左到右 顺序阅读的。同样的,HTML文档的元素默认也是从上到下,块级元素会垂直排列,内联元素会水平排列。

在不使用 CSS 的情况下,浏览器会 按照文档流的规则来摆放元素。当我们使用CSS 中的 floatpositionflexboxgrid 等属性时,元素可能会 脱离标准的文档流,形成一个新的布局方式。但为了理解这些高级布局技巧,首先要掌握基本的文档流概念。

三大显示模式

在 CSS 中,显示模式 指的是 HTML 元素在文档流中 如何被渲染和布局的一种特性,不同的显示模式决定了元素如何占据空间以及与其他元素相互交互的方式。CSS 中存在 三种十分常见的显示模式,即块级元素,内联元素,内联块级元素。

内联元素

概念

想象你正在读 一本书,你的目光滑过每一个字母、每一个词,连续不断。内联元素就像这些字词,它们排成一行,直到遇到 边界(页面边缘)才会换行。内联元素之间没有自动的换行,它们的 宽高由内容决定,并不接受我们设置的宽高值。

常见的内联元素

内联元素可以嵌套在块级元素中,或者与其他内联元素一起使用,每个元素都有其特定的语义和样式,可以根据需要自由组合以创建所需的网页内容。

内联元素功能描述
<a>创建超链接,用于导航到其他页面或资源。
<span>常用于对内联元素进行分组(便于通过 CSS 设置样式)或用于放置文本。
<img>用于插入图像。
<br>起换行作用。
<sub>用于标记需要作为下标的文本,通常用于化学式和数学公式。
<sup>用于标记需要作为上标的文本,通常用于指数和脚注。

宽高由内容决定

在 CSS 中,内联元素的宽度和高度通常由其包含的内容决定,这是因为内联元素的主要特点是在文本中水平排列,不会独占一行,并且 只占据其包含的内容所需的空间。这种自动适应内容的行为使内联元素在 包围文本等内容 时非常灵活。元素会随着内容的变化而自动调整大小而 不需要手动指定固定的宽度和高度,这 在处理不同长度的文本或可变内容时非常有用

举个栗子

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>宽高由内容决定</title>
</head>
<body><!-- 由于使用内联元素包裹文本,故多个内联元素将显示在一行中,仅在当前行已满才发生换行。--><a href="https://baike.baidu.com/item/%E4%B9%9F%E6%98%AF%E5%BE%AE%E4%BA%91/3056682">《也是微云》</a><span>也是微云,</span><span>也是微云过后月光明。</span><span>只不见去年得游伴,</span><span>也没有当日的心情。</span><!-- 尝试通过行内元素设置元素的宽高,由于行内元素无法设置宽高,故 style 属性中的与宽高相关的 CSS 样式将不会生效--><span style="width: 100px;height: 100px;background-color: dodgerblue;">不愿勾起相思,</span><span>不敢出门看月。</span><span>偏偏月进窗来,</span><span>害我相思一夜。</span></body>
</html>

执行效果

在浏览器中访问上述 HTML 文档,将得到如下类似内容:

块级元素

概念

想象一个 书柜,每一个格子代表一个块级元素。每一个格子独立占据空间,从左到右,从上到下。块级元素通 常用于构建页面的主体结构,它们会 自动填满(当然你也可以显示设置此类元素的宽度)它们所在的 容器宽度(父元素宽度),而 高度则由内容或设定的样式所决定

常见的块级元素

块级元素功能
<div>常用于元素的分组(便于布局控制及样式设置)。
<p>用于文本段落。
<h1~6>用于创建标题,数字越小,级别越高。
<section>表示文档中的一个区域或部分,有语义化的作用。
<article>表示文档中的独立内容,通常是文章或新闻等。
<header>用于定义文档或区域的页眉,通常包含标题和导航。
<footer>用于定义文档或区域的页脚,通常包含版权信息等。
<nav>用于包含导航链接,通常位于页眉或页脚中。
<aside>用于定义侧边栏内容,通常与主要内容分开显示。

宽度受容器影响,高度受内容影响

块级元素通常会 自动扩展以填充其容器的可用宽度。如果你 不显式地设置块级元素的宽度,它将占据其容器的全部可用宽度。这意味着块级元素的宽度受到其父容器的宽度限制。如果你将块级元素放入一个较窄的容器,它的宽度将 收缩以适应容器,而如果放入一个更宽的容器,它的宽度将 扩展以填满容器
块级元素的高度 通常由其内部内容的高度决定。这意味着块级元素的高度将根据其包含的文本、其他元素、内边距和边框等内容的高度来 自动调整。如果没有显式设置高度,块级元素的高度将根据内容动态调整

举个栗子

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>宽度受容器影响,高度受内容影响</title>
</head>
<body><!-- 位于最外侧的容器 --><div id="container" style="width: 120px;"><!-- 包裹实际内容的 div 标签 --><div><div><a href="https://baike.baidu.com/item/%E4%B9%9F%E6%98%AF%E5%BE%AE%E4%BA%91/3056682">《也是微云》</a></div>也是微云,也是微云过后月光明。只不见去年得游伴,也没有当日的心情。不愿勾起相思,不敢出门看月。偏偏月进窗来,害我相思一夜。</div></div></body>
</html>

执行效果

内联块级元素

概念

内联块级元素 既有块级元素的特点,允许你设置宽和高;同时也 有内联元素的特性,它们并排显示,并在必要时换行。因此,内联块级元素为我们提供了一种灵活的布局方式,兼具块级和内联元素的优点

常见的内联块级元素

元素功能描述
<img>用于在网页中嵌入图片
<button>创建一个点击按钮

折中方案

内联块级元素是内联元素与块级元素之间的一种 折中方案,该元素既允许同内联元素一般 并排显示,在必要时换行,还允许为这些元素 设置样式以规定其宽高

举个栗子

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>这种方案--内联块级元素</title>
</head>
<body><!-- 并排显示 --><button>H</button><button>e</button><button>l</button><button>l</button><button>o</button><button> </button><button>W</button><button>o</button><button>r</button><button>l</button><button>d</button><!-- 必要时换行 --><div style="width: 120px;"><button>H</button><button>e</button><button>l</button><button>l</button><button>o</button><button> </button><button>W</button><button>o</button><button>r</button><button>l</button><button>d</button></div><!-- 可设置宽高 --><button style="width: 30px;height:50px;">H</button><button>e</button><button>l</button><button>l</button><button>o</button><button> </button><button style="width: 30px;height:50px;">W</button><button>o</button><button>r</button><button>l</button><button>d</button></body>
</html>

执行效果

设置元素的显示模式

display 属性

在 CSS 中,display 属性用于 控制 HTML 元素在页面中的显示方式,可以使元素以不同的方式进行显示。

display 的常用属性值

属性值描述示例元素
block元素将以块级元素的方式呈现,通常占据父容器的整个宽度,独占一行。<div>, <p>, <h1>
inline元素以内联元素的方式呈现,不会强制换行,仅占据其内容所需的宽度。<span>, <a>, <strong>
inline-block元素以内联元素的方式呈现,但允许设置宽度、高度、内外边距等。通常用于创建水平排列的块级元素,例如 导航菜单项
none元素将于页面中消失,不占据页面空间。常用于通过 JavaScript 来控制元素的显示与隐藏。

内联元素与块级元素的切换

通过为 HTML 元素设置 display 属性将能够控制 HTML 元素的显示模式,如 将内联元素以块级元素的显示方式进行渲染。对此,请参考如下示例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>宽高由内容决定</title><!-- 通过 style 标签将带有 block ID 属性的元素以块级元素的显示方式进行渲染--><style>#block {display: block;width: 200px;height: 50px;background-color: salmon;}</style></head>
<body><a id="block" href="https://baike.baidu.com/item/%E4%B9%9F%E6%98%AF%E5%BE%AE%E4%BA%91/3056682">《也是微云》</a><span>也是微云,</span><span>也是微云过后月光明。</span><span>只不见去年得游伴,</span><span>也没有当日的心情。</span><span style="width: 100px;height: 100px;background-color: dodgerblue;">不愿勾起相思,</span><span id="block">不敢出门看月。</span><span id="block">偏偏月进窗来,</span><span id="block">害我相思一夜。</span></body>
</html>

执行效果

通过为 span 标签设置 display: block; 样式,即使是内联元素也具有了块级元素的特性。

为什么要通过 display 来修改元素的显示模式?

在 CSS 中,虽然你可以通过使用具有特定显示模式的元素来达成目标,但 display 属性提供了更大的 灵活性可维护性

优点描述
简化样式控制使用 display 属性,可以轻松地在同一个元素上切换不同的显示模式,而 不必创建多个具有不同显示模式的元素
使元素符合语义要求HTML 应该关注文档的结构和语义,而不应过多地关注样式和布局。通过使用 display 属性,可以确保 HTML 保持语义上的清晰,因为元素的 显示方式可以在样式表中进行控制,而不是通过元素来实现样式

相关文章:

大河弯弯:CSS 文档流与三大元素显示模式

文章目录 参考环境文档流概念三大显示模式 内联元素概念常见的内联元素宽高由内容决定 块级元素概念常见的块级元素宽度受容器影响&#xff0c;高度受内容影响 内联块级元素概念常见的内联块级元素折中方案 设置元素的显示模式display 属性内联元素与块级元素的切换为什么要通过…...

第六章:函数(中)

函数的参数 1.位置参数 位置参数是指函数调用时,参数的位置与函数定义中参数的位置对应,从而确定参数的值。 def fight(x,y,z):return .join((z,y,x)) fight(八神庵,打败了...

Top 10 数据恢复工具,可从iPhone 和 iPad 恢复数据

您是否正在寻找最好的 iPad 恢复软件&#xff0c;但不知道哪个选项最好&#xff1f;没有什么可担心的。本文将为您提供有关根据文件类型、设备兼容性和数据丢失原因等因素选择合适的 iPad 恢复软件的提示。此外&#xff0c;前 10 名提到的恢复软件是安全可靠的。 第 1 部分、iP…...

【C++程序员必修第一课】C++基础课程-14:C++ 函数(上)

1 本课主要内容&#xff1a; 函数是什么&#xff1f;函数的声明、定义和调用&#xff1b;函数返回值&#xff0c;函数参数&#xff0c;参数默认值函数参数不同类型的调用方式&#xff1a;传值、指针、数组、常量引用、引用等 2 主要知识点&#xff1a; 函数是什么&#xff1f; …...

android studio打开flutter项目报红

一、android studio打开flutter项目报红&#xff0c;如下图&#xff1a; 二、解决方法&#xff1a; 2.1 在这个build.gradle添加以下代码&#xff0c;如图&#xff1a; 2.2 在build.gradle最顶部添加如下代码&#xff1a; def localProperties new Properties() def localPr…...

julia笔记:字符和字符串

1 字符 Char类型的值代表单个字符 ca #a: ASCII/Unicode U0061 (category Ll: Letter, lowercase)typeof(c) #Char 将 Char 转换为其对应的整数值&#xff0c;即 Unicode 代码 cInt(c) c #97typeof(c) #Int64 将一个整数值&#xff08;Unicaode&#xff09;转回 Char Cha…...

组合数(递推版)的初始化

初始考虑为将第一列数和斜对角线上的数进行初始化。 橙色方块由两个绿色方块相加而来&#xff0c;一个为1&#xff0c;一个为0&#xff0c;所以斜对角线都为1&#xff0c;可以通过计算得来&#xff0c;不需要初始化&#xff0c;需要与码蹄集盒子与球 第二类Stirling数&#xf…...

Apache JMeter 安装教程

下载&#xff1a; 注意事项&#xff1a;使用JMeter前需要配置JDK环境 下载地址 下载安装以后&#xff0c;打开安装的bin目录 D:\software\apache-jmeter-5.4.1\apache-jmeter-5.4.1\bin&#xff0c;找到jmeter.bat&#xff0c;双击打开 打开后的样子 语言设置&#xff1a; 1…...

【unity小技巧】实现无限滚动视图和类似CSGO的开箱抽奖功能及Content Size Fitter组件的使用介绍

文章目录 一篇一句前言素材一、无限滚动视图1. 绘制视图2. Content Size Fitter是布局控件&#xff08;1&#xff09;在文本框中使用&#xff08;2&#xff09;控制Scroll View(Scroll Rect组件)控件下Content的大小 3. 控制视图无限滚动4. 向右拉无限滚动5. 修复滚动视图一卡一…...

Mybatis的SqlRunner执行流程

Mybatis的SqlRunner执行流程 SqlRunner exec new SqlRunner(connection); Map<String, Object> row exec.selectOne("SELECT * FROM PRODUCT WHERE PRODUCTID ?", "FI-SW-01");connection.close();assertEquals("FI-SW-01", row.ge…...

Zookeeper、Kafka集群与Filebeat+Kafka+ELK架构、部署实例

Zookeeper、Kafka集群与FilebeatKafkaELK架构、部署实例 一、Zookeeper1.1、Zookeeper 定义1.2、Zookeeper 工作机制1.3、Zookeeper 特点1.4、Zookeeper 数据结构1.5、Zookeeper 应用场景1.5、Zookeeper 选举机制1.5.1、 第一次启动选举机制1.5.2、 非第一次启动选举机制 二、Z…...

leetcode做题笔记198. 打家劫舍

你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定一个代表每个房屋存放金额的…...

【编解码格式】DV

DV DV是指用于存储数位影片&#xff08;英语&#xff1a;Digital video&#xff09;的一种编解码器和录像带格式系列&#xff0c;由索尼和松下为首的摄像机制造商联盟于1995年推出。20世纪90年代末和21世纪初&#xff0c;DV与从模拟到数字的桌面式视频制作的过渡密切相关&…...

Flink之常用处理函数

常用处理函数 处理函数概述 基本处理函数ProcessFunction介绍使用示例 按键分区处理函数KeyedProcessFunction介绍定时器Timer和定时服务TimerService使用示例其他 窗口处理函数ProcessWindowFunction介绍ProcessAllWindowFunction介绍使用示例 流的合并处理函数CoProcessFunct…...

【C语言】善于利用指针(三)

&#x1f497;个人主页&#x1f497; ⭐个人专栏——C语言初步学习⭐ &#x1f4ab;点击关注&#x1f929;一起学习C语言&#x1f4af;&#x1f4ab; 目录 导读&#xff1a;1. 函数指针1.1 什么使函数指针1.2 用函数指针变量调用函数 2. 返回指针值的函数3. 函数指针数组3.1 实…...

ant design vue Message 用法以及内容为 html片段情况

ant design vue 的 Message 用法 全局展示操作反馈信息 何时使用 # 可提供成功、警告和错误等反馈信息。顶部居中显示并自动消失&#xff0c;是一种不打断用户操作的轻量级提示方式。 全局配置&#xff1a; // main.ts// 进行全局配置 message.config({top: 0.7rem,//高度…...

HotSpot算法细节实现——安全点

OopMap 垃圾回收时&#xff0c;如何找到垃圾&#xff1f; 在可达性分析算法中从GC Roots集合找引用链分析对象是否可达。 固定可作为GC Roots的节点主要在全局性的引用&#xff08;例如常量或类静态属性&#xff09;与执行上下文&#xff08;例如栈帧中的本地变量表&#xf…...

杂谈:DC对Verilog和SystemVerilog语言的支持

DC对Verilog和SystemVerilog语言的支持 设计语言用哪种&#xff1f;Design Compiler对二者的支持简单的fsm电路测试测试结果对比写在最后 设计语言用哪种&#xff1f; 直接抛出结论&#xff1a;先有电路&#xff0c;后为描述。设计端而言&#xff0c;没有语言的高低好坏&#…...

网络安全评估(网络安全评估)

讨论了基于互联网的网络安全评估和渗透测试的基本原理&#xff0c;网络安全服务人员&#xff0c;安全运营人员&#xff0c;通过评估来识别网络中潜在的风险&#xff0c;并对其进行分类分级。 黑客通常采取的攻击方式如下&#xff1a; 突破目标外围系统&#xff0c;比如主站拿…...

offsetof宏计算某变量相对于首地址的偏移量

宏&#xff1a;offsetof的使用 //offsetof (type,member) //type是结构体的类型名&#xff0c;member是结构体中的成员名。struct Student {char name[5]; // 姓名int age; // 年龄float score; // 成绩 };int main() {struct Student s;printf("%zd\n", off…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...