对CSS中的Position、Float属性的一些深入探讨

2020-05-06 09:08:53易采站长站整理

3)在IE6/7中设置position属性后会导致z-index属性失效

复制代码
<!– 解决方案,父元素设置一个更大的z-index值即可 –>
<div style=”z-index: 2;”>
a
<div style=”position: relative; z-index: 1;”>
b
</div>
</div>

4)行内元素在应用了position:absolute之后会改变display。

复制代码
<span style=”position: absolute; width: 100px; height: 100px; top: 10px; left: 10px; background: #fff;”>
我的display属性由inline变成了block
</span>


因此,要注意到relative是并没有改变行内元素的呈现模式,而absolute是会改变行内元素的呈现模式,如果设置了absolute并不需要显式的的将元素display改成block。

5)应用了position: absolute / relative之后,会覆盖其他非定位元素(即position为static的元素),如果你不想覆盖到其他元素,也可以将z-index设置成-1。

Fixed

在很长的时间里,这个属性值因为兼容性问题,并没有得到非常广泛的应用(IE6未实现该属性值)。fixed和absolute有很多共同点:

会改变行内元素的呈现模式,使display之变更为block。会让元素脱离普通流,不占据空间。默认会覆盖到非定位元素上。

fixed与absolute最大的区别在于:absolute的”根元素“是可以被设置的,而fixed则其”根元素“固定为浏览器窗口。即当你滚动网页,其元素与浏览器窗口之间的距离是恒定不变的。

 Float属性

float的属性值有none、left、right,有几个要点:
只有横向浮动,并没有纵向浮动。当元素应用了float属性后,将会脱离普通流,其容器(父)元素将得不到脱离普通流的子元素高度。会将元素的display属性变更为block。浮动元素的后一个元素会围绕着浮动元素(典型运用是文字围绕图片),与应用了position的元素相比浮动元素并不会遮盖后一个元素。浮动元素的前一个元素不会受到任何影响(如果你想让两个块状元素并排显示,必须让两个块状元素都应用float)。

与position的兼容性问题

1)元素同时应用了position: relative、float、(top / left / bottom / right)属性后,则元素先浮动到相应的位置,然后再根据(top / left / bottom / right)所设置的距离来发生偏移。

<div style="position:relative; float:right; left:50px; top:10px;">div</div>