绝对定位又一用法,做选项卡时好用。

绝对定位又一用法,做类似这样选项卡时非常好用,而且浏览器兼容性较好。

如下图演示:

本来是准备了本地的一个demo图片,利用wordpress上传图片时,注意底部灰线,这就是问题所在。发现这个选项卡,效果同理,用firebug查看源码,果然同理。

html结构:

  • 从电脑
  • 从媒体库

css样式:

.tab{position:relative;height: 26px;text-align:center;border-bottom:1px solid #000;}
.tab ul{position:absolute;bottom:-1px;left:0;height:25px;border-bottom:1px solid #f00;}

外层div设置position:relavite属性。
内层元素设置position:absolute属性,然后利用position:absolute;bottom:-1px;实现ul层次高于外层div,折叠在下边框在其z轴上面。

css绝对定位在ie6下的bug解决方法

position:absolute定位在IE6下存在left和bottom的定位错误问题,解决办法有三种:
1、给父层设置zoom:1触发layout;
2、给父层设置宽度(width);
3、给父层设置高度(height);

IE6中很多Bug都可以通过触发layout得到解决,以上的解决方法无论是设置zoom:1还是设置width和height其实都是为了触发layout。下列的CSS属性或取值会让一个元素获得layout:
1、position:absolute 绝对定位元素的包含区块(containing block)就会经常在这一方面出问题
2、float:left|right 由于layout元素的特性,浮动模型会有很多怪异的表现
3、display:inline-block 当一个内联级别的元素需要layout的时候就往往符用到它,这也可能也是这个CSS属性的唯一效果—-让某个元素有layout
4、width: 除auto外的任何值
5、height: 除auto外的任何值
6、zoom: 除auto外的任何值

IE6/7绝对定位元素神秘消失或被遮挡的解决

  在进行网页布局设计的时候,经常会根据需要设置相对定位,绝对以及浮动定位最近突然发现了一个奇妙的现象:IE6下绝对定位元素神秘消失或被遮挡, 首先是IE绝对定位元素神秘消失,设置的绝对定位元素,突然从IE浏览器下消失了,然而火狐能正常显示. 尝试对绝对定位元素进行清除浮动操作,IE下能显示,但是出现了莫名的留白,火狐下正常显示.至少这个现象表明,绝对定位元素在IE6下神秘消失对相邻元素的浮动定位有关.

  查了相关资料,高人有这样的解释:

  1.当绝对定位层的邻近浮动层的宽度不等于父层宽度时,以及没有清除浮动时,IE6/7,FF中显示一致;
  2.当绝对定位层的邻近浮动层的宽度不等于父层宽度时,有清除浮动时,IE6/7不显示绝对定位层,FF显示;
  3.当绝对定位层的邻近浮动层的宽度等于父层宽度时,以及没有清除浮动时,IE6不显示绝对定位层,IE7/FF显示;
  4.当绝对定位层的邻近浮动层的宽度等于父层宽度时,有清除浮动时,IE6/7不显示绝对定位层,FF显示;

  要解决这个BUG的方法也很简单,让绝对定位层不挨着浮动层放置就好了,还有个更简单的方法,在绝对定位元素和其他元素之间加一个空白的div。

  再来看看绝对定位元素神秘消失被遮挡的现象,先了解一下所涉及到的几个定位特性:
  1. 相对定位元素默认的z-index的数值是0。
  2. 当两个相对定位同时出现时,代码靠后的z-index优先。
  3. 子级遵循父级设定的z-index;如果子级设定了绝对定位、z-index,可以冲破父级显示
  看下面的代码:

 <div style=”position:relative; background:#FF0000; width:200px; height:100px;”>
     <div style=”position:absolute; background:#FFFF00; width:49px; height:50px; left:106px; top:310px; z-index:100“></div>
</div>
<div style=”position:relative; background:#000000; width:200px; height:100px;”></div>
<div style=”position:relative; background:#9900FF; width:200px; height:100px;”></div>

  代码解释:上面是三个相邻的相对定位的层,在第一个层里加了个相对其绝对定位的层,按照理论,这个绝对定位的元素是在三个相对定位元素之上的,但是,实际却没有显示。尝试设置z-index值也没有效。

  网上解决这个bug的办法一般用hack使B为负值,来降低 B 在IE下级别。但是这种方法在z-index为负值时,产生了新的ie bug按照定位的特性,ie的这个bug是可以回避。

  从表面上看下面的层 遮住了上面的绝对定位层,实际上是下面的 层遮住了绝对定位的的父级层,只要将 该父级层的z-index设定大于后面的层即可。

文章引用地址:http://www.iefans.net/ie-juedui-dingwei-yuansu-xiaoshi/ 作者:iefans