冷知识:反常识的margin-top与padding-top与%,你被坑过吗?

前言

之前本人写页面的时候,发现总是不能达到想要的效果,例如:

<html>
<div style="width:100%;height:100%">
  <div style="width:100%;height:10%">head</div>
  <div style="width:100%;height:60%;margin:10% 0 10% 0;">body</div>
  <div style="width:100%;height:10%">foot</div>
<div>
</html>

本来设想的是占满整个页面的3个div,分别高10%、60%、10%,再加上间隔有两个10%,正好100%。

【PS:<margin:10% 0 10% 0> 等价于 <margin-top:10%; margin-bottom:10%> 】

【为了简便,margin-top与padding-top就采用margin与padding的格式写了】

 

然而,页面莫名其妙地多出了滚动条,高度超出了100%;(横屏模式下)

本人的微信小程序也用了类似的语句,结果就是foot部分的元素比预期的要高一些,导致底部出现留白(竖屏模式下)

这是怎么回事?今天本人通过测试与百度,终于找到了原因。

 

结论

重要的话说三遍:

margin无论left还是right还是top还是bottom都是相对于父元素的width的!

是相对于父元素的width的!

父元素的width!

【PS:padding使用%也是相对于父元素的width】

就在现在,网上仍有许多文章认为margin-top使用%是相对于父元素的height,但并不是这样,只要自己试试就知道了;

由于"width:10%"相对于父元素的width,"height:10%"相对于父元素的height,

导致人们惯性地认为,

"margin-left:10%"相对于父元素的width,"margin-top:10%"相对于父元素的height(我开始也是这么想的),

然后就被坑了!

不得不说margin和padding相对于父元素的width这个设定真的很迷,但是我们改变不了语言,只能适应语言了。

 

解决方法

为了实现页面效果,可以将前言中的代码块修改为:

<html>
<div style="width:100%;height:100%">
  <div style="width:100%;height:10%">head</div>
  <div style="width:100%;height:10%"></div>
  <div style="width:100%;height:60%;">body</div>
  <div style="width:100%;height:10%"></div>
  <div style="width:100%;height:10%">foot</div>
<div>
</html>

由于margin不太好用,因此可以使用空白div代替间隔,这样就实现了3个div占满整个页面的效果了,分别高10%、60%、10%,还有两个间隔10%,加起来正好100%。

 

/*

目前,margin与padding使用%都是相对于父元素width的,如果将来语法改变了,本文也就过时了,还请大家留言给本人,本人会修改或删除此文,谢谢!

2020.6.29

*/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追逐梦想永不停

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值