1.浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响?
特征:脱离普通流,不占用空间
影响:
- 父容器
不能撑开父容器
- 其他浮动元素
其他浮动元素能够感知浮动元素的存在,并且在父级宽度不够的时候会自行向下寻找能放得下自己的位置;如果浮动元素的高度不同,那么向下移动的时候可能被卡住 - 普通元素
不能感知浮动元素的存在,在表现形式上会被浮动元素遮挡。 - 文字
文字能感知浮动元素的存在,当文字较多时会呈现环绕浮动元素排列。
再多打1看结果
2.清除浮动指什么? 如何清除浮动? 两种以上方法
- clear属性,属性的left,right,both,none表示框的哪些边不挨着浮动框,只对自己生效。
注意,不要同时给一个元素同时设置float和clear - 在所有浮动元素下加一个空的标签,不一定是div
<div style="clear:both;"></div>
or
<div style="clear:left;"></div>
- BFC清除浮动
- float为 left right
使父容器长度缩短;父容器float解决了其塌陷问题,那么父容器的父容器怎么办?- overflow为 hidden auto scroll
影响滚动条和绝对定位的元素- display为 table-cell table-caption inline-block
依然没有解决低版本IE问题,display:inline-block会使父容器长度缩短- position为 absolute fixed
改变元素的定位方式
- hasLayout 给父元素添加类名clearfix
.clearfix{
*zoom:1;
} IE6,7
.clearfix:after{
content:"";
display:table;
clear:both;
} IE8以上
3.有几种定位方式,分别是如何实现定位的,参考点是什么,使用场景是什么?
- inherit
从父元素继承position属性的值
一般不用 - static
默认值,没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明) - relative
生成相对定位的元素,相对于元素本身正常位置进行定位
属性值:left, top,right ,bottom
应用于对其自身进行细微调整 - absolute
生成绝对定位的元素,相对于static定位以外的第一个祖先元素(offset parent)进行定位
属性值:left, top,right ,bottom - fixed
生成绝对定位的元素,相对于浏览器窗口进行定位。
属性值:left, top,right ,bottom
需要一直停留在窗口的元素,例如 - sticky
兼容性较差,一般用JS实现
新的css3属性,它的表现类似position:relative和position:fixed的合体,目标区域在屏幕中可见时,它的行为就像position:relative; 而当页面滚动超出目标区域时,它的表现就像position:fixed,它会固定在目标位置。
如果同时定义了left和right值,那么left生效,right无效,同样,同时定义了top和bottom,top赢
4.z-index 有什么作用? 如何使用?
相对定位绝对定位的元素,可以通过z-index属性控制叠放顺序,z-index越大,元素位置越靠上。
取值:auto,正值,负值,0
z-index:0 和z-index:auto区别
- z-index:0会创建一个新的层叠上下文,而auto 不会
- 另外0 会在auto 上面
5.position:relative和负margin都可以使元素位置发生偏移?二者有什么区别
position:relative
相对自己原本的位置偏移,不影响其它普通流中元素的位置。margin:除了让元素自身发生偏移还影响其它普通流中的元素。
6.BFC 是什么?如何生成 BFC?BFC 有什么作用?举例说明
BFC:块级格式化上下文
特征:
- BFC会阻止垂直外边距(margin-top、margin-bottom)折叠
同属于一个BFC时,相邻元素,嵌套元素可能发生垂直Margin的重叠,只要他们之间没有阻挡(例如边框,非空内容,padding等)
对于嵌套元素来说,只要把父元素设为BFC就可以了。这样子元素的margin就不会和父元素的margin发生重叠
BFC不会重叠浮动元素
BFC可以包含浮动
生成 BFC
第二题中的BFC清除浮动
利用float生成BFC阻止粉色div和红色 div的margin重叠
7.在什么场景下会出现外边距合并?如何合并?如何不让相邻元素外边距合并?给个父子外边距合并的范例
父子元素,相邻元素中间没有阻挡(边框,非空内容,padding)则会出现外边距合并,合并时按照两者中外边距较大的为准。形成bfc可以阻止外边距合并
例子:第6题中红色和黄色中间的外边距就进行了合并。