浮动

在学习浮动之前,先要知道块级元素与行内元素的区别,传送门:

块级元素与行内元素的区别

现在有如下需求,需要两个div实现并排效果,可以发现在标准流当中基本是不可能现实的,div是块级元素,而块级元素的一个性质就是不能实现与其他元素实现并排,这与我们所提的需求相矛盾。

那么在CSS当中是怎么解决这个问题的,就是应用浮动来解决的。

浮动的性质有三:

  • 浮动元素脱离标准文档流
  • 浮动元素在同一个层叠上下文中互相贴靠
  • 浮动元素可以实现“字围"的效果
1、浮动元素脱离标准文档流
<style type="text/css">
    .box1{
        width: 100px;
        height: 100px;
        background-color: red;
    }

    .box2{
        width: 200px;
        height: 200px;
        background-color: blue;
    }
</style>

<body>
    <div class="box1"></div>
    <div class="box2"></div>
</body>

在不加浮动的情况下,蓝色的小盒子在红色的小盒子下面。

Paste_Image.png

那好,现在我给红色的小盒子加上浮动属性,看看会怎样。

<style type="text/css">
    .box1{
        width: 100px;
        height: 100px;
        background-color: red;
                float: left;
    }

    .box2{
        width: 200px;
        height: 200px;
        background-color: blue;
    }
</style>

<body>
    <div class="box1"></div>
    <div class="box2"></div>
</body>

可以发现,蓝色的盒子跑到的红色的盒子底下去了

Paste_Image.png

说明浮动的盒子“浮”起来了吧,距离用户更近了,这里的远近指的是,用户直接看到的信息,我们看到的是红色把蓝色盖住了,就说明了,红色盒子里用户距离更近一点,而蓝色的里用户的距离更远一点,可以将其看作是一个“层”。

Paste_Image.png

这里给条传送门,该作者讲的也许太详细了,看的不是很懂。
深入理解CSS中的层叠上下文和层叠顺序

再给出一个例子:

<style type="text/css">
    span{
        float: left;
        width: 200px;
        height: 200px;
        background-color: yellow;
    }
</style>
<span></span>
Paste_Image.png

一个span标签不需要转成块级元素,就能够设置宽度、高度了。所以能够证明一件事儿,就是所有标签已经不区分行内、块了。也就是说,一旦一个元素浮动了,那么,将能够并排了,并且能够设置宽高了。无论它原来是个div还是个span。

2、 浮动元素在同一个层叠上下文中互相贴靠
<style type="text/css">
    .box1{
        width: 100px;
        height: 100px;
        background-color: red;
                float: left;
    }

    .box2{
        width: 200px;
        height: 200px;
        background-color: blue;
                 float: left;
    }
</style>

<body>
    <div class="box1"></div>
    <div class="box2"></div>
</body>

这里的box1,box2是在同一个** 层叠上下文 **中,什么意思呢?就是他两目前的状态是一样的平等,不受来自其他的样式也影响。

Paste_Image.png

可以看出,两个盒子相互贴靠吧!!!

2.1、 浮动元素在同一个层叠上下文中互相贴靠-层叠上下文

现在需求有变化了,现在要在蓝色的小盒子里面,再放两个小盒子,那么他们之间该如何排列呢?

<style type="text/css">
    .box1{
        width: 100px;
        height: 100px;
        background-color: red;
                float: left;
    }

    .box2{
        width: 200px;
        height: 200px;
        background-color: blue;
                 float: left;
    }
       .box3{
        width: 50px;
        height: 50px;
        background-color: gray;
    }
    .box4{
        width: 50px;
        height: 50px;
        background-color: yellow;
    }
</style>

<body>
    <div class="box1"></div>
    <div class="box2">
        <div class="box3"></div>
        <div class="box4"></div>
    </div>
</body>

可以发现在box2中的盒子box3,box4上下排列的吧,说明box3,box4,在box2的层叠上下文中是按照标准文档流来排列的。

那么在这里我想说的就是,box2,是box3,box4的层叠上下文,对于box1,box2来说他们的层叠上下文就是body标签。

注意:

  • 在做浮动的时候一定要记得,那一个盒子是在哪一个层叠上下文中浮动,不要想当然,这个层叠上下文中的盒子和另外一个层叠上下文中的盒子来一起做浮动。
  • 父盒子的浮动不影响子盒子的浮动效果,因为层叠上下文不一致了。

那么需求现在又发生了改变,希望box2中的两个小盒子也发生能并排,很简单啦,洒洒水啦!给box3,box4添加浮动效果就好了,Oh了。

    .box3{
        width: 50px;
        height: 50px;
        background-color: gray;
        float: left;
    }
    .box4{
        width: 50px;
        height: 50px;
        background-color: yellow;
        float: left;
    }

        <div class="box1"></div>
    <div class="box2">
        <div class="box3"></div>
        <div class="box4"></div>
    </div> 
Paste_Image.png
3、浮动元素可以实现“字围"的效果
<style type="text/css">
    .box{
        width: 100px;
        height: 100px;
        background-color: red;
        color: white;
        padding:20px;
        margin: 20px;
        float: left;
    }
</style>
<div class="box">
    盒子里可以放一张图片
</div>
<p>
    我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容我是新闻内容
</p>

可以发现这里不对啊,按上面讲的内容来说,文字不应该跑到红色盒子底下去么,咋还产生了字围效果呢?具体什么原因,大家参考深入理解CSS中的层叠上下文和层叠顺序该篇文章,上面有介绍,比较关键的一句话意思就是,样式布局最重要的就是用户呈现内容,css不让浮动的盒子压盖文字,于是就形成了字围效果,我们经常说图片也是文字,实际上我自己测试也确实是这样的,图片也会围绕在红色区域。

Paste_Image.png
<style type="text/css">
    .box{
        width: 100px;
        height: 100px;
        background-color: red;
        color: white;
        padding:20px;
        margin: 20px;
        float: left;
    }
</style>
<div class="box">
    盒子里可以放一张图片
</div>
![](img/icon.jpg)![](img/icon.jpg)![](img/icon.jpg)![](img/icon.jpg)![](img/icon.jpg)![](img/icon.jpg)![](img/icon.jpg)

图片也环绕在盒子外围:


Paste_Image.png

在开发中国我们经常用块级元素div,li这些来做浮动的时候一定要注意,要浮动的时候就都浮动,不要单独浮动。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容