margin与padding

margin与padding

http://img1.sycdn.imooc.com//climg/5d4fbdd900012aaa03790334.jpg

http://img1.sycdn.imooc.com//climg/5d4fbcbe0001a62b14060379.jpg

这个地方用padding-top当然容易理解,

但为什么当用margin-top,而screen-1没有做溢出隐藏的时候,会把整个scree-1撑下来呢?

做了溢出隐藏就正常了,这里逻辑在哪?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好!

这个问题发生的原因是根据规范,一个盒子如果没有上补白(padding-top)和上边框(border-top),那么这个盒子的上边距会和其内部文档流中的第一个子元素的上边距重叠,说白点就是:父元素的第一个子元素的上边距margin-top如果碰不到有效的border或者padding,就会不断一层一层的找自己“领导”(父元素,祖先元素)的麻烦,只要给领导设置个有效的 border或者padding就可以有效的管制这个目无领导的margin,防止它越级,把自己的margin当成领导的margin执行。

解决方法就如回复一下中。同学可以看着理解一下,不过同学无需纠结,有一些现象和方法是html中定义的,记住怎么使用就可以了

如果帮助到了你 欢迎采纳 祝学习愉快~

  • 午炎子栩 提问者 #1
    您的“说白点”很形象很能帮助理解,多谢多谢
    2019-08-11 19:11:56
好帮手慕码 2019-08-11 15:30:24

同学你好!
这是由于子元素设置margin-top而导致父元素边距一起下落(边距下落)的现象。

解决方法是:

1、修改父元素的高度,增加padding-top样式模拟(padding-top:1px;常用) 
2、为父元素添加overflow:hidden;样式即可(完美) 
3、为父元素或者子元素声明浮动(float:left;可用) 
4、为父元素添加border(border:1px solid transparent可用) 

所以说常用的方法除了设置overflow:hidden;还有其他三种,同学都可以使用哦~

如果帮助到了你 欢迎采纳 祝学习愉快~

  • 提问者 午炎子栩 #1
    谢谢。 我试了,确实是。 但是,完全无法理解。 为什么子元素的margin-top能把父元素撑下来,其它地方用的margin-top/left/right也很多,也没见把父元素撑一撑啊?这里特殊特殊在哪? 就算撑开了,为啥给父元素添加padding或者border或者overflow就解决了呢?道理不明白,就心中迷糊,难道这个地方要死记硬背么?
    2019-08-11 18:14:17
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师