我們要建立一個測試用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 元素),最常見的是代碼塊。