浮动--笔记

165 阅读3分钟

浮动的本质就是为了实现文字环绕效果。而这种文字环绕,主要指的就是文字环绕图片显示的效果。在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。

    特点:
        1. 浮动元素产生了浮动流,所有产生了浮动流的元素,块级元素看不到他们
      
        2. 产生了bfc(block format context--块格式化上下文)的元素和文本类属性的元素(带有inline属性)
        以及文本都能看到浮动元素;      
            如何触发一个盒子的bfc:
                position:absoulte;
                display:inline-block;
                float:left/right;
                overflow:hidden;
                                    
        3. 如果多个元素浮动了,那么它们就会并排显示,如果是同一个方向的浮动,它们会贴在一起。
        4. 如果一个元素浮动了,先向上移动,直到贴靠到父元素的边界,接着,如果是左浮动,就向左移动,直到移动到父元素的左边界,如果是向右浮动,就向右移动,直到移动到父元素的右边界。
        5. 如果一个元素没有设置高度,它的高度是靠里面的内容撑起来的。如果父元素内部元素都浮动了,那么会造成父元素的高度塌陷。
        6,父元素高度塌陷的解决方法:显示加高度(加高法)、 overflow:hidden
        7. 如果父元素也浮动了,那么就不会出现高度塌陷。
        8. 如果元素浮动了,它也会造成对后面的兄弟元素影响。解决:clear:both/left/right
        9. 应用:实现两栏布局  导航   多个规则盒子水平排列(行内块)
        10. 当一个浮动起来的块级元素没有设置width,那么这个盒子的宽高会尽可能小,小到包裹住它里面的内容,这叫包裹性,
        11. 一个元素浮动了,它也是受父元素的控制。当父元素宽度变小时,装不下所有的子元素时,后面的子元素有贴靠性。当父元素小到极限时,里面的浮动的子元素宽度是不会改变的。

清除浮动

浮动布局容错性差,容易出现比较严重的布局问 题,还有一个原因就是 float 本身就是魔鬼属性,容易出现意料之外的情况,这里的意料之外 除了 float 属性自身特性(如父元素高度塌陷)导致的布局问题外,还包括诸多兼容性问题。

1,对父元素造成的影响
    父元素高度塌陷
        解决:显示加高度(加高法) overflow:hidden  clear:both 
            加高法:简单   基本不用   大部分情况情况下,父元素的高度是需要子元素撑起来
            overflow:hidden : 简单  使用了overflow:hidden 父元素的高度会随着子元素的高度变化而变化    overflow:hidden本职工作是用来处理溢出  在使用过程中,需要注意:子元素如果想要超出父元素高度,此时overflow:hidden就不适合了。
            clear:both 在所有子元素后面加一个空的div 在这个div上面加clear:both  ---> 内墙法
            优点:简单,代码少,浏览器支持好,不容易出现怪问题 缺点:如果页面浮动布局多,就要增加很多空div
2,对后面兄弟元素造成的影响
    兄弟元素会向上移动
        解决:在受影响的元素上面的加 clear:both

    项目中最常用清除浮动的方法: 利用伪元素after 
        .clear:after{
        content=""; 
        display:block; 
        clear:both; 
        height:0; 
        }