float

一、float 的本质与特性

float本来是为了实现文字环绕效果而设计的,但是现在被用于设定宽高的砌砖头的布局方式,稍有改动就会样式错乱,所以建议:浮动是魔鬼,少砌砖头少浮动,更多的去挖掘css世界本身的流动行和自适应性

css2的重点还是图文展示,但是现在比较流行更为绚丽饿的诗句效果和更为丰富的网页布局,所以,flex弹性盒子布局出现,让 大家不得不去以自适应的方式实现布局

float又如下的特性:

  • 包裹性 (float元素是里边子元素的最大值)

  • 块状化并格式化上下文

  • 破坏文档流

  • 没有任何的margin合并

    注意: 不要指望在float元素下使用text-align因为float会默认的让元素的display变成block或者是tablefloat会将display:inline-table变成display:table

二、float 作用机制

他有个著名的图恶性,让父元素的高度塌陷,大多数的场景下会影响正常的布局,但是要注意,这个让父元素塌陷不是缺点,不是bug,这个只是为了实现文字环绕效果才出来的,但是在今天的布局里是不需要float塌陷的,也因为这个特性可能会出现一些不一样的效果。

元素高度塌陷只是一个效果,还有另一个效果是‘<u>行框盒子和浮动元素的不可重叠性</u>’

<style>
        .point01 .father{
            width: 400px;
        }
        .point01 .floatleft{
            float: left;
        }
        .point01 .father img{
            width: 180px;
        }
         .point01 .father .div{
             width: 180px;
             height: 30px;
            background: #ccc;
        }
    </style>
    <div class="point01">
        <div class="father"><img src="./img/test.png" alt="" class="floatleft">我是文字,虽然我的兄弟元素img 已经float了,但是他并不会盖在我的上边,我绕着他走的</div>
        <div class="father"><img src="./img/test.png" alt="" class="floatleft"><div class="div">那如果我在block元素里边了呢?额···</div></div>
    </div>
image-20180515195105289.png
 <style>
        .point02{
            display: block;
        }
        .point02 .father {
            width: 200px;
            height: 64px;
            border: 1px solid #ccc;
        }
        .point02 .floatleft {
            float: left;
        }
    
        .point02 .father img {
           width: 60px;
           height:64px;
        }
    
        .point02 .father .div {
            width: 180px;
            height: 30px;
            background: #ccc;
        }
    </style>
    <div class="point02">
        <div class="father">
            <div class="floatleft"><img src="./img/test.png" alt=""></div>
            框框的高度和图片的高度一样高,由于一些额外的原因,vertical-align等的原因,图片的高度高粗框框一丢丢,同时因为不覆盖原则,所以有一行空行是被环绕的</div>
    </div>
image-20180515201833104.png

所以,一般来说我们需要用一些干净的手段来清除浮动的影响;

三、 float更深入的作用机制

  • 浮动锚点:float本身是流中的一个点,这个点本身并不浮动,表现起来更像是一个没有margin border padding的空内联元素
  • 浮动参考:浮动元素对齐的参考的实体
 <style>
        .point03 {
            display: block;
        }
    
        .point03 .father {
            width: 200px;
            
        }
        .father .more{
            float: left;
            background: #ccc;
        }
       
    </style>
    <div class="point03">
        <div class="father">
            <h3>我是一个非常长的,长到能够换行的标题元素,然后我们看看更多这个按钮在哪呢?理论上他是应该在我的后头头追加的<a class="more" href="#">更多</a></h3>
        </div>
        
    </div>
image-20180515210651840.png

float与流体布局

除了目录树,还有三栏布局如图:

 <style>
        .prev{
            float: left;
        }
        .next{
            float: right;
        }
        .title{
            margin: 0 70px;
            text-align: center;
        }
    </style>
    <div class="box">
        <a class="prev">&laquo 上一张</a>
        <a class="next">下一章&raquo</a>
        <h3 class="title">第十二章,this is test </h3>

    </div>

image-20180515212156267.png

四、float的天然克星 clear

Clear:元素盒子的边,不能和前面的浮动元素相邻

clear的值是这样的:

  • none:浮动就浮动,我也没办法
  • left:左侧不能浮动
  • right: 右侧不能浮动
  • both: 两边都不能浮动

left和both没什么卵用, 直接clear:both就好了

 <style>
        .point04{
            display: block;
            margin: 100px;
            height: 100px;
        }
    
        .point04 li {
            /* display: block; */
           list-style-type: none;
            width: 30px;
            height: 30px;
            margin: 5px;
            float: left;

            text-align: center;
            line-height: 30px;
            
            border: 1px solid #ccc;
    
        }
    
        .point04 li:nth-of-type(3) {
            clear: both;
        }
    </style>
    <div class="point04">
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
        </ul>
    </div>
image-20180515214155108.png

clear的弊端:

clear只有在块级元素才是有效的,但是::after等为元素默认是内联等,所以借用::after的时候,需要设置display:block;

 .clear::after {
            content: "";
            display: block;
            clear: both;
        }
<style>
    .point04 {
       
    }

    .point04 .father {
        /* display: block; */
       display: block;
        margin: 100px;
        height: 100px;
        width: 300px;
        border: 1px solid #ccc;

    }
      .point04 .father::after{
          contain: "";
          display: block;
          clear: both;
      }
    .point04 .father img{
        height: 100px;
        float: left;

    }
</style>
<div class="point04">
   <div class="father"><img src="./img/test02.jpeg" alt="" sr=""><!--  -->
    <div class="font">我理论上应该在右边怪怪的呆着,但是旁边突然出现了一个clear,<div style="clear:both"></div><这时候起我的其他文字就被挤下去了,其实换行后并没有真正的清楚浮动,只是换行了而已</div>
    </div>
</div>

image-20180515215449945.png

使用了clear有一些特性依然存在,就比如:

  • 如果clear:both元素前边就是float那么,margin-top负值即使是-9999px也不会有任何的作用
  • clear:both后边的元素依旧可能会发生文字环绕的现象

有时候父元素设置了clear:both组织浮动对其他元素的影响,但是最后错位依然还是有的,(就比如上图)

所以为了彻底清楚浮动,我们建议用BFC

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

推荐阅读更多精彩内容