IE6 下关于Position:absolute;属性对同级元素的影响问题

今天小码哥做一个专题页面的时候,碰到一个关于IE6position:absolute;属性对同级元素的margin属性有影响的问题。虽然,作为前端人员,IE6下的Bug问题,始终让人头疼不已。但生活在Zhong国的码民们只能继续忍受。

言归正传,是什么问题呢?

即:假如在一个设有position:relative;相对定位属性的div盒子里,同时放另外两个div块级元素layer2,layer3。layer2设有position:absolute;属性,layer3设有margin:30px auto;属性。在正常的标准浏览器下,layer3设置的margin属性值是可以起到效果的。但在IE6下,你会发现layer3设置的margin属性值不起作用了。

先看代码一:

<div id="layer1" style=" border:1px solid #F88; width:500px;margin:20px;position:relative;text-align:center;"> 

<div id="layer2" style="position:absolute; background-color:#ccc;width:180px;height:40px;left:0;top:0;">Absolute (layer2)</div> 

<div id="layer3" style="margin:30px auto; width:200px; height:80px; background-color:#36F;border:1px solid #ccc;">Normal Text Content (layer3)</div> 

</div>

其运行在标准浏览器及IE7+里:效果图如下

再看IE6下效果图:

在上图,我们可以看到,layer3设定的margin值,在IE6下是不起作用的。

这是怎么造成的呢?我想应该是在IE6position:absolute;属性作为浮动元素,脱离了其原本的文档流而造成的对其同级元素的影响。

我们该怎么解决该问题呢,我想按照一般人的思想就是,针对IE6下的layer3元素设定IE6 Hack,让其也加上一个position:absolute;属性,让你top值等于正常浏览器下layer3设定的margin值。

但这样,有时候感觉不是解决问题的根本方法,没有处理IE6position属性的浮动问题。

因此,小码哥也是眼手结合,在网上看到一个大神,给出的是,在设有position:absolute;属性的layer2元素外层再加一个div盒子,不用设定任何样式,让其和layer3不属同级元素。这样也就解决了,layer2元素因浮动问题对layer3元素造成的影响。

看代码二:

<div id="layer1" style=" border:1px solid #F88; width:500px;margin:20px;position:relative;text-align:center;"> 

<div><div id="layer2" style="position:absolute; background-color:#ccc;width:180px;height:40px;left:0;top:0;">Absolute (layer2)</div></div>

<div id="layer3" style="margin:30px auto; width:200px; height:80px; background-color:#36F;border:1px solid #ccc;">Normal Text Content (layer3)</div> 

</div>

看到针对layer2添加的红色div盒子了吗?就这样,省事又完美的解决了IE6下因position属性而造成的同级元素之间的相互影响的问题。

这样,在所有的浏览器下,其显示效果图如下:

除了以上问题,小码哥发现针对文字居中的text-align:center;属性,在标准浏览器及IE7+等浏览器里,其针对的对象都是内联元素才起作用。但在IE6下,该属性,对块级元素也是起作用的。呃呃呃,蛋疼啊,,,,,,

时间: 2024-10-27 04:50:46

IE6 下关于Position:absolute;属性对同级元素的影响问题的相关文章

解决IE6不支持position:fixed属性

最近在优化网站浮动广告时候遇见了IE6不支持position:fixed属性.上网收集了一下解决方案 比较好的方案就是利用css表达式进行解决 补充:CSS Expression (CSS 表达式),是一种使用动态设置 CSS 属性的方式,并且被 IE5 以上的版本所支持,但是 IE8 的标准模式已不再支持 CSS 表达式了 IE7和以上的浏览器都支持position:fixed: 之前写过一篇介绍过固定页脚的文字,那时候没在ie6下测试 方法一 <!--[if IE 6]> <styl

如何在IE6下实现position:fixed效果

如何在IE6下实现position:fixed效果:建议:尽可能的手写代码,可以有效的提高学习效率和深度.由于IE6并不支持position:fixed,所以导致很多好的效果都无法实现,但是在IE6下并不是不能够实现此中效果,下面就通过一段实例介绍一下如何实现此种效果.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="autho

IE6/IE7下绝对定位position:absolute和margin的冲突问题解决

首先我们来看一个代码: 复制代码代码如下:<div id="layer1″ style="margin:20px; border:1px solid #F88; width:400px; "> <div id="layer2″ style="position:absolute; background-color:#ccc;">Absolute (layer2)</div> <div id="la

解决ie6下不支持fix属性,模拟固定定位

1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 5 <title>模拟固定定位fix</title> 6 <style> 7 html{ height:100%; overflow:hidden;} 8 body{marg

position:absolute相对于谁定位以及当溢出时怎么隐藏

1.绝对定位元素溢出父元素,怎么隐藏问题? 通常,为了让DIV子元素超出部分隐藏,都是在父元素设置overflow:hidden,这样即可防止子元素撑开父元素,使子元素能够溢出隐藏! 但是,对于position:absolute定位的子元素,仅仅使用overflow:hidden没办法将其溢出部分隐藏,需要在父元素上也加上一个定位position:relative;才能将含有position:absolute属性的子元素进行溢出隐藏! 绝对定位元素相对的元素是它最近的一个祖先,该祖先满足:pos

position的relative和absolute属性

在对界面布局时,往往需要用到position属性.在W3C中,对position的定义是:规定元素的定位类型. 顾名思义,absolute代表绝对定位.在查阅了相关资料后,发现absolute定位是相对于其包含块(containing block)绝对定位,而这个包含块不一定是父级元素.例如,当父级元素没有设定position属性,而父级以上的某个祖先元素设了position并且不是static(默认既是static),那么设定了absolute的子元素即以此为包含块.也就是说,一个元素的包含块

IE6下png背景不透明——张鑫旭博客读书笔记

从今天开始跟着大牛张鑫旭的步伐,每天进步一点点 问题:IE6不支持png背景透明或半透明 一.可解决的方法 补充:css滤镜主要是用来实现图像的各种特殊效果.(了解) css滤镜的标识符是"filter",总体的应用上和其他的css语句相同.css滤镜可分为基本滤镜和高级滤镜两种.css滤镜分类 CSS滤镜 可以直接作用于对象上,并且立即生效的滤镜称为基本滤镜.而要配合JavaScript等脚本语言,能产生更多变幻效果的则称为高级滤镜. 只有IE可以完全的支持滤镜,Firefox支持部

让IE6也支持position:fixed

众所周知IE6不支持position:fixed,这个bug与IE6的双倍margin和不支持PNG透明等bug一样臭名昭著.前些天遇到了这个问题.当时就简单的无视了IE6,但是对于大项目或商业网站,如果有用到这个属性的时候,是不可能直接无视的.涞水县梁以纸业 如何让position:fixed在IE6中工作呢? 本文所使用的技巧是用了一条InternetExplorer的CSS表达式(expression).你不可以直接使用该表达式,因为它可能会因为缓存而不更新.解决这一点的最简单的方式是使用

通过案例理解position:relative和position:absolute

w3school过了HTML的知识之后,觉得要自己单纯地去啃知识点有点枯燥,然后自己也很容易忘记,所以便找具体的网站练手便补上不懂的知识点.position:relative和postion:absolute困扰了我快一个星期之久,网上找到的资料鱼龙混杂,刚确定“这样”的理解之后,看另一份资料,发现“这样”理解是错了,就这样不断更正,并记录下来,最终整理出这份,以备参阅. 若有错误,请指正. 下面的结果都是基于firefox38版本来测试的. position:relative相对定位 1. 如