float 浮动布局对inline-block block inline 之前的相互影响

float 浮动布局对inline-block block inline 之前的相互影响.

情况一.
上面是一个 inline 元素, inline 后面(代码级别)是一个 float 元素.

<span>我是一个 span 元素 是一个 inline 元素,由于屏幕宽度很宽,所以,我应该只占一行。</span>
    <div class="float">

    </div>
inline-span up -- down div - float

结论:

inline 元素被float 元素遮挡了一行.但并没有遮挡住文字!!!!!但并没有遮挡住文字!!!!!但并没有遮挡住文字!!!!!

情况二
上面是一个 inline 元素, inline 里面的文字很多,在浏览器视口(viewport)里会出现换行.

<span>我是一个 span 元素 是一个 inline 元素,我的文字很多,所以在屏幕里一定不只会只占一行。我是一个 span 元素 是一个 inline 元素,我的文字很多,所以在屏幕里一定不只会只占一行。我是一个 span 元素 是一个
        inline 元素,我的文字很多,所以在屏幕里一定不只会只占一行。我是一个 span 元素 是一个 inline 元素,我的文字很多,所以在屏幕里一定不只会只占一行。我是一个 span 元素 是一个 inline 元素,我的文字很多,所以在屏幕里一定不只会只占一行。我是一个
        span 元素 是一个 inline 元素,我的文字很多,所以在屏幕里一定不只会只占一行。我是一个 span 元素 是一个 inline 元素,我的文字很多,所以在屏幕里一定不只会只占一行。我是一个 span 元素 是一个 inline
        元素,我的文字很多,所以在屏幕里一定不只会只占一行。我是一个 span 元素 是一个 inline 元素,我的文字很多,所以在屏幕里一定不只会只占一行。我是一个 span 元素 是一个 inline 元素,我的文字很多,所以在屏幕里一定不只会只占一行。</span>

    <div class="float">

    </div>
有很多文字的 span,在 viewport 里肯定会换行的情况

结论:

inline 元素被 float 浮动元素这样了最下面一行.

情况一和情况二的综合结论:

  1. 当float 的前一个元素是 inline 时, float 元素会遮挡 inline 一行,也就是会上浮一行的距离..
  2. float 元素不管怎么遮挡,都无法遮挡文字.

情况三:
上面是一个 block 元素,下面是一个 float 元素.

div.float {
            float: left;
            width: 200px;
            height: 200px;
            background: red;
        }

        div.normal{
            background:orange;
            height: 200px;
        }

<div class="normal"></div>
<div class="float"></div>
上面是一个普通的 block,下面是一个 float

结论三:
当上面是一个 block 元素时,后续的 float 元素好像是直接满足了文档流的默认排列规则,向下顶齐排列的.

情况四:
上面是 float 元素,下面是 block 元素,(也就是 block 元素被浏览器后解析)

div.float {
            float: left;
            width: 200px;
            height: 200px;
            background: red;
        }

        div.normal{
            background:orange;
            height: 200px;
        }

 <div class="float"></div>
 <div class="normal"></div>
 
上面是一个 float,下面是一个 block

结论四:
当上面是一个 float 元素时, normal 的 block 元素仿佛无视或者说看不见这个 float 元素一样,还是我行我素的按照默认的文档流规则排列,且排在了 float 元素的下面.

情况五
上面是 inline-block 元素,下面是 float 元素.

    div.inline-block {
            width: 500px;
            height: 300px;
            background: orange;
        }
        
        div.float {
            float: left;
            width: 200px;
            height: 200px;
            background: red;
        }

    <div class="inline-block"></div>
     <div class="float"></div>
上面是 inline-block ,下面是 float

结论五:
当上面是 inline-block ,下面是 float 元素时, float 元素好像又满足文档流的默认布局规则,向下顶齐排列了.
block 和 inline-block 一样,如果是在上面,那么下面出现的浮动元素就不会顶格去渲染.

情况六:
上面是 float ,下面是 inline-block.

上面是 float ,下面是 inline-block

结论六:

当 float 在上面时(浏览器先解析), inline-block 就和 block 一样,仿佛看不见这个元素一样,仍然我行我素的按照自己的规则排列.

情况三,四,五,六总结

  1. 在渲染 UI 时 float "看的见" inline-block & block,而 inline-block & block 则"看不见" float.
  2. float 在布局时会查看之前的元素是否是 inline-block & block ,如果是就不会去遮挡他们.
  3. block & inline-block 则完全忽视 float 元素的存在(float元素已经脱离文档流了.),按照自己既定的规则去布局.

最后总结

  1. float 元素可以影响 inline 元素.不管 inline 元素在 float 之前还是之后.
  2. block & inline-block 元素布局是不在乎 float 元素在哪的.原因是 float 元素本身脱离了浏览器默认解析的文档流.它俩在某种程序上可以理解成看不见 float 元素.
  3. float 元素在布局时,是看的见 block & inline-block 元素的.如果 float 元素先解析,那么由于后两者看不见前者,所以就被 float 元素挡住了.( float 怪我咯~). 如果 float 元素在后,那么它不会去主动阻挡 block & inline-block 元素.

利用第3点, block & inline-block 元素看不见 float 元素的特性,做一个横向并列的三格排列.

div.parent {
            width: 1100px;
            height: 200px;
        }

        div.left {
            width: 300px;
            height: inherit;
            background: red;
            float: left;
        }

        div.right {
            width: 300px;
            height: inherit;
            background: yellow;
            float: right;
        }

<div class="parent">
        <div class="left"></div>
        <div class="right"></div>
        <div class="content"></div>
    </div>

利用block"看不见float"的特性来做一个三格横向排列的 demo

为什么 div.right 需要放在 div.content 的前边?

因为由于 div.right 是浮动浮动元素,如果放在 div.content 的后边,那么它布局的时候就会受到 div.content 的影响.也就是说 float 元素布局会受到 block 元素的影响.

float 放在 block 后面会受到影响

导致的原因,还是因为 float 元素看得见block元素造成的.如果 float 元素前面是一个 block 元素,那么它自身的排列就会受到 block 元素的影响.
但是反过来, block 元素完全就忽视了 float 元素的存在.为了不让 float 元素被 block 元素影响,所以需要将 div.right 放在 block 的前面.

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,721评论 1 92
  • 1. 前言 前端圈有个“梗”:在面试时,问个css的position属性能刷掉一半人,其中不乏工作四五年的同学。在...
    YjWorld阅读 4,414评论 5 15
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,375评论 1 45
  • 大家好,我是IT修真院武汉分院第11期的学员,一枚正直纯洁善良的前端程序员,今天给大家分享一下,修真院官网css任...
    斌仔_83e7阅读 3,680评论 0 2
  • 北京益淞堂中医医药研究院院长李永财医生,家医祖脉传承,临床习医近二十载,理论讲解与实操并重。2018年4月1日,由...
    和合正量空间阅读 1,585评论 0 0