浏览器兼容 - zzwind's Blog

ie6 position relative

 

<style type="text/css">
#div1{position:relative;text-align:center;}
#div2{position:absolute;left:0;top:0;}
</style>
<div id="#div1">
  <div id="#div2">
     zzzzzzz
  </div>
</div>

这个时候#div2  在IE6下 也会居中显示

只要给#div1  加上width:100%;   

#div2  就会乖乖的去左上的位置了

IE6 Doubled Float-Margin Bug(空白边加倍)

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <title>Untitled Document</title>
        <style>
            #c{
                width:400px;
                height:300px;
                border:2px solid red;
                margin:100px;
                margin-bottom:0px;
               
            }
            .f{
                float:left;
                margin:20px;
                width:100px;
                height:100px;
                border:2px solid black;
                display:inline;
            }
        </style>
    </head>
    <body>
        <div id="c">
            <div class="f" id="s1"></div><div class="f" id="s2"></div>
        </div>           
    </body>
</html>

现象描述:
在IE7,FF3中浏览该页面发现s1和c之间的距离是20px(与预期相同),s1和s2之间的间距也是40px(与预期相同);而在IE6中浏览该页面发现s1和c之间的距离是40px(距离翻倍了),s1和s2之间的间距是40px(与预期相同)。

现象分析:
1. s1和s2之间没有发生空白边叠加效应是因为s1和s2都是浮动元素,而空白边叠加效应是不会再浮动元素之间生效的;
2. 在IE6中s1和c之间的距离预期是20px,但结果是40px,是预期的两倍,视为IE6 BUG。

得出的结论:
IE6中与容器(示例中为c)相邻的浮动元素(示例中为s1)空白边会翻倍;但是浮动元素之间空白边表现正常(s1和s2之间的间距是40px,不是 60px或者80px);同时发生空白边翻倍的那条边应该与浮动方向相同,例如如果是float:left,那么就是margin-left空白边翻倍, 但margin-right表现正常。

解决办法:
对于浮动元素添加一个CSS属性display:inline即可

解决方案分析:

对于设置了float属性(及其必须是left或者right)的元素将会变成block元素,不管设置浮动属性的元素原来是inline还是block,因此给浮动元素添加display:inline样式是不会带来任何负面效应的。浏览器会忽略该属性(设置了float属性的元素必然是block类别的元素),因此该方案不会有对原来的布局有任何影响。

 

 

 




Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee