Float浮动

一、标准文档流

1.定义

标准文档流:指元素根据块元素或行内元素的特性按从上到下,从左到右的方式自然排列。这也是元素默认的排列方式

2.标准文档流组成

  • 块级元素(block)
    <h1>…<h6>、<p>、<div>、列表

  • 内联元素(inline)
    <span>、<a>、<img/>、<strong>...

  • 注意:内联标签可以包含于块级标签中,成为它的子元素,而反过来则不成立

二、display属性

display常见的属性值
  • display:block; 将内联元素转变成块级元素,元素独占一行,可设置宽高
block效果呈现
  • display:inline; 将块级元素转变成内联元素,元素排在同一行,宽高为内容的宽高
inline效果呈现
  • display:inline-block; 将元素转变成行块元素,元素排在同一行,可设置元素宽高
inline-block效果呈现
  • display:none; 设置元素不被显示
none效果呈现

三、 float浮动

1.float属性

float属性值
  • 示例html代码

    <div id="father">
      <div class="layer01"><img src="image/photo-1.jpg" alt="日用品" /></div>
      <div class="layer02"><img src="image/photo-2.jpg" alt="图书" /></div>
      <div class="layer03"><img src="image/photo-3.jpg" alt="鞋子" /></div>
      <div class="layer04">浮动的盒子……</div>
    </div>
    
  • 设置图片浮动css代码

    .layer01 {
        border:1px #F00 dashed;
        float:right;    /*设置图片右浮动*/
    }
    .layer02 {
        border:1px #00F dashed;
        float:right;    /*设置图片右浮动*/
    }
    .layer03 {
        border:1px #060 dashed;
        float:left;    /*设置图片左浮动*/
    }
    
  • 呈现效果


    浮动呈现效果

2.浮动的特性

  • 设置左右浮动后,元素会尽量往左往右靠拢,当元素碰到父级元素的边框或者另一个同级元素的边框时就会停下来
  • 在一个块级元素里,若设置前面的元素设置了浮动时,后面的元素不设置浮动时,后面的元素会收到影响,会环绕包裹浮动的元素
文字环绕效果

3.清除浮动 (clear)

  • 因为设置浮动时,前面设置浮动的元素会影响后面没有设置浮动的元素(环绕效果),而清除浮动会清除浮动元素对没有浮动元素的影响(清除环绕效果)
clear属性值
3.1 清除左边浮动(clear:left;)
  • 只是清除左边浮动的元素对元素块产生的影响,相当于清除文字对左边浮动元素的环绕效果,但是依旧会环绕右边浮动的元素
清除左边浮动效果图
3.2 清除右边浮动(clear:right;)
  • 只是清除右边浮动的元素对元素块产生的影响,相当于清除文字对右边浮动元素的环绕效果,但是依旧会环绕左边浮动的元素
清除右边浮动效果图
3.3 清除两边浮动(clear:both;)
  • 清除元素块两边的浮动效果,相当于对两边的元素都不产生环绕效果
清除两边浮动效果图

四、解决父级边框塌陷的方法

  • clear属性可以清除浮动对其他元素造成的影响,可是依然解决不了父级边框塌陷问题,下面介绍防止父类塌陷的四种方法,下图为父类塌陷的示例图
父类塌陷示例图

1.浮动元素后面加空div

  • 代码

    <div id="father">
      <div class="layer01"><img src="image/photo-1.jpg" alt="日用品" /></div>
      <div class="layer02"><img src="image/photo-2.jpg" alt="图书" /></div>
      <div class="layer03"><img src="image/photo-3.jpg" alt="鞋子" /></div>
      <div class="layer04">浮动的盒子可以向左浮动,...</div>
      <div class="clear"></div>
    </div>
    
  • 效果图
    浮动元素后面加空div的方法并不明显


    加空div效果图

2.设置父元素的高度

  • 代码

    #father {
        border:1px #000 solid;
        height: 420px;    /*设置父类元素的高度*/
    }
    
  • 效果


    设置父类元素高度效果图

3.父级添加overflow属性

3.1 overflow溢出处理
overflow属性值
  • visible值
    默认值。内容不会被修剪,会呈现在盒子之外

      overflow: visible;
    
visible效果图
  • hidden值
    内容会被修剪,并且其余内容是不可见的

      overflow: hidden;
    
hidden效果图
  • scroll值
    内容会被修剪,但是浏览器会显示滚动条以便查看其余内容

      overflow: scroll;
    
scroll效果图
  • auto值
    如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容

      overflow: auto;
    
auto效果图
3.2 添加overflow属性防止父类塌陷
  • 代码
    在父类属性css代码中设置overflow: hidden;

    #father {
        border:1px #000 solid;
        overflow: hidden;    /*在父类属性里面设置overflow: hidden; */
    }
    
  • 效果图


    添加overflow后效果图

4.父级添加伪类after

  • 代码

    /*设置父类class="clear*/
    .clear:after{
        content: '';    /*在clear类后面添加内容为空*/
        display: block;    /*把添加的内容转化为块元素*/
        clear: both;    /*清除这个元素两边的浮动*/
    } 
    
  • 效果图


    添加伪类after效果图

5.四种方法的小结

5.1 浮动元素后面加空div
  • 简单,空div会造成HTML代码冗余
5.2 设置父元素的高度
  • 简单,元素固定高会降低扩展性
5.3 父级添加overflow属性
  • 简单,下拉列表框的场景不能用
5.4 父级添加伪类after
  • 写法比上面稍微复杂一点,但是没有副作用,推荐使用

五、inline-block和float的区别

1.display:inline-block

(1)可以让元素排在一起,并且支持宽度和高度,代码实现起来比较方便
(2)位置方向不可控制
(3)IE 6、IE 7上不支持
(4)会有空隙,空隙是浏览器默认设置的元素样式
display效果不足的地方

2.float

(1)可以让元素排在一行,并且支持高度和宽度,可以决定排列方向
(2)float 浮动以后元素脱离文档流,会对周围的元素产生影响,必须在它的父类上添加清除浮动的样式
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351