修正IE下使用CSS屬性overflow的bug_經驗交流

來源:互聯網
上載者:User
我們要建立一個測試用HTML檔案,以下是關鍵的代碼片斷

複製代碼 代碼如下:

<div> 
    <pre><code> 
        <a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/" rel="license">遵守我的著作權</a> 
        <a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/" rel="license">遵守我的著作權</a> 
        <a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/" rel="license">遵守我的著作權</a> 
        <a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/" rel="license">遵守我的著作權</a> 
        <a href="http://creativecommons.org/licenses/by-nc-sa/2.5/cn/" rel="license">遵守我的著作權</a> 
    </code></pre> 
</div> 
在以上代碼中我將應用以下CSS

複製代碼 代碼如下:

div{ 
   width: 60%; 


pre{ 
   overflow : auto ;  
   background-color : #fff0f5 ; 
   margin : 1.6em 0 ; 
   padding : 0 1.6em ; 


以上代碼在Firefox中的顯示是可以預料的。

但是在IE6中,沒有任何 overflow 效果能夠顯示出來

圖1 IE6下的效果

而在IE7中的顯示也有些不同,多了一個惹人討厭的右側捲軸

圖2 IE7下的效果

IE6的bug可以通過給containing block添加width的方法解決,即

複製代碼 代碼如下:

pre{ 
    overflow : auto ; 
    background-color : #fff0f5 ; 
    margin : 1.6em 0 ; 
    padding : 0 1.6em ; 
    width : 90% ; 


此時,IE6的捲軸出來了,但是它與IE7表現的一樣,多了一個右側捲軸。

多一個右側捲軸的原因在於:IE總是將底部捲軸添加在元素的總高度的內部,這樣使得元素的一部分高度被底部捲軸佔據,不能完全顯示,所以IE就自動添加了右側捲軸使得元素被擋住的內容也能夠滾動後看到 。

最後為了去除IE右側的捲軸,我們給containing block添加以下CSS
複製代碼 代碼如下:

pre{ 
    overflow : auto ;  
    background-color : #fff0f5 ; 
    margin : 1.6em 0 ; 
    padding : 0 1.6em ; 
    width : 90% ; 
    overflow-y : hidden ; 


這樣我們就在IE中創造出了和Firefox、Opera和Safari同樣的 overflow : auto 效果。

在實際應用中,這一效果可以應用於所有固定格式的元素(通常為 pre 元素),最常見的是代碼塊。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.