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绝对定位可以??】 二者的区别到底在哪里??