浮动定位BFC边距合并

2017-05-31  本文已影响0人  饥人谷_啦啦啦

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

浮动元素会脱离正常的文档流,能设置的值为float:left/right;他会向左或像右移动直到触碰到父容器的框或者其他浮动元素的框为止。(受父元素padding和自身的margin影响)

假如父容器下的元素全部为浮动元素,父容器的高度将不能被撑开。

其他浮动元素会感知到浮动元素的存在,同时设置向左浮动的话,其他浮动元素会依次像右排列,但是如果造成“溢出”的现象,左浮动元素如果高度一致,会再从父元素的框排列,不一致的话,较高的浮动元素卡住浮动元素。

普通元素感知不到浮动元素的存在,视觉上会被浮动元素覆盖。但是文字会感受到float元素的存在,会形成文字环绕的效果。

2.清除浮动指的是什么?如何清除浮动,两种以上的方法。

BFC

利用BFC重构的格式化块状元素上下文规则来达到清除浮动的目的。但是又由于要把块状元素设置为符合BFC要求的块状元素会有各种各样新的问题,所以应该结合自身需要为其设置。

方法一 方法二

注: *zoom 代表ie6-7的清楚浮动的方法。zoom本身的意思是缩放比例。同样是符合BFC的。

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

目前较为常用的有三种。

固定定位,种种表现都类似于absolue;只不过定位的元素是浏览器窗口。或者说是视窗。

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

z-index属性适用于定位元素(position属性值为 relative 或 absolute 或 fixed的对象),用来确定定位元素在垂直于显示屏方向(称为Z轴)上的层叠顺序(stack order)。

z-index值越大,越在最上层。且只有在相同父元素中才能比较。

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

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

display:table也认为可以生成BFC,其实这里的主要原因在于Table会默认生成一个匿名的table-cell,正是这个匿名的table-cell生成了BFC

可以解决的问题有:

  1. 父元素生成BFC就可以包住浮动元素,达到清除浮动的目的,解决浮动元素父元素高度塌陷。

  2. 解决外边距合并问题,同处于一个BFC规则下的相邻元素、嵌套元素,只要它们之间没有阻挡(如:边框、非空内容、padding等)就会发生margin重叠。这是只要让其中一个元素生成新的BFC就能解决margin重叠问题。

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

上下相邻

这种情况合并以外边距大者为准,不管有没有外边框。

被包含

这种情况合并也是哪个大就体现哪个的外边距。如果父元素设置border,或者padding属性,则子元素的margin就能正常体现了。

自身合并

对于第一种相邻子元素的margin,可以为第一个元素或者第二个元素加上一个新的BFC外壳,如可以为第一个元素加一个absolute的父元素。

对于第二种可以为父元素创建新的BFC,或者为父元素加上padding或者border.

对于第三种自身合并直接加content就行了。

上一篇 下一篇

猜你喜欢

热点阅读