IE6父级使用padding后子元素绝对定位的BUG

本文探讨了在使用CSS的position:absolute属性进行元素定位时,IE6浏览器与其他现代浏览器表现不一致的问题,并提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在前端开发中,经常会用到css的position:absolute来使层定位,前通过left,top,right等属性来对层进行定位,但ie6对left,top,right等属性的解释和ie7,ie8及firefox、chrome等不一致。

       在父层使用position:relative;和padding(0值除外)后,ie6中层的定位起始坐标是从padding后的位置算起,而其他则从 层的真实位置算起,而非被padding改变后的那个位置。这点造成使用position:absolute进行层定位时ie6与其他浏览器的表现不一 样。

  

未标题-1

 

  目前解决办法,使用csshack,_left针对ie6进行重设。

  首先看问题的产生,HTML和CSS如下:

  1. <div style="position:relative; padding:20px; border:2px solid #F00;"> 
  2. <div style="position:absolute; top:0; left:0; border:1px solid #690;">test box</div> 

  显示如图:

  

 

  IE6.0与其他主流浏览器的盒模式是一样的我真不敢苟同,我始终觉得IE6的盒模式就是和其他主流浏览器盒模式存在差异,如果是一样的,那么试问这个例子IE6为什么会和其他浏览器不同呢?

  虽然相对定位的父级容器加宽度,高度,zoom:1都能使本来中定位的test box圆点和其他主流浏览器一致,例如:

  如图:

  

 

  注:这里如果加宽度和zoom:1,padding-top:20px和padding-bottom:20px的效果就没了,如图:

  1. <div style="position:relative; padding:20px; border:2px solid #F00;height:20px"> 
  2. <div style="position:absolute; top:0; left:0; border:1px solid #690;">test box</div> 

  

 

  如果在实际项目中定死高度的,那么加个高度是很好的选择,但是杯具的是往往很多时候这个高度是自动撑的,那么我还是觉得用hack方式比较好!比如:

  1. <div style="position:relative; padding:20px 20px; border:2px solid #F00;"> 
  2. <div style="position:absolute; top:0;_top:2px; left:0;_left:-20px; border:1px solid #690;">test box</div>

转载于:https://www.cnblogs.com/icss/archive/2011/06/17/2083558.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值