1.浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响?
浮动元素会脱离正常的文档流,按照其外边距指定的位置相对于它的上一个块级元素(或父元素)显示;
如果父元素的子元素是浮动元素,如果父元素没定义高度,那么父元素就会失去高度;
其他浮动元素会感知到浮动元素的存在,如果同行可以放下则并排排列,否则会换一行排列;
对于普通元素,普通元素不会感知有浮动元素的存在,如果宽高合适,则会占用浮动元素的空间(重合);
对于文字来说,能感知浮动元素存在,如果宽高符合,就可以实现那种文本围绕图片的效果;
2.清除浮动指什么? 如何清除浮动? 两种以上方
如果一个父盒子中有一个子盒子,并且父盒子没有设置高,子盒子在父盒子中进行了浮动,那么将来父盒子的高度为0.由于父盒子的高度为0,下面的元素会自动补位,所以这个时候要进行浮动的清除。
方式1:使用额外标签法
.clear{
clear:both; }
在浮动的盒子之下再放一个标签,在这个标签中使用clear:both,来清除浮动对页面的影响.
a.内部标签:会将这个浮动盒子的父盒子高度重新撑开.
b.外部标签:会将这个浮动盒子的影响清除,但是不会撑开父盒子.
注意:一般情况下不会使用这一种方式来清除浮动。因为这种清除浮动的方式会增加页面的标签,造成结构的混乱.
方法2:使用伪元素来清除浮动(after意思:后来,以后)
.clearfix:after{
centent:"";//设置内容为空
height:0;//高度为0
line-height:0;//行高为0
display:block;//将文本转为块级元素
visibility:hidden;//将元素隐藏
clear:both//清除浮动
}
.clearfix{
zoom:1;为了兼容IE
}
方式3:使用overflow属性来清除浮动
.ovh{
overflow:hidden;
}
先找到浮动盒子的父元素,再在父元素中添加一个属性:overflow:hidden,就是清除这个父元素中的子元素浮动对页面的影响.
一般情况不会使用这种方式,因为overflow:hidden有一个特点,离开了这个元素所在的区域以后会被隐藏(overflow:hidden会将超出的部分隐藏起来).
3有几种定位方式,分别是如何实现定位的,参考点是什么,使用场景是什么?
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,它会固定在目标位置
4.z-index 有什么作用? 如何使用?
z-index 属性设置元素的堆叠顺序。拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。
z-index就是网页的z轴,用相对定位绝对定位把两个层重叠在一起,z-index的值越大,就越靠上,注意,z-index没有单位,z-index:99;这样写就够了
1.z-index仅对定位元素有效(position:relative||absolute||fixed);
2.z-index只可比较同级元素
5.position:relative和负margin都可以使元素位置发生偏移?二者有什么区别
position:relative和负margin都可以使元素位置发生偏移,二者的区别表现在:
负margin会使元素在文档流中的位置发生偏移,它会放弃偏移之前占据的空间,紧挨其后的元素会填充这部分空间;
相对定位后元素位置发生偏移,它仍会坚守原来占据的空间,不会让文档流的其他元素流入。
6.BFC 是什么?如何生成 BFC?BFC 有什么作用?举例说明
BFC是什么?
BFC(Block formatting context)直译为"块级格式化上下文"。它是一个独立的渲染区域,只有Block-level box参与, 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干。
如何生成BFC?
对元素设置以下属性就可以生成BFC:
float:left|right;
overflow:hidden|auto|scroll;
display:table-cell|table-caption|inline-block;
position:absolute|fixed;
BFC有什么作用?
一个环境中的元素不会影响到其它环境中的布局。比如浮动元素会形成BFC,浮动元素内部子元素的主要受该浮动元素影响,两个浮动元素之间是互不影响的。这里有点类似一个BFC就是一个独立的行政单位的意思。也可以说BFC就是一个作用范围。可以把它理解成是一个独立的容器,并且这个容器的里box的布局,与这个容器外的毫不相干。
简单来说可以清除浮动,还可以阻止外边距合并;
7在什么场景下会出现外边距合并?如何合并?如何不让相邻元素外边距合并?给个父子外边距合并的范例
什么场景下出现外边距合并?
1.当两个垂直外边距相遇时,它们将形成一个外边距。当margin为负值时,也会形成一个外边距,依然是外边距值当中的较大者
2.合并后的外边距的margin等于两个发生合并的外边距当中的较大者。
3.可以用overflow:hidden产生bfc来解决外边距合并;或者设置border边框;
4.http://js.jirengu.com/guvi/1/edit
代码1:http://js.jirengu.com/vane/2/edit
代码2:http://js.jirengu.com/pisu/2/edit
代码3:http://js.jirengu.com/tofo/2/edit
代码4:http://js.jirengu.com/kaso/5/edit