为了账号安全,请及时绑定邮箱和手机立即绑定

float 和positioning:absolute三列布局区别??

下面是自己的一点总结和问题,求大神解答!

关于三列布局总结和疑问:

总结:1,如果left不设置float或absolute,且main不设置margin,那么main会出现在left的下面,紧贴着left,且铺满整个浏览器

(原因:首先,如果不设置float 那么left存在于浏览器中,且div属于块状元素,所以独占一行,所以main要出现他下面,另起一行,没设置宽,所以继承父类,也就是浏览器)

 

2,如果left设置了float,那么main 则紧挨着 ,需要注意的是:假设left宽度是200px,main的margin设置距离左侧是0,且main宽度被设置成400,那么最终结果是main会被覆盖掉一半,但是main里面的文字 会出现在未被覆盖的另一半中,且显示不完的文字会直接超出main的框,显示到外面。

【使用float脱离文档流时,其他盒子会无视这个元素,但其他盒子内的文本依然会为这个元素让出位置,环绕在周围】

 

问1:此时若 right 也设置 了float,那么right会紧接着main下面进行排列

(原因:main是普通的div,并没有设置其他,所以他是块状元素,独占一行,所以right要另起一行,紧跟着进行布局)

 

问2:但是经查资料研究,如果这样写   【有浮动的div  要放在最前面】

  <div>left</div>

    <div>right</div>

    <div class=”main”>文本</div>

若按上面那样写,right又会出现在main同一行的右侧,能实现三列的效果!

 

 

1.       若 把left 设置成absolute(绝对定位), 其他设置与上面2相同,则此时出现的结果是, main会被left覆盖一半,并且 main里的文字也会被遮盖一半。

【对于使用positioning:absolute脱离文档流的元素,其他盒子与其他盒子内的文本都会无视它】

如果此时把right 设置为absolute(绝对定位), 那么他会与main出现在同一行,紧靠在右侧,能实现三列效果。

【那么问题来了:二者同样脱离文档流,而且mian并没有改变什么,为什么float不行,而absolute绝对定位可以??】     二者的区别到底在哪里??

正在回答

2 回答

额 首先 抱歉下 之前说的有问题,其次 我也是个菜鸟 有问题大家一起交流 

        先说下  我们可以认为正常文本流是在z-index:0层,按块级元素和内联元素的默认占位布局

        其次 设置了absolute的元素 完全从正常文档流删除 所以他在z-index:0层 的占位消失,不影响正常文本流,如果定位之后 它的下面有正常文本流的元素 会覆盖掉(其实如果有float的元素也会覆盖掉,所以可以认为absolute的z-index是最高层的 PS:相对于正常和float),其top left right  bottom是相对于已经定位(比如position:relative)的父容器,或父容器没有 则以body为定位

        设置了float的元素,也脱离了正常文本流,如果一个元素设置了float 那么后面的正常文档流的元素会当它不存在,自动填充,那么float就会覆盖掉正常的文本流,但是文字不会覆盖 而是会环绕 

        因此 可以这样理解  正常文本流的在 z-index:0  float的在z-index:0.5 (有一半卡住了  文字环绕) 而absolute的在z-index:1层

      

0 回复 有任何疑惑可以回复我~
#1

装完B就跑_真刺激 提问者

非常感谢,感觉不错!好人一生平安!共勉
2016-07-27 回复 有任何疑惑可以回复我~
#2

慕粉3721860 回复 装完B就跑_真刺激 提问者

客气 哈哈 我可不要好人卡 !
2016-07-29 回复 有任何疑惑可以回复我~

元素浮动以后 脱离文档流  浮动到最左上,但是absolute 虽然也是脱离了文档流,但是和float 不一样,他的元素在原文档流里面还占据着原来的空间 ,并没有消失,只不过是元素相对于已经设定position的父容器或祖先容器相对偏移,然后覆盖其他的正常文档流元素而且。

0 回复 有任何疑惑可以回复我~
#1

装完B就跑_真刺激 提问者

《只不过是元素相对于已经设定position的父容器或祖先容器相对偏移,然后覆盖其他的正常文档流元素》,大神,这句不太明白啊,能通俗点例子吗?最好和float对比下,拜谢!
2016-07-27 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
网页布局基础
  • 参与学习       214672    人
  • 解答问题       1833    个

让你精通CSS中三大定位机制,彻底掌握网页布局的相关知识

进入课程

float 和positioning:absolute三列布局区别??

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号