饥人谷技术博客

浮动定位与BFC边距合并

2017-07-30  本文已影响21人  cce117b0a0ce

浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响?

清除浮动指什么? 如何清除浮动?

清楚浮动的目的是解决父容器高度塌陷问题。

有几种定位方式,分别是如何实现定位的,参考点是什么,使用场景是什么?

属性
inherit 规定应该从父元素继承 position 属性的值,使用场景无,一般我们不使用这个来进行定位。
static 默认值,没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)
relative 生成相对定位的元素,相对于元素本身正常位置进行定位,因此,left:20px 会向元素的 left 位置添加20px。使用场景一般是为了给子元素一个参考点,使子元素的absolute能够正常使用。
absolute 生成绝对定位的元素,相对于static定位以外的第一个祖先元素(offset parent)进行定位,元素的位置通过left, top, right 以及 bottom 属性进行规定。使用场景一般为父容器的子元素进行定位。
fixed 生成绝对定位的元素,相对于浏览器窗口进行定位。元素的位置通过 left, top, right 以及 bottom 属性进行规定
sticky CSS3新属性,表现类似position:relative和position:fixed的合体,在目标区域在屏幕中可见时,它的行为就像它的行为就像position:relative; 而当页面滚动超出目标区域时,它的表现就像position:fixed,它会固定在目标位置.

z-index 有什么作用? 如何使用?

z-index 属性指定了一个元素及其子元素的 z-order。 当元素之间重叠的时候,z-order 决定哪一个元素覆盖在其余元素的上方显示。 通常来说 z-index 较大的元素会覆盖较小的一个。Z-index只能工作在被明确定义了absolute,fixed或relative 这三个定位属性的元素中。

对于一个已经定位的元素(即position属性值是非static的元素),z-index 属性指定:

  1. 元素在当前堆叠上下文中的堆叠层级。
  2. 元素是否创建一个新的本地堆叠上下文。

position:relative和负margin都可以使元素位置发生偏移?二者有什么区别?

BFC 是什么?如何生成 BFC?BFC 有什么作用?举例说明

    <div style="border: solid 5px #0e0; width:300px;overflow:hidden;">
        <div style="height: 100px; width: 100px; background-color: Red;  float:left;">
        </div>
        <div style="height: 100px; width: 100px; background-color: Green;  float:left;">
        </div>
        <div style="height: 100px; width: 100px; background-color: Yellow;  float:left;">
        </div>
    </div>

清除浮动撑开父元素的高度

在什么场景下会出现外边距合并?如何合并?如何不让相邻元素外边距合并?父子外边距合并的范例

外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。
合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。

只有普通文档流中块框的垂直外边距才会发生外边距合并。行内框、浮动框或绝对定位之间的外边距不会合并

#d1 {
  width:100px;
  height:100px;
  margin-bottom:20px;
}
#d2 {
  width:100px;
  height:100px;
  margin-top:10px;
}

<div id="d1">
</div>

<div id="d2">
</div>
1.gif
<div class=”parent”>
    <div class=”child”>
    </div>
</div>

.parent{
    width: 200px;
    height: 100px;
    margin-top:10px;
    background-color: red;
}
.child{
       width: 100px;
       height: 100px;
       margin-top:30px;
       background-color: yellow;
 }
2.gif
#d1 {
  margin-top:20px;
  margin-bottom:20px;
}
<div id="d1">
</div>
3.gif
#d1 {
  margin-top:50px;
  margin-bottom:20px;
}

#d2 {
  width:100px;
  height:100px;
  margin-bottom: 80px;
}
<div id="d2">
</div>
<div id="d1">
</div>
4.gif

如何解决边距重叠:

  • 给对应元素加上阻挡(例如border,非空内容,padding等)
  • 利用 BFC会阻止垂直外边距折叠的特性,将对应元素转换为BFC来解决边距重叠。
上一篇 下一篇

猜你喜欢

热点阅读