花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 22|回复: 6

CSS内外边距属性使用百分

[复制链接]
  • TA的每日心情
    奋斗
    2026-3-14 12:47
  • 签到天数: 1758 天

    [LV.Master]伴坛终老

    3143

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

    发表于 2026-3-14 12:48 | 显示全部楼层 |阅读模式

    请马上登录,朋友们都在花潮里等着你哦:)

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x

    根据最新的 CSS 规范,百分比外边距(margin)和内边距(padding)的计算取决于书写模式(writing-mode):

    🔷 在水平书写模式(如默认的 horizontal-tb)下,所有方向的百分比边距都相对于包含块的宽度。

    🔷 在垂直书写模式(如 vertical-rl)下,所有方向的百分比边距都相对于包含块的高度。

    参考如下例子可能可以帮助理解 margin-*、padding-* 值取百分比时其值与容器元素宽高的关系:

    <style>
    	.pa {
    		margin: 1.5rem auto;
    		position: relative;
    		width: 400px;
    		height: 200px;
    		background: #eee;
    		border: 1px solid gray;
    	}
    	.son {
    		margin-top: 25%;
    		margin-left: 50%;
    		width: 100px;
    		height: 100px;
    		background: #ccc;
    	}
    </style>
    
    <div class="pa">
        <span style="position: absolute; top: 10px; right: 10px;">心之所向</span>
    	<div class="son"></div>
    </div>
    

    容器 pa 固定宽高 400*200。默认书写模式下,子元素 son 的外边距均以父元素宽度做参照:上外边距设为 25%,是取容器宽度 400 的四分之一即 100px,son 的顶端距容器 pa 的顶部 100px;左边距设为 50%,取的也是容器宽度 400 的一半即 200px,son 的左端距容器 pa 的左端 200px。改变书写模式为垂直方向,则子元素 son 的外边距均以父容器的高度做参照:25% 的上边距取 pa 的高度 200 的四分之一即 50px,50% 的左边距取 pa 高度 200 的一半即 100px。

    若容器内的子元素 padding-* 也取百分比值,百分比所参照的同样是依据书写模式而取父元素即其所在的容器元素的宽或高。padding 是内边距,指其里面的内容和其边框的距离。内边距百分比值也有应用场景,常见的用法是占位,例如像这样:

    <style>
    	.ma {
    		margin: 1.5rem auto;
    		width: 400px;
    		background: #eee;
    		border: 1px solid gray;
    	}
    	.ma::before {
    		display: block; /* 设为块级元素以占位 */
    		content: '::before'; /* 演示用,content值可为空 */
    		padding-bottom: 50%; /* padding-top 也可以 */
    	}
    </style>
    
    <div class="ma"></div>

    .ma 没有设置高度,我们是希望将来通过其内的内容决定其高度,同时又希望 ma 元素占据一定的纵向空间,所以通过其伪元素 ::before 的 padding: 50%; 占位,50% 用的是 ma 的宽度。这里,ma 元素的相关设置可能的场景是保障页面布局的固定性以避免页面加载时“闪烁”,将来里面内容的高度一般也是设置为 ma 现有的高度,该高度在其内内容(例如图片)加载前就已由其 ::before 伪元素撑开,为后续的内容做好空间准备。

    💫 margin-* 和 padding-* 的百分比赋值可能是个冷门知识,但有其特殊的应用场景,占位、定位是较常见的用途。其核心是:*-top/bottom 的百分比取值参照容器元素的宽度、*-left/right 的百分比取值参照容器元素的高度。

    评分

    参与人数 1威望 +50 金钱 +100 经验 +50 收起 理由
    红影 + 50 + 100 + 50 匠心独运,细节精致入微!

    查看全部评分

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1895

    主题

    32万

    回帖

    38万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2026-3-14 15:54 | 显示全部楼层
    这个百分比的参照依据还奇怪,竟然上下参照的是宽度,而左右参照的是高度,这个太奇怪了。
    那个例子也奇怪,“son 的顶端距容器 pa 的顶部 100px;”这个没问题,“son 的左端距容器 pa 的左端 100px”这个不对,我去量了一下,距离左边是200px啊,会不会都是参照的宽度?
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1895

    主题

    32万

    回帖

    38万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2026-3-14 15:56 | 显示全部楼层
    这个只是的确挺冷门的,一般都是直接使用数字,用百分比原来意义是不同的。
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2026-3-14 12:47
  • 签到天数: 1758 天

    [LV.Master]伴坛终老

    3143

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2026-3-14 17:43 | 显示全部楼层
    红影 发表于 2026-3-14 15:54
    这个百分比的参照依据还奇怪,竟然上下参照的是宽度,而左右参照的是高度,这个太奇怪了。
    那个例子也奇怪 ...

    我是昨天翻看N多年前买的书才写的这篇文章。经你提醒,我去查阅了新的标准,我引用的 W3C 那段话来自较早的规范或特定上下文,描述的是旧有行为,现行标准已经不是这样了。

    谢谢你的发现,本文也已经根据新标准进行了修正。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2026-3-14 12:55
  • 签到天数: 476 天

    [LV.9]以坛为家II

    352

    主题

    3599

    回帖

    2万

    积分

    版主

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生鹰傲苍穹飞龙在天王者至尊大将风范花潮版主

    发表于 2026-3-14 18:25 | 显示全部楼层
    马黑黑 发表于 2026-3-14 17:43
    我是昨天翻看N多年前买的书才写的这篇文章。经你提醒,我去查阅了新的标准,我引用的 W3C 那段话来自较早 ...

    哇,知识迭代好快,谢谢马老师经典讲授
    ★青春是一个人的精神生命,奋斗是一个人最大的体面,学习是一个人最美的姿态。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2026-3-14 12:47
  • 签到天数: 1758 天

    [LV.Master]伴坛终老

    3143

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2026-3-14 19:45 | 显示全部楼层
    杨帆 发表于 2026-3-14 18:25
    哇,知识迭代好快,谢谢马老师经典讲授

    这篇文章,一方面是一时冲动写了,另一方面也是为了探究 iframe 的自适应高度而作。我自己也不曾想到过去的权威现在已经产生如此彻底的变化。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2026-3-14 12:55
  • 签到天数: 476 天

    [LV.9]以坛为家II

    352

    主题

    3599

    回帖

    2万

    积分

    版主

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生鹰傲苍穹飞龙在天王者至尊大将风范花潮版主

    发表于 2026-3-14 20:45 | 显示全部楼层
    马黑黑 发表于 2026-3-14 19:45
    这篇文章,一方面是一时冲动写了,另一方面也是为了探究 iframe 的自适应高度而作。我自己也不曾想到过去 ...

    是啊,学习是终生的课题,谢谢老师的讲座与探究
    ★青春是一个人的精神生命,奋斗是一个人最大的体面,学习是一个人最美的姿态。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|服务支持:DZ动力|huachaowang.com Inc. ( 蜀ICP备17032287号-1 )

    GMT+8, 2026-3-14 21:28 , Processed in 0.070511 second(s), 25 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表