CSS浮动、定位

这是一个基础知识,也是面试多多少少会问到的。下面我带大家梳理一下!

一、文档流的概念指什么?有哪种方式可以让元素脱离文档流?

文档流,指的是元素排版布局过程中,元素会自动从左往右,从上往下的流式排列。并最终窗体自上而下分成一行行,并在每行中按从左到右的顺序排放元素。脱离文档流即是元素打乱了这个排列,或是从排版中拿走。 
让元素脱离文档流的方法有:浮动和定位

二、有几种定位方式,分别是如何实现定位的,使用场景如何? 
CSS定位方式有四种:默认定位(static)、相对定位(relative)、绝对定位(absolute)和固定定位(fixed)

static:默认值。没有定位,元素在正常的流中,top,right,bottom,left和z-index属性无效。示例如下: 
è¿éåå¾çæè¿°

relative:生成相对定位的元素,通过top,bottom,left,right的位置相对于其正常位置进行定位。其中的相对指的是相对于元素在默认流中的位置。 
注意: 
1.将元素position属性设置为relative之后,再通过top,bottom,left,right属性对其进行相对于原来位置的偏移; 
2.元素偏移之后,他本来在默认文档流中占据的位置仍然存在,其紧挨其后的元素的定位依据它本来的位置定位; 
3.该元素偏移之后,可能存在覆盖其他元素的情况,可以使用z-index属性显示层级有限级别。 
示例: 
è¿éåå¾çæè¿°

第二个盒子元素相对于之前的位置(虚线部分)向下平移了20px,向右平移了30px。 
要想使第三个块级元素被遮挡的部分浮现出来,我们可以使用如下代码实现: 

è¿éåå¾çæè¿°

注意:使用z-index必须保证元素的样式中含有定位方式,之前忘了给box3添加定位方式,导致z-index对box3不起作用。

absolute:生成绝对定位的元素,相对于static定位外的第一个父元素进行定位。 
注意: 

1.绝对定位的元素已经脱离了文档流,普通流中其他元素的布局就像绝对元素不存在一样; 
2.绝对定位的元素的位置是相对于最近的已定位的祖先元素,如果元素没有已定位的祖先元素,它的位置就相对于body; 
3.绝对定位的框可以覆盖页面的其他元素。 
示例: 

è¿éåå¾çæè¿°

这种情况是离box2最近的父元素已定位的情况,如果离box2最近的父元素没有定位的话,示例如下:

è¿éåå¾çæè¿°

fixed:本质上是一种绝对定位,不为元素预留空间。通过指定相对于屏幕视窗的位置来指定元素的空间,且元素的位置在屏幕滚动时不会发生变化。应用于很多网站顶端的固定导航、右下角的固定广告等等。 
示例: 

è¿éåå¾çæè¿°

三、absolute, relative, fixed偏移的参考点分别是什么? 
absolute偏移的参考点是:相对于最近的已定位的父元素,如果没有,则相对于body元素; 
relative偏移的参考点是:相对于元素在普通流中的原来位置; 
fixed偏移的参考点是:相对于浏览器窗口。

四、z-index 有什么作用? 如何使用? 
z-index属性用于设置节点的堆叠顺序,拥有更高堆叠顺序的节点将显示在堆叠顺序较低的节点前面。 
**注意:**1.z-index仅对定位元素有效(position:relative||absolute||fixed); 
2.z-index只可比较同级元素

五、position:relative和负margin都可以使元素位置发生偏移?二者有什么区别? 
position:relative和负margin都可以使元素位置发生偏移,二者的区别表现在: 
负margin会使元素在文档流中的位置发生偏移,它会放弃偏移之前占据的空间,紧挨其后的元素会填充这部分空间; 
相对定位后元素位置发生偏移,它仍会坚守原来占据的空间,不会让文档流的其他元素流入。

六、如何让一个固定宽高的元素在页面上垂直水平居中? 
可以使用绝对定位和负margin,示例:
è¿éåå¾çæè¿°

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

浮动元素的特征有: 
1.块在一排显示; 
2.内联元素支持宽高; 
3.无论是块元素还是内联元素,没有宽度时默认内容撑开宽度; 
4.脱离文档流; 
5.提升层级半级。 
对其他浮动元素的影响:后浮动的元素永不会超过先浮动元素的顶端。 
对普通元素的影响:浮动元素会从文档正常流中删除,使得紧挨它的元素位置发生偏移,影响布局。 
对文字的影响:浮动元素向下延伸时,不会影响正常文本的显示,文本会相对于浮动元素进行偏移。但部分文本背景会被浮动元素遮住。

八、清除浮动指什么? 如何清除浮动? 
清除浮动指的是:在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外面而影响布局的现象,为了防止这个现象的出现而进行的CSS处理,就叫CSS清除浮动。

清除浮动的方法: 
1.使用带clear属性的空元素 
在浮动元素后使用一个空元素如<pre><div class="clear"></div></pre>,并在CSS中赋予<pre>.clear{clear:both;}</pre>属性即可清理浮动。亦可使用<pre><br class="clear" /></pre>或<pre><hr class="clear" /></pre>来进行清理。 
2.使用CSS的overflow属性 
给浮动元素的容器添加overflow:hidden;或overflow:auto;可以清除浮动,另外在 IE6 中还需要触发 hasLayout ,例如为父元素设置容器宽高或设置 zoom:1。 
3.使用CSS的:after伪元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值