IE8半透明不顯示出文字


今天發現原生IE8下面有一個神奇的bug,為什么這里說是原生IE8呢,因為我們在檢查頁面時,如果裝了IE9,大多數都只是會調出IE8模式來使用。
曾經我也非常相信這樣的調試是准確的,因為畢竟是微軟自帶的東西,沒理由會搞出差異化。直到今天,我發現事實並不是這樣的。
大家可以拷貝下面的代碼自己查看一下,就會知道。(推薦使用虛擬機,XP自帶的IE6升級到IE8 ,或WIN7自帶的IE8)。

<!DOCTYPE HTML>
<html lang="zh">
<head>
    <style type="text/css">
        .wrap {
            overflow: hidden;
        }
        .box {
            height: 28px;
            overflow: hidden;
            background: black;
            filter: Alpha(opacity=90);
            background: rgba(0,0,0,0.9) none repeat scroll 0 0;
            color: #FFF;
        }
    </style>
</head>
<body>
     <div class="wrap">
        <div class="box">
                <div id="J_wrap_1"></div>
        </div>
    </div>
    <script type="text/javascript">
    /*在IE679下可以正常顯示計時器的數字,唯獨IE8是不顯示,在IE8下按Ctrl+a卻可以看到,
    要用原生的IE8看,不要用IE8+的IE調到IE8模式,也因為這個bug我不敢再相信IE8模式了*/
        var i = 1,
            w1 = document.getElementById('J_wrap_1');

        setInterval(function() {
            w1.innerHTML = i;
            i++;
        }, 1000);
    </script>
</body>
</html>

前端總有解不完的bug,總有可能把你之前建立的三觀徹底改變。
我嘗試把樣式中的.wrap{overflow:hidden;}去掉,發現可以顯示了。但這個樣式在我的頁面中是必須的啊,不能去掉。
於是我恢復回這句,用了第二種方法,給.box{}加入一句width:200px。又或者給#J_wrap_1加一個float:left,都發現可以顯示,但是從2開始顯示。
前端工程師總有那么一點完美主義和帶有一些好奇心理,我用盡各種辦法,依然未能搞定這個bug,唯有用第二種方法了。
又或者改變一下HTML結構,不把數字放在半透明層里。
如果大家有什么好方法,回復我,小弟感激不盡。

除了提出這個bug之外,還提醒大家不要迷信IE9的IE8模式或IE10的IE8模式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM