关于行内块元素和浮动元素的位置关系

各位大佬,请问下如果父盒子里面有个浮动元素和一个行内块元素,为什么行内块元素会避开浮动元素的空间?而不是占据它的空间(block元素会占据其空间)
代码如下:

<body>
    <div class="box">
        <div class="c1"></div>
        <div class="c2"></div>
    </div>
</body>


.box {
    width: 500px;
    height: 300px;
}

.c1 {
    width: 100px;
    height: 100px;
    background-color: red;
    float: left;
}

.c2{
    width: 200px;
    height: 200px;
    background-color: blue;
    display: inline-block;
}

效果如下:
图片描述

阅读 4.5k
1 个回答

先来看下 display属性中不同值的区别:

  • block 会使其中的元素放在一个新行上
  • inline 会利用当前段落内联显示元素
  • inline-block 可以使用 widthheight 限制宽高,同时也会将元素放在它前面的内容旁边

再来看下 float 布局的说明:
float 属性允许元素四处移动,使得其他的元素可以环绕在它的周围。

回到楼主的代码看下:

  1. c1float:left 表明元素会尽可能的向左移动,以致移动到了左边界。同时 div 默认是 display:block 使它能够保持宽高设置。
  2. c2display:inline-block 使得它不会从行首开始,将 c1 环绕,而是将元素放置在 c1 元素旁边。
  3. c2 若设置成 display:block 就会使它从行首开始,将c1 包围

因此楼主说的 占据c1的空间 不太贴切,应该说是环绕在 c1 周围.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题