【学习笔记02】CSS3之浮动

1. 浮动 float

PC端有三种传统的布局方式:标准流、浮动、定位

1.1 标准流

什么是标准流?即标签按照规定默认排列,标准流是最基本的布局方式。

该规定如下:

1.块级元素独占一行,从上到下顺序排列 

2.行内元素按照顺序由左到右排列, 触碰到父元素边缘则自动换行

1.2 为何需要浮动?

如何实现以下两个效果:

效果1:如何让多个块级盒子水平排成一行?虽然块级盒子转换为行内块元素可实现一行显示,但无法精准控制盒子之间的空隙。

效果2:如何实现两个盒子的左对齐和右对齐?

所以,单纯依靠标准流无法实现以上效果,必须采用浮动(float),浮动能改变元素标签默认的排列方式。其中,让多个块级元素在一行显示是其典型的应用。

1.3 何为浮动?

float属性用于创建浮动框,将其移动到一边,直到左边缘或右边缘碰到 包含块or另一个浮动框的边缘。

语法:选择器 { float:属性值} 

属性值如下:

           none 元素不浮动  /  left 元素向左浮动  right 元素向右浮动

1.4 浮动的三大特性

特性1:浮动元素将脱离标准流(简称脱标)

① 脱离标准普通流的控制(先浮起),再移动到指定位置(后移动),俗称脱标

② 浮动盒子的原位置不被保留(故未浮动的盒子将自动占据该位置)


特性2:浮动元素将在一行内显示,并且元素顶部对齐

①如果多个盒子均设定为浮动,则它们会按照属性值在一行内显示,并且顶端对齐排列。

②浮动的元素互相紧贴在一起(无缝隙),如果父级盒子的宽度过小无法容纳,多出的盒子将另起一行显示(比如缩小浏                     览器窗口)。


特性3:浮动元素具有行内块元素的特性

①任何元素都能设定浮动。不管元素以前是什么显示模式,添加浮动后都具有行内块元素的特性。

注意:

·如果行内元素设定了浮动属性(有浮动属性意味着具备了行内块元素特点),则可以直接设定width和height,同样也能直接设定padding和margin。

·添加浮动前,如果块级元素没有设定宽度,根据块元素特点,盒子的默认宽度和父级一样宽。但添加浮动后(浮动属性使得盒子具备了行内块元素特点),如果块级元素依然没有设定宽度(此时默认该元素变成了行内块元素,相当于一个未设定宽度的行内块元素),那么根据行内块元素的特点,未设定宽度时,默认宽度为自身内容的宽度。

·浮动的盒子中间没有缝隙,紧挨一起。

·行内元素设定了浮动,也具有行内块元素特点。

1.5 浮动如何使用?

浮动元素经常和标准流的父级元素搭配使用,为了约束浮动元素的位置,网页布局一般采取的策略是:先用标准流的父元素排列上下位置,之后内部子元素采取浮动排列左右位置。

网页布局的两大准则:

第一准则:多个块级元素纵向排列用标准流,多个块级元素横向排列用浮动

第二准则:先设置盒子大小,再设置盒子的位置。

1.6 浮动布局注意点

1.浮动和标准流的父盒子搭配。先用标准流的父元素排列上下位置,之后内部子元素采取浮动排列左右位置

2.一个元素浮动,理论上其余的兄弟元素也得浮动。(一浮全浮

·一个盒子里面有多个子盒子,如果其中一个子盒子设定为浮动,那么剩余子盒子应该设定浮动,以防止引起问题。

·浮动的盒子只会影响身后后面的标准流,不会影响前面的标准流。例如前面的标准流块级盒子独占一行,浮动盒子身后                还有个标准流块级盒子,那么浮动盒子将压在身后的标准流块级盒子上。

2. 清除浮动   

2.1 为何要清除浮动?     

前面所有浮动元素的都有一个标准流的父盒子,这些父盒子的共同特点是:有指定的height。但所有父盒子都必须有height吗?父级盒子在很多情况下,不方便设定高度(例如瀑布流、长短新闻等),理想的状态是让子盒子撑开父盒子,x个子盒子,父盒子自适应高度。然而,浮动盒子的特性是不占有位置,这将导致父级盒子高度为0,进而影响下面的标准流盒子,例如高度50px的footer将顶上来占用浮动盒子原来的位子。

由于浮动元素不再占用原文档流的位置,所以它会对后面的元素排版产生影响。

清除浮动的本质:清除浮动元素对未设定高度的父盒子造成的影响

如果父盒子本身有高度(height),则不需要清除浮动。清除浮动后,父级盒子将根据浮动的子盒子自动检测高度。父级盒子有高度,则不会影响后面的标准流。 

2.2 如何清除浮动?

清除浮动的策略是使浮动闭合,只让浮动在父盒子内部产生影响,不影响父盒子外面的其他盒子     

语法:

选择器  { clear:属性值} 


属性值如下:

left 表示不允许左侧有浮动元素(即清除左侧浮动的影响)

right 表示不允许右侧有浮动元素(即清除右侧浮动的影响)

both 同时清除左右两侧浮动的影响 (实际开发最常用

2.3 清除浮动的方法     

1.额外标签法,也称隔墙法,为W3C推荐方法

该方法是在最后一个浮动元素的末尾添加一个空的标签,该空标签的样式设定是{ clear:both },例如<div style="clear:both"> </div>,或者其他标签(如<br />等)。

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

注意:新添加的空标签必须是块级元素。


2.父级盒子中添加overflow属性

给浮动盒子的父级元素(注意是父级)添加overflow属性,将属性值设定为hidden、auto或scroll。该属性在外边距合并问题中使用过。


3.在父级盒子中添加 :after 伪元素

:after 方式是额外标签法的升级版,同样是给浮动盒子的父元素添加,.clearfix是一个class类的选择器(要给父盒子添加这个类名)。所谓“:after”伪元素就是在<body>中不存在的标签,即用CSS生成出一个具有标签特性的伪元素。类似于鼠标悬停的“:hover” 

        优点:没有增加标签,结构更简单   丨   缺点:照顾低版本浏览器    丨   代表网站:百度 淘宝网 网易等

.clearfix:after {
    content:"";
    display:block;
    height:0;
    clear:both;
    visibility:hidden
}

.clearfix {
    /*兼容IE6和IE7专用*/
    *zoom:1;
}

4.在父级盒子中添加双伪元素

.clearfix是一个class类的选择器(要给父盒子添加这个类名)。该方法也是给浮动盒子的父元素添加,但更符合使浮动闭合的概念。因为before相当于在大盒子内部的前面插入一个空盒子,after相当于在大盒子内部的后面插入一个空盒子,形成完全的闭合。

优点:代码更简洁  丨  缺点:照顾低版本浏览器  丨  代表网站:小米 腾讯等

.clearfix:before,
.clearfix:after {
    content:"";
    display:table;    
}

.clearfix:after {
    clear:both;
}


.clearfix {
    /*兼容IE6和IE7专用*/
    *zoom:1;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值