在讲浮动之前,我们首先需要知道,html网页其实是一个文档流。浏览器在加载网页的时候是根据文档流自上而下来加载。我们所有的元素和样式都是写入在这个文档流里面。

但是,如果我们加了浮动的话,这个元素就会破坏这个文档流,越过普通的文档流元素标签。浮动到父类元素的左侧或者右侧。

浮动的语法:

float : none 不浮动 、left 左浮动 、right 右浮动

clear:both 清除浮动

例如,我建立一个DIV盒子,并加上一些文字和一张图片:

html5左浮动 html怎么左浮动_html


我们会发现,效果离我们预想的有一些遥远:

html5左浮动 html怎么左浮动_html5左浮动_02


我们希望的是,这个文字能围绕图片,类似于word文档里的一个环绕图片的功能。此处,浮动就发挥了他的作用,我们给图片加上一个浮动:

html5左浮动 html怎么左浮动_html_03


效果如下图:

html5左浮动 html怎么左浮动_margin_04


我们会发现,图片根据父元素div 进行了向左浮动。这里有一点,当一个块级元素,没有设定浮动的时候,宽度是平铺整个浏览器,并且独占一行。当一块块级元素,不想独占一行的话,加上浮动,打破这种文档流模式,它也会破坏元素结构。

html5左浮动 html怎么左浮动_float_05


这是3个div容器,容器1和容器3进行了左浮动,容器2进行了右浮动,我们来看一下效果:

html5左浮动 html怎么左浮动_html5左浮动_06


但是,注意了,这个时候,我们把容器3的浮动去掉,产生的结果是这样的:

html5左浮动 html怎么左浮动_margin_07


我们会发现,容器3不见了。原因是因为,容器1加上了浮动,脱离了文档流。浮动到了容器3的上方。把容器3给遮住了,如何证明呢?我们给容器3加多一个宽度:

html5左浮动 html怎么左浮动_html5左浮动_08


效果如下:

html5左浮动 html怎么左浮动_margin_09


我们会发现,容器3仅展现出了多出来的20px。所以,加上了浮动以后。元素就脱离了文档流。浮动到了文档流的上方,单独的形成了一个层面。

那么如何将容器3在不浮动的情况下完全展现出来呢?这个时候就需要用到我们的边距了。

边距分为外边距和内边距,外边距为margin,内边距为padding。我们先来看一个例子:

html5左浮动 html怎么左浮动_margin_10


这里我设定了2个DIV盒子。包含关系。先不说代码,效果如下图:

html5左浮动 html怎么左浮动_html_11


那么这样的一个回形字是怎么做到的呢?

我们一点点的来看代码:

html5左浮动 html怎么左浮动_margin_12


首先我们来看box1,box1里有这么一句代码:margin:100px auto;

这句代码的含义是上下距离元素100px,左右居中。margin代表的是外边距,所以元素内部并不会有什么变化。那么这个100px体现在哪里呢?我再增加一个div,这样会比较直观一点:

html5左浮动 html怎么左浮动_margin_13


这个比较好理解,我们来看复杂一点的里面的box2:

html5左浮动 html怎么左浮动_padding_14


这边的margin:80px 代表的是这个div的外边距距离别的元素上下左右都是80px。

padding:10px的意思是内部元素距离这个div的边框有10px的距离。

那么具体怎么说明呢?我们还是以图的方式来更加直观的感受一下margin和padding。

之前我教大家用过google浏览器的F12工具。这里我就以这个工具来做展示:

html5左浮动 html怎么左浮动_padding_15


我们用工具选中这个 box2,可以清晰的看到,工具的右侧显示出了一个图。上面很明白的写着。外面的margin,上下左右都是80像素,没有border,padding 上下左右都是10像素,里面的内容为100像素,如果大家看的不是很明了,我再加一些内容:

html5左浮动 html怎么左浮动_html_16


我在box2里加了一个span,然后给span设定了背景色,代码所展示的效果如下图:

html5左浮动 html怎么左浮动_html5左浮动_17


那么这个80px和10px怎么理解呢?

html5左浮动 html怎么左浮动_float_18


margin和padding的语法格式:

margin-left:10px;

margin-right:10px;

margin-top:10px;

margin-bottom:10px;

分别代表左右上下,这个非常的语义化,我在这里就不多做解释了。

margin:20px 20px 20px 20px;

这边的20px从前往后分别代表的是上右下左。

margin:30px 30px;

第一个30px代表的是上下的距离,第二个30px代表的是左右的距离。

margin:40px;

这个40px代表的是四周的距离,也就是上下左右都是40px。

padding同理。就不多做解释了。