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

推荐订阅源

GbyAI
GbyAI
N
News and Events Feed by Topic
D
DataBreaches.Net
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Engineering at Meta
Engineering at Meta
T
Tailwind CSS Blog
博客园_首页
Microsoft Azure Blog
Microsoft Azure Blog
Y
Y Combinator Blog
博客园 - Franky
Hugging Face - Blog
Hugging Face - Blog
月光博客
月光博客
A
About on SuperTechFans
I
InfoQ
S
Securelist
Last Week in AI
Last Week in AI
S
Schneier on Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
Hacker News: Ask HN
Hacker News: Ask HN
Schneier on Security
Schneier on Security
Know Your Adversary
Know Your Adversary
腾讯CDC
大猫的无限游戏
大猫的无限游戏
S
Security @ Cisco Blogs
博客园 - 三生石上(FineUI控件)
Simon Willison's Weblog
Simon Willison's Weblog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Tor Project blog
美团技术团队
aimingoo的专栏
aimingoo的专栏
G
Google Developers Blog
罗磊的独立博客
Vercel News
Vercel News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Cloudflare Blog
S
Secure Thoughts
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Latest news
Latest news
Recent Announcements
Recent Announcements
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
L
LINUX DO - 热门话题
Security Latest
Security Latest
TaoSecurity Blog
TaoSecurity Blog
Cyberwarzone
Cyberwarzone
有赞技术团队
有赞技术团队

博客园 - 小虫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

布局中,常见单位,除了px,还有百分比。那么写不同地方的百分比代表什么呢?

看一个选择题:

margin-top:50%,这里的百分比是参考谁的?

A、盒子自身的宽

B、盒子自身的高

C、父盒子的宽

D、父盒子的高

你的答案是?心里默念,答案解析在文末。

1.参考父级盒子大小的情况

width和height都会参考父级盒子的宽和高。准确的讲,会参考父盒子盒子模型里内容的宽和高。

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

<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
	<style>
		.father {
			width: 600px;
			height: 400px;
			padding: 100px;
			background-color: skyblue;
		}

		.son {
			/* 子盒子的大小是:300px*200px。跟100px的padding没关系 */
			width: 50%;
			height: 50%;
			background-color: pink;
		}
	</style>
</head>

<body>
	<div class="father">
		<div class="son"></div>
	</div>
</body>

</html>

  子绝父相,绝对定位里的子盒子,边偏移left,top等也会参考父盒子的大小,具体来讲,水平方向的left,right值会参考父盒子的宽,竖直方向的top,bottom会参考父盒子的高。

2.参考盒子自身大小的情况

圆角边框border-radius和2d转换位移的translate()函数里的百分比,参考盒子自身的大小。

圆角边框border-radius有8个值,横向上参考盒子自身的宽,纵向上参考盒子自身的高。

参见下面的例子:最终的结果是一个椭圆。如果只是参考宽,那么结果是横向和纵向上的圆角值相等,会是一个圆角矩形而不是椭圆。实际上,这个椭圆的长轴就是宽,纵轴是高。

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

<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
	<style>
		div {
			width: 600px;
			height: 200px;
			background-color: skyblue;
			border-radius: 50%;
		}
	</style>
</head>

<body>
	<div></div>
</body>

</html>

3.盒子模型里的margin,padding会参考父盒子的宽

margin,padding写百分比,会参考父盒子的宽,跟父盒子的高没关系。这点确实匪夷所思。

回答文章前面提出的问题:答案是margin-top:50%,这个百分比是参考父盒子的宽,答案是C。

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

<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
	<style>
		.father {
			width: 600px;
			height: 200px;
			background-color: skyblue;
		}

		.son {
			margin: 50%;
		}
	</style>
</head>

<body>
	<div class="father">
		<div class="son"></div>
	</div>
</body>

</html>