关于双飞翼布局中浮动与负边距的理解

布局学习中的一些理解


圣杯布局中浮动与清除的搭配

现象

  在阅读双飞翼布局介绍一文时,首先对其中Sub的左外边距设置为-100%感到不解,于是尝试模仿时
关键代码如下

#Main{
    float:left;
    width:100%;
}

#Sub{
    width: 190px;
    height: 123px;
}

  效果如下图(正常文档流)
  正常文档流

  在尝试float与margin不同的搭配时,有如下效果(为叙述简便,称为Sub设置的margin的负值的相反数为Sub的负边距,称Sub的负边距所带来的Sub的移动为Sub的滑动):
  
1. 不论浮动情况如何,只要负边距小于Sub的宽度,Sub向左移动,图如下:
正常向左滑动
2. 当Main和Sub不同时设置浮动时,若负边距不小于Sub的宽度,Sub均消失在页面中。其中:
  a. Main与Sub 均不设置浮动时,原位置仍然保留,考虑到文档流的特点,可以说明Sub仍在“这一行”如图:
均不设置浮动
  b.Main与Sub 有且仅有一者设置浮动,效果如图
有且仅有一者浮动
3. 当Main和Sub同时设置浮动时,若负边距大于Sub的宽度,Sub出现在Main一行,如图(负边距190px)。
同时设置浮动


思考

  1. 负边距小于Sub宽度时,由负边距的原理,正常向左滑动。
  2. Main设置浮动而Sub不设置浮动时,Main由于浮动脱离了正常文档流,Sub占据了Main本身的位置,向左滑动到极限时,由于Header未浮动(独占一行),故Sub不能滑到上一行。当Sub设置浮动而Main不设置浮动时,由于Main在文档流中独占一行故Sub同理不能滑到上一行。
  3. Main和Sub同时设置浮动时,正常文档流中Main原在的位置是“空的”,所以Sub可以上移后再滑动?(此处仅能大致理解,原理难以讲清,他日若找到答案,回来再补)。

overflow:hidden清除浮动

  由于Main、Sub、Extra均设置了浮动,故三者的容器高度为0,而footer在文档流中,故会直接在Header下,如图
Footer直接在Header下
  此时对footer清除浮动clear:both可达到想要效果,而对Main、Sub、Extra三者的容器设置overflow:hidden也可达到相同效果!清除浮动
  在百度上找了一圈解释,百度知道以及知乎上的回答似乎比较靠谱,待研读W3C关于BFC的文档后再回头来看应该更有收获。


绝对定位的问题

  此处对Sub进行绝对定位设置left为0会找不到Sub,只能用相对定位,原因待考。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值