html5浮动的应用,CSS的浮动及其在布局中的应用

CSS的浮动及其在布局中的应用

原创

web_03152018-09-04 00:25:26©著作权

阅读数

6898

©著作权归作者所有:来自51CTO博客作者web_0315的原创作品,如需转载,请注明出处,否则将追究法律责任

https://blog.51cto.com/u_13951200/2169931

# CSS浮动是什么

>CSS中浮动属性(float)设计的初衷是为了解决页面展示样式时需要文字环绕图片的场景;类似于Word中的文字环绕属性,基础使用场景如下:

#### 浮动前:

![](https://s4.51cto.com/images/blog/201809/03/b8d2db49ce391ca6c667717864c1383a.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

#### 浮动后:

![](https://s4.51cto.com/images/blog/201809/03/f03fe7beb131320b240c70b83da2b38f.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

#### 代码实现如下(简化版)

```

xxx.jpg

xxx

```

# 浮动带来的问题--高度塌陷

> 由于设置了float后元素脱离了标准流,从而导致了高度的塌陷,这里有一个很直观的例子

#### 浮动前

![](https://s4.51cto.com/images/blog/201809/04/997379d421217e5de81691ef89428e8c.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

#### 浮动后

![](https://s4.51cto.com/images/blog/201809/04/1eccd29cde2d7c6430680a74aed2b5bc.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

#### 高度塌陷带来的问题

> 当出现高度塌陷后原本想放在下面的元素会自动向上补充,出现这种结果

![](https://s4.51cto.com/images/blog/201809/04/cb8fe26eaae7bde5582e89c9d01078d4.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

演示代码

```

这里是一个段落

```

#### 如何解决塌陷--清除浮动

> 清除浮动主流方法有两种:1)使用clear属性清除浮动;2)新建BFC

#### 利用clear属性

方式一:在设置float的兄弟元素最后设置一个元素,对其设置clear属性,如下

```

这里是一个段落

```

方式二:

方式一的缺点还是很明显的,就是平白无故的新增了一个没有内容的元素,使页面出现冗余;这里可以利用伪元素来达到同样的效果

```

main::after{

content:"";

display:table;

clear:both;

}

```

#### 清除浮动后的效果

![](https://s4.51cto.com/images/blog/201809/04/ddbebf9ec73a1fac2b7f8966988b1af2.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

#### 新建BFC

> 该方法的原理是:父元素在新建一个 BFC 时,其高度计算时会把浮动子元素的包进来。那么如何新建一个BFC呢

根元素或其它包含它的元素

浮动 (元素的 float 不是 none)

绝对定位的元素 (元素具有 position 为 absolute 或 fixed)

内联块 inline-blocks (元素具有 display: inline-block)

表格单元格 (元素具有 display: table-cell,HTML表格单元格默认属性)

表格标题 (元素具有 display: table-caption, HTML表格标题默认属性)

块元素具有overflow ,且值不是 visible

display: flow-root

虽然有这么多方法可用,可我们常用的就是 overflow: hidden

```

main{

overflow:hidden;

}

```

也可以达到清除浮动的效果

# float在布局中的使用

> float元素设计的初衷虽然是文字环绕图片,但是目前其最广泛的应用却是在布局领域,下面除了介绍如何应用在布局外,还会介绍几种常见的float布局方式,下面给出了最简单的流式布局样式

#### 1.传统流式布局

> 每个div默认占据一行,不论宽度都会占满此行;float布局的核心思想就是怎么把这些一行一行的数据给他以美观的方式呈现出来

![](https://s4.51cto.com/images/blog/201809/03/3f7255d9cb41be4199081eecd51bcec2.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

代码演示

```

div1

div2

div3

div4

```

#### 2.我们将div2设置为悬浮后会发生什么

![](https://s4.51cto.com/images/blog/201809/03/b7ef6b4ed4d39952d2484424aa266937.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)![](https://s4.51cto.com/images/blog/201809/03/687decb075b23f4d26e7a1a1a3e70b2c.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

> 为什么会出现这种情况呢?div3莫名其妙的变短了?

> 其实并不是div3变短了,而是div2设置浮动后脱离了页面的流,悬浮在了其他元素的上面,而div2脱离后div3自然的向上补充,带着div4整体上移,又被div2挡住了一部分所以出现了上图中的情况,对比看一下div2右浮动就比较清晰了

![](https://s4.51cto.com/images/blog/201809/04/0e9eedd23dfa1087b83369b4c2efd237.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

#### 3.再将div3悬浮后会发生什么

>同理,这里div2 div3脱离标准流并悬浮其上,组成了一个新的层次;div4直接上移,部分被di2和div3所遮挡

![](https://s4.51cto.com/images/blog/201809/04/b8e2027d7ede2be64623bf2c7a077338.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

#### 4.基础原理大概介绍完毕,那么如何利用float将上面的代码构造出美观的效果呢

代码示例(为了美观做了部分调整,关注重点即可)

```

div2

div1

div3

div4

```

最终样式如下,是网页中非常常见的三列布局方式

![](https://s4.51cto.com/images/blog/201809/04/786e4f988461bd66cb01064e0d40d44a.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

这里介绍了CSS浮动的基本知识,由于篇幅原因有些比较基础细致的知识没有包含,大家感兴趣可以自己学习下!

下面一篇博客会有具体的例子供大家参考,有需要的可以看下

2赞

1收藏

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值