浮动、定位、BFC和边距合并

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

  • 浮动元素特征:

1.浮动元素脱离文档流

2.浮动元素使用块布局

3.浮动元素外边缘碰到包含框或者另一个浮动元素的框的边缘会停下

4.普通流中的文字将会围绕浮动元素

  • 影响 1.会有父元素高度塌陷的情况(子元素都浮动) 2.其他浮动元素碰到浮动元素会停下(紧贴浮动元素排列,父元素宽度不够的话会折行) 3.普通元素察觉不到浮动元素,会替代浮动元素的原本位置 4.文字可以感知浮动元素的存在,会围绕浮动元素排列

清除浮动指什么? 如何清除浮动? 两种以上方法

清除浮动是指清除浮动造成的影响。 清除浮动的方法: 1.目前最主流的方法:clearfix clearfix:after{ content:””; display:block; clear:both;} 2.overflow:hidden;或overflow:auto;(不适用于有定位的子元素且元素一部分超出容器的情况) 3.添加空标签并clear:both;(标签无语义,不提倡) 4.给浮动元素的容器添加浮动(拆东墙补西墙的做法,不提倡) 5.浮动元素后面的元素添加clear属性(高度塌陷的问题还没有解决,没有解决问题的根本—-闭合浮动,所以不提倡此方法)

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

  • inherit 规定应该从父元素继承 position 属性的值
  • static 默认值,没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)
  • relative 生成相对定位的元素,相对于元素本身正常位置进行定位,因此,left:20px 会向元素的 left 位置添加20px
  • 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顺序确定哪个覆盖另一个。具有较大z指数的元素通常覆盖较低的元素。标准流的z-index值为0. 常用于绝对定位。

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

position:relative发生偏移,但不影响文档流中其他元素的位置; 负margin发生偏移的同时,文档流中其他元素的位置伴随受影响

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

  • BFC字面意思的块级元素格式化上下文。它决定了块级元素如何对它的内容进行布局,以及与其它元素的关系和相互作用。
  • 触发BFC的方式(以下任意一条就可以) 1.float的值不为none 2.overflow的值不为visible 3.display的值为table-cell、table-caption和inline-block之一 4.position的值不为static或者releative中任何一个
  • BFC的作用 1.浮动的元素会被父级计算高度(父级触发了BFC) 2.非浮动元素不会覆盖浮动元素的位置(非浮动元素触发了BFC) 3.margin不会传递给父级(父级触发了BFC) 4.两个相邻的元素上下margin不会重叠(给其中一个元素添加一个单独的父级,然后让他的父级触发了BFC)

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

  • 发生外边距合并的三种基本情况

1.相邻的兄弟姐妹元素 2.块级父元素与其第一个/最后一个子元素 3.空块元素(如果存在一个空的块级元素,其 border、padding、inline content、height、min-height 都不存在。那么此时它的上下边距中间将没有任何阻隔,此时它的上下外边距将会合并)

  • 块的顶部外边距和底部外边距有时被组合(折叠)为单个外边距,其大小是组合到其中的最大外边距。外边距都为正值,取较大的值;都为负值,取较小的值;一正一负,取两者之和

  • 外边距合并的解决办法 1.浮动和绝对定位的元素外边距不会合并; 2.同级元素使用相同方向的外边距; 3.父子元素中使用父元素的padding,不使用子元素的margin

0%