八种清除浮动学习---7种三列布局lianxi,

前段时间用到了这些东西,学习顺便整理在了一起,清楚浮动几种方法没有试,有时间再深入学习一下。

*************************

八种清楚浮动的方式

《八种清除浮动学习---7种三列布局lianxi,》

1,父级div定义 height

《八种清除浮动学习---7种三列布局lianxi,》

原理:父级div手动定义height,就解决了父级div无法自动获取到高度的问题。

优点:简单、代码少、容易掌握

缺点:只适合高度固定的布局,要给出精确的高度,如果高度和父级div不一样时,会产生问题

建议:不推荐使用,只建议高度固定的布局时使用

2,结尾处加空div标签 clear:both

《八种清除浮动学习---7种三列布局lianxi,》

原理:添加一个空div,利用css提高的clear:both清除浮动,让父级div能自动获取到高度

优点:简单、代码少、浏览器支持好、不容易出现怪问题

缺点:不少初学者不理解原理;如果页面浮动布局多,就要增加很多空div,让人感觉很不好

建议:不推荐使用,但此方法是以前主要使用的一种清除浮动方法

3,父级div定义 伪类:after 和 zoom

zoom:1避免元素高度崩塌

《八种清除浮动学习---7种三列布局lianxi,》
《八种清除浮动学习---7种三列布局lianxi,》

原理:IE8以上和非IE浏览器才支持:after,原理和方法2有点类似,zoom(IE转有属性)可解决ie6,ie7浮动问题

优点:浏览器支持好、不容易出现怪问题(目前:大型网站都有使用,如:腾迅,网易,新浪等等)

缺点:代码多、不少初学者不理解原理,要两句代码结合使用才能让主流浏览器都支持。

建议:推荐使用,建议定义公共类,以减少CSS代码。

4,父级div定义 overflow:hidden

《八种清除浮动学习---7种三列布局lianxi,》

原理:必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览器会自动检查浮动区域的高度

优点:简单、代码少、浏览器支持好

缺点:不能和position配合使用,因为超出的尺寸的会被隐藏。

建议:只推荐没有使用position或对overflow:hidden理解比较深的朋友使用。

5,父级div定义 overflow:auto

《八种清除浮动学习---7种三列布局lianxi,》

原理:必须定义width或zoom:1,同时不能定义height,使用overflow:auto时,浏览器会自动检查浮动区域的高度

优点:简单、代码少、浏览器支持好

缺点:内部宽高超过父级div时,会出现滚动条。

建议:不推荐使用,如果你需要出现滚动条或者确保你的代码不会出现滚动条就使用吧。

6,父级div 也一起浮动

《八种清除浮动学习---7种三列布局lianxi,》

原理:所有代码一起浮动,就变成了一个整体优点:

没有优点

缺点:会产生新的浮动问题。

建议:不推荐使用,只作了解。

7,父级div定义 display:table

《八种清除浮动学习---7种三列布局lianxi,》

原理:将div属性变成表格

优点:没有优点

缺点:会产生新的未知问题。

建议:不推荐使用,只作了解

8,结尾处加 br标签 clear:both

《八种清除浮动学习---7种三列布局lianxi,》

原理:父级div定义zoom:1来解决IE浮动问题,结尾处加 br标签 clear:both

建议:不推荐使用,只作了解。

7种三列布局

双飞翼布局使用margin负值的原理

margin为负值产生的影响

对于自身的影响

当元素不存在width属性或者(width:auto)的时候,负margin会增加元素的宽度,看下下面的例子

《八种清除浮动学习---7种三列布局lianxi,》
《八种清除浮动学习---7种三列布局lianxi,》

margin-left:-20px;增加了宽度

为什么是供css读取的高度?

那么试了之后上结果,

《八种清除浮动学习---7种三列布局lianxi,》

高度给出的是50,但是CSS能读到的却是高度的一半

《八种清除浮动学习---7种三列布局lianxi,》

对文档流的影响

元素如果用了margin-left:-20px;毋庸置疑的自身会向左偏移20px和定位(position:relative)有点不一样的是,在其后面的元素会补位,也就是后面的行内元素会紧贴在此元素的之后。总结,不脱离文档流不使用float的话,负margin元素是不会破坏页面的文档流。

对文档流的影响

所以如果你使用负margin上移一个元素,所有跟随的元素都会被上移。

《八种清除浮动学习---7种三列布局lianxi,》

对浮动的影响,定义三个盒子,每个盒子宽高均是100如下

《八种清除浮动学习---7种三列布局lianxi,》

给三个盒子都加上margin-left:-25px;

《八种清除浮动学习---7种三列布局lianxi,》

margin-left: -25px;

可以看出3个盒子都向左移动25px;

box1自身向左移动了25px,box2又覆盖了其25px,所以我们就看到了“宽度”为50px的box1

box2,box3以此类推!

那么margin-left:-50px呢?

《八种清除浮动学习---7种三列布局lianxi,》

第三个盒子margin-left:-200px时

《八种清除浮动学习---7种三列布局lianxi,》

总结:

负margin会改变浮动元素的显示位置,即使我的元素写在DOM的后面,我也能让它显示在最前面。圣杯布局、双飞翼布局啊什么的,都是利用这个原理实现的。(下文有详细)

对绝对定位也是有影响的,负margin会基于其绝对定位坐标再偏移,缺点就是你必须知道这个绝对定位元素宽度的和高度才能并设置负margin值使其居中浏览器窗口,

若对于不确定宽度和高度可以用

1、流体布局

《八种清除浮动学习---7种三列布局lianxi,》

/*实现方式

左右模块各自左右浮动,并设置中间模块的margin值使中间模块宽度自适应

缺点:主要的内容模块无法最先加载,当页面内容较多时会影响用户的体验

*/

2、BFC三栏布局

《八种清除浮动学习---7种三列布局lianxi,》

/*缺点和流体布局的类似,主要内容无法最先加载,当页面中内容较多时会影响用户体验。因此为了解决这个问题,有了双飞翼布局*/

3、双飞翼布局

/*利用的是浮动元素margin负值的应用(原理会在文章末给出),中间div最先写*/

《八种清除浮动学习---7种三列布局lianxi,》

/*主题内容优先加载,HTML代码结构稍微复杂点*/

4、圣杯布局

《八种清除浮动学习---7种三列布局lianxi,》

跟双飞翼布局很像,有一些细节上的区别,相对于双飞翼布局来说,HTML结构相对简单,但是样式定义就稍微复杂点

5、Flex布局

《八种清除浮动学习---7种三列布局lianxi,》

x需要考虑浏览器的兼容性

6、table布局

《八种清除浮动学习---7种三列布局lianxi,》

缺点无法设置栏间距

7、绝对定位布局

《八种清除浮动学习---7种三列布局lianxi,》

简单实用,并且主要内容优先加载

///简书上编辑代码真是O疼,还是上图更加更省事。( ̄ ̄)~*

*******************************************************************************************

    原文作者:Creator93
    原文地址: https://www.jianshu.com/p/8a02df209eae
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞