惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
The Last Watchdog
The Last Watchdog
Security Latest
Security Latest
P
Privacy International News Feed
T
Threat Research - Cisco Blogs
H
Help Net Security
T
The Exploit Database - CXSecurity.com
Know Your Adversary
Know Your Adversary
博客园_首页
S
Securelist
S
Schneier on Security
G
GRAHAM CLULEY
Cisco Talos Blog
Cisco Talos Blog
V
Visual Studio Blog
博客园 - 叶小钗
C
Cybersecurity and Infrastructure Security Agency CISA
有赞技术团队
有赞技术团队
Recent Announcements
Recent Announcements
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Microsoft Azure Blog
Microsoft Azure Blog
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
Stack Overflow Blog
Stack Overflow Blog
量子位
L
Lohrmann on Cybersecurity
Hugging Face - Blog
Hugging Face - Blog
Engineering at Meta
Engineering at Meta
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
C
CXSECURITY Database RSS Feed - CXSecurity.com
A
Arctic Wolf
P
Privacy & Cybersecurity Law Blog
Simon Willison's Weblog
Simon Willison's Weblog
S
SegmentFault 最新的问题
The Hacker News
The Hacker News
罗磊的独立博客
博客园 - 司徒正美
D
Darknet – Hacking Tools, Hacker News & Cyber Security
博客园 - 【当耐特】
Microsoft Security Blog
Microsoft Security Blog
K
Kaspersky official blog
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
L
LINUX DO - 热门话题
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
V
V2EX
V
Vulnerabilities – Threatpost
AWS News Blog
AWS News Blog
小众软件
小众软件
Project Zero
Project Zero

博客园 - 小虫1

AI 视频修复技术落地对比:四款去水印工具的技术路线解析 浏览器端本地视频处理实测:4 种去水印方案的技术原理与效果对比 前端开发者视角:一个视频去水印工具的技术猜想 记一次本地视频去水印踩坑经历——从本地部署到在线工具 前端实现视频去水印的几种技术方案对比 豆包视频去水印工具横向测评:麻雀 AI 工具箱与 3 款海外工具实测对比 视频去水印工具实战横评:少谈“黑科技”,多聊实际能用的 2026 在线视频去水印工具实测:4 种方案对比,本地处理首选麻雀AI工具箱 豆包生成的图片,怎么去水印? 2026年,GEO到底怎么做?-麻雀GEO Topaz Video AI的替代品 -麻雀AI视频修复工具,免费、安全、高效的Topaz替代选择 视频清晰度增强网站-麻雀AI视频修复工具 vue2 函数式调用一个弹框组件 跟框架无关的前端换皮肤 前端请求跨域,解决方案 ssh2-sftp-client 上传文件至服务器 vue项目下自己封装上传文件功能 beego 注册路由失效404,commentsRouter.go没有生成 前端代码实现整体缩放网页,做到缩放分辨率的效果 前端 docker jenkins mkdocs生成的网站为何很慢 重新搞nginx vue公共布局组件Layout引入 重新认识布局:你真的懂flex吗 重新认识布局:html和body元素 重新认识布局:3d空间中的css盒子 重新认识布局:百分比单位 微信小程序 等宽不等高瀑布流
重新认识布局:标准流,浮动,定位的关系
小虫1 · 2021-06-25 · via 博客园 - 小虫1

本文首发于知乎:https://www.zhihu.com/people/xiao-chong-10-60

flex布局(2009年w3c提出)出来之前,PC端网页的布局方式(手段)有3种:

1)标准流

2)浮动

3)定位

其中,3者之间又有密不可分的关系。

1.相对定位与标准流

定位里最接近标准流的是相对定位,相对定位不脱标,依然保留在标准流里的位置。

除此之外,相对定位的元素没有像绝对定位那样具有行内块元素的特性。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
	<style>
		span{
			position: relative;
			width: 200px;
			height: 200px;
			background-color: pink;
		}
	</style>
</head>
<body>
	<span>111</span>
</body>
</html>

2.浮动和绝对定位

浮动和绝对定位是近亲,浮动有3个特性:

1)脱标

2)一行显示且顶端(父元素的顶端)对齐

3)浮动的元素具有行内块元素的特性

实际上,绝对定位具有1)和3)的特性:即脱标和具有行内块元素的特性。更深层次,因为脱标了才具有了行内块元素特性。

<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
	<style>
		span {
			position: absolute;
			width: 200px;
			height: 200px;
			background-color: pink;
		}
	</style>
</head>

<body>
	<span>111</span>
</body>

</html>

从上面看出:相对定位更接近于标准流,绝对定位和浮动比较类似。

我们布局中的技巧:子绝父相和这个也有关系,父元素相对定位,在标准流里占住位置,子元素绝对定位,参考父元素占住的位置进行移动,并且是脱标的。

利用浮动和绝对定位脱标(脱离标准流)的特性,我们可以轻松做出2栏布局(左侧宽度确定,右边占据剩余空间):

浮动做法:

<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
	<style>
		.box {
			overflow: hidden;
		}

		.left {
			float: left;
			width: 200px;
			height: 600px;
			background-color: pink;
		}

		.right {
			margin-left: 200px;
			height: 600px;
			background-color: skyblue;
		}
	</style>
</head>

<body>
	<div class="box">
		<div class="left"></div>
		<div class="right"></div>
	</div>
</body>

</html>

 绝对定位做法:

<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
	<style>
		.box {
			position: relative;
		}

		.left {
			position: absolute;
			left: 0;
			top: 0;
			width: 200px;
			height: 800px;
			background-color: pink;
		}

		.right {
			margin-left: 200px;
			height: 800px;
			background-color: skyblue;
		}
	</style>
</head>

<body>
	<div class="box">
		<div class="left"></div>
		<div class="right"></div>
	</div>
</body>

</html>