CSS - 浮动

1. 浮动(float)

1.1 普通流(normal flow)

也叫 文档流、普通流、标准流。

普通流实际上就是一个网页内标签元素正常从上到下,从左到右排列顺序的意思,如块级元素会独占一行,行内元素会按照顺序依次前后排列。

1.2 什么是浮动?

元素的浮动是指设置了浮动属性的元素会脱离标准普通流的控制,移动到其父元素中指定位置的过程。

选择器 {float: 属性值;}

属性值描述
left元素向左浮动
right元素向右浮动
none元素不浮动(默认值)
1.3 浮动特性
  • 浮动脱离标准流,不占位置 ,会影响标准流。

  • 浮动只有左右浮动。

  • 浮动首先创建包含块的概念(包裹)。即浮动元素总是找离他最近的父元素对齐,但不会超出内边距的范围。

  • 一个父盒子里面的子盒子,如果其中一个子级有浮动的,则其他子级都需要浮动,这样才能一行对齐显示。

  • 元素添加浮动后,元素会具有行内块元素的特性:

    • 元素的大小完全取决于定义的大小或者默认的内容多少,浮动根据元素书写的位置来显示相应的浮动
  • 浮动的元素排列位置,跟上一个元素(块级)有关系:

    • 如果上一个元素有浮动,则下一个元素顶部会和上一个元素的顶部对齐
    • 如果上一个元素是标准流,则下一个元素的顶部会和上一个元素的底部对齐。

2. 版心和布局流程

“版心”(可视区)是指网页中主体内容所在的区域。一般在浏览器窗口中水平居中显示,常见的宽度值为960px、980px、1000px、1200px等。

布局流程

1、确定页面的版心;
2、分析页面中的行模块,以及每个行模块中的列模块;
3、制作HTML结构;
4、CSS初始化,然后开始运用盒子模型的原理,通过DIV+CSS布局来控制网页的各个模块。

3. 清除浮动

由于浮动元素不再占用文档流的位置,所以它会对后面的元素的排版产生影响,为了解决这些问题,就需要在该元素中清除浮动。

准确来说,并不是清除浮动,而是清除浮动后造成的影响。

清除浮动本质

清除浮动主要为了解决父级元素因为子级浮动引起内部高度为0的问题。

清除浮动的方法(闭合浮动)

语法:

选择器 {clear: 属性值;}

属性值描述
left不允许左侧有浮动元素(清除左侧浮动的影响)
right不允许右侧有浮动元素(清除右侧浮动的影响)
both同时清除左右两侧浮动的影响
3.1 额外标签法

通过在浮动元素末尾添加一个空的标签,如

 <div style="clear:both"></div>,或其他标签</ br>也可

优点:通俗易懂,书写方便。
缺点:添加许多无意义的标签,结构化较差。不推荐。

3.2 父级添加overflow属性方法

可以通过触发BFC的方式实现。

可以给父级添加: overfolw为hidden | auto | scroll 都可以实现

优点:代码简洁。
缺点:内容增多时容易造成不会自动换行导致内容被隐蔽掉,无法显示需要溢出的元素。

3.3 使用after伪元素清除浮动

:after 方式为空元素的升级版,可以不用单独加标签。

使用方法:

.clearfix:after {content: "";
				 display: block;
				 height: 0;
				 clear: both;
				 visibiluty: hidden;
}
.clearfix {
			zoom: 1;
}     /* IE6、7专有 */

优点:符合闭合浮动思想,结构语义化正确。
缺点:由于IE6-7不支持 :after,使用zoom:1触发hasLayout。

注意:content: “.” 里面尽量跟一个小点或者其他,否则在Firefox 7.0前的版本会有空格生成。

3.4 使用before和after双伪元素清除浮动

使用方法:

.clearfix:before, .clearfix:after {
									content: "";
									display:table;  /* 这句话可以触发BFC,BFC可以清除浮动 */
}
.clearfix:after {
				  clear: both;
}
.clearfix {
			*zoom: 1;
}

优点:代码更简洁
缺点:由于IE6-7不支持 :after,使用 zoom: 1触发 hasLayout。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值