修正IE下使用CSS属性overflow的bug_经验交流

我们要建立一个测试用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 元素),最常见的是代码块。

时间: 2024-10-01 13:46:54

修正IE下使用CSS属性overflow的bug_经验交流的相关文章

IE,firefox下使用CSS属性overflow的存在的不同

首先建立一个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/"

Zen Coding 快速编写HTML/CSS代码的实现_经验交流

在本文中我们将展示一种新的使用仿CSS选择器的语法来快速开发HTML和CSS的方法.它由Sergey Chikuyonok开发. 你在写HTML代码(包括所有标签.属性.引用.大括号等)上花费多少时间?如果你的编辑器有代码提示功能,你编写的时候就会容易些,但即便如此你还是要手动敲入很多代码. 在JavaScript方面,当我们想要在一个页面上获取某个特定的元素时,我们就会遇到同样的问题,我们必须写很多代码,这就变得难于维护和重用.JavaScript框架应运而生,它们同时引入了CSS选择器引擎.

div css nowrap无换行_经验交流

 例如宽度为210px的ul里   分别有4个li 这个4个li的宽度根据它们的自身内容长度为80px.120px.140px.80px.     我需要的效果是4个li向左自动排列.当第三个li和前两个li的长度之和大于ul的宽度时候 第三个li则会下移一行.在第二行显示.而不是把ul撑宽,或者是把自己撑高(内容换行,高度增加) 分别定义了ul的宽度210px和li的宽度自动,发现结果是: ul并没有被撑宽,可惜li也没有自动到下一样排列.而是内容换行,把li给撑高了.然后死皮赖脸的挤在了第一

网页布局+纯CSS纵向下拉菜单 IE6/IE7兼容_经验交流

logo banner mail 第一分类 XHTML CSS PHP MySQL Fireworks Photoshop Flash Illustrator 第一分类 XHTML CSS PHP MySQL Fireworks Photoshop Flash Illustrator 第一分类 XHTML CSS PHP MySQL Fireworks Photoshop Flash Illustrator 第一分类 XHTML CSS PHP MySQL Fireworks Photoshop

用CSS实现下拉菜单的多种方法_经验交流

菜单一 菜单一 菜单一 菜单一 菜单一 菜单一 菜单一 菜单二 菜单二 菜单二 菜单二 菜单二 菜单二 菜单三 菜单三 菜单三 菜单三 菜单三 菜单三 菜单四 菜单四 菜单四 菜单四 菜单四 菜单四 菜单五 菜单五 菜单五 菜单五 菜单五 菜单五 菜单六 菜单六 菜单六 菜单六 菜单六 菜单六

div+CSS 兼容小摘_经验交流

区别IE6与FF: background:orange;*background:blue; 区别IE6与IE7: background:green !important;background:blue; 区别IE7与FF: background:orange; *background:green; 区别FF,IE7,IE6: background:orange;*background:green !important;*background:blue; IE7,IE8兼容: <meta http

CSS Hack收集汇总_经验交流

 屏蔽IE浏览器(也就是IE下不显示) *:lang(zh) select {font:12px !important;} /*FF的专用*/ select:empty {font:12px !important;} /*safari可见*/ 这里select是选择符,根据情况更换.第二句是MAC上safari浏览器独有的. 仅IE7识别 *+html {-} 当面临需要只针对IE7做样式的时候就可以采用这个HACK. IE6及IE6以下识别 * html {-} 这个地方要特别注意很多地主都写

多浏览器css兼容分析小结_经验交流

CSS 兼容要点:  1. DOCTYPE 影响CSS 处理 . 2 .FF: div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行.  3 .FF: body 设置text-align 时, div 需要设置margin: auto(主要是 margin-left,margin-right) 方可居中.  4 .FF: 设置padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 

又一实用的常用CSS缩写语法收集_经验交流

为什么要进行CSS缩写? 在进行WEB标准网页设计时,必不可少的是写入大量的CSS语法,一般情况下我们可以通过Dreamweaver软件的"CSS样式"面板自动生成相应的CSS代码. 不过虽然软件生成的CSS代码阅读清晰易懂,但就是由于CSS对条条样式定义的清晰解释,也就使得CSS代码阅读显得冗长复杂,同时CSS代码的字节数也在增加--这对于追求高效率和完美性的人来说,是很难容忍的. 比如我们在给某元素定义填充大小时,使用到padding,当对上.右.下.左填充有不同要求时,软件生成的