1. 程式人生 > >IE6瀏覽器有哪些常見的bug,缺陷或者與標準不一致的地方,如何解決

IE6瀏覽器有哪些常見的bug,缺陷或者與標準不一致的地方,如何解決

block 自動調整 script font aaa 方向 image ie6 浮動

  • IE6不支持min-height,解決辦法使用css hack:
  .target {
    min-height: 100px;
    height: auto !important;
    height: 100px;   // IE6下內容高度超過會自動擴展高度
  }
  • olli的序號全為1,不遞增。解決方法:為li設置樣式display: list-item;

  • 未定位父元素overflow: auto;,包含position: relative;子元素,子元素高於父元素時會溢出。解決辦法:1)子元素去掉position: relative;; 2)不能為子元素去掉定位時,父元素position: relative;

<style type="text/css">
.outer {
    width: 215px;
    height: 100px;
    border: 1px solid red;
    overflow: auto;
    position: relative;  /* 修復bug */
}
.inner {
    width: 100px;
    height: 200px;
    background-color: purple;
    position: relative;
}
</style>

<div class="outer">
    <div class="inner"></div>
</div>
  • IE6只支持a標簽的:hover偽類,解決方法:使用js為元素監聽mouseenter,mouseleave事件,添加類實現效果:
<style type="text/css">
.p:hover,
.hover {
    background: purple;
}
</style>

<p class="p" id="target">aaaa bbbbb<span>DDDDDDDDDDDd</span> aaaa lkjlkjdf j</p>

<script type="text/javascript">
function addClass(elem, cls) {
    if (elem.className) {
        elem.className += ‘ ‘ + cls;
    } else {
        elem.className = cls;
    }
}
function removeClass(elem, cls) {
    var className = ‘ ‘ + elem.className + ‘ ‘;
    var reg = new RegExp(‘ +‘ + cls + ‘ +‘, ‘g‘);
    elem.className = className.replace(reg, ‘ ‘).replace(/^ +| +$/, ‘‘);
}

var target = document.getElementById(‘target‘);
if (target.attachEvent) {
    target.attachEvent(‘onmouseenter‘, function () {
        addClass(target, ‘hover‘);
    });
    target.attachEvent(‘onmouseleave‘, function () {
        removeClass(target, ‘hover‘);
    })
}
</script>
  • IE5-8不支持opacity,解決辦法:
.opacity {
    opacity: 0.4
    filter: alpha(opacity=60); /* for IE5-7 */
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"; /* for IE 8*/
}
  • IE6在設置height小於font-size時高度值為font-size,解決辦法:font-size: 0;
  • IE6不支持PNG透明背景,解決辦法: IE6下使用gif圖片
  • IE6-7不支持display: inline-block解決辦法:設置inline並觸發hasLayout
    display: inline-block;
    *display: inline;
    *zoom: 1;
  • IE6下浮動元素在浮動方向上與父元素邊界接觸元素的外邊距會加倍。解決辦法: 1)使用padding控制間距。 2)浮動元素display: inline;這樣解決問題且無任何副作用:css標準規定浮動元素display:inline會自動調整為block
  • 通過為塊級元素設置寬度和左右margin為auto時,IE6不能實現水平居中,解決方法:為父元素設置text-align: center;

IE6瀏覽器有哪些常見的bug,缺陷或者與標準不一致的地方,如何解決