`

CSS浏览器差异、BUG总结

 
阅读更多

DOCTYPE 影响 CSS 处理

IE6经典Bug之双倍边距

1.   现象:

这个bug非常常见,如果发现IE6里的某个距离变大,首先考虑是否是双倍边距问题。IE6双倍边距即IE6下的margin值翻倍,即:假如设置的属性是margin-left:20px,那么在ie6中的效果就是margin-left:40px

注意:padding也是同样,也是同样处理

2.   出现条件:

1、存在于父元素与子元素之间

2、子元素同时设置了浮动和外边距属性

3、并且浮动方向与外边距方向一致(如:同时设置了margin-leftfloat:left

3.   解决办法

divdisplay设置为inline

Margin加倍的问题

设置为floatdivie下设置的margin会加倍。这是一个ie6都存在的bug
解决方案是在这个div里面加上
display:inline;    
例如:

<div id=”imfloat”>    
相应的css
    
#IamFloat
{
float:left; margin:5px;/*IE6
下理解为
10px*/ 
display:inline;/*IE6
下再理解为
5px*/
}  

IE6DIV高度小于10px时高度无效。

我们只要把字体设为0就可以解决。
例如:.mm{height:3px; font-size:0}

IE6div图片下边4px空隙bug的解决办法

<div><img/></div><a><img/></a>这种情况经常见:IE6点击图片时虚框会多出个尾巴来

1、设置父对象的文字大小为0px

#bannerPic{

    font-size: 0px;

}

即,在#sub中添加一行:font-size:0;可以解决问题。但这也引发了新的问题,在父对象中的文字都无法显示。就算文字部分被子对象括起来,设置子对象文字大小依然可以显示,但在CSS效验的时候会提示文字过小的错误。

  2.或者

#bannerPic img{

  display: block;

}

移除超链接的虚线

 FireFox,当你点击一个超链接时会在外围出现一个虚线轮廓这很容易解决只需要在标签样式中加入:

a{ 
outline: none; 
}

并且为了去掉IE6,IE7中的虚线,同时应加以下代码:IE6下常见哦!!

<a id="test" href="#" hidefocus="true">去掉虚线框</a>

(jquery)

    $(function(){

        $("a").attr("hideFocus",true);

    });

行内、外元素

 行内元素包括: <span>, <a>, <strong>  <em>. 块元素包括<div>, <p>, <h1>, <form><li> . 如果你给一个行内元素定义宽度、pading,那么它只是在IE6下有效所有的HTML元素要么是行内元素要么就好是块元素你不能定义行内元素的宽度为了解决这个问题你可以将行内元素转变为块元素.

span { width: 150px; display: block }

blockinline两个元素:
block
元素的特点是,总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素
);
Inline
元素的特点是,和其他元素在同一行上,不可控制(内嵌元素);    

! important

div{margin:30px!important;margin:28px;}

注重这两个margin的顺序一定不能写反,据阿捷的说法!important这个属性IE6不能识别,但别的浏览器可以识别。所以在IE6下其实解释成这样:

div{maring:30px;margin:28px}

重复定义的话按照最后一个来执行,所以不可以只写margin:XXpx!important;

 

包含floatbox的高度自动适应

当包含floatbox的时候,高度自动适应在IE下无效,这时候应该触发IElayout私有属性(万恶的IE啊!)zoom:1;可以做到,这样就达到了兼容。

例如某一个wrapper如下定义:

以下为引用的内容:

.colwrapper{

overflow:hidden;

zoom:1;IE6必须使用这句话)

margin:5px auto;

}

让固定宽度的页面居中

为了让页面在浏览器居中显示需要相对定位外层div, 然后把margin设置为auto.

#wrapper { 
margin: auto; 
position: relative; 
}

只要外层有一个DIV居中就可以了,DIV里面的其它DIV宽度写死就可以

不定长度的浮动元素居中

我的做法是把他们放在一个固定宽度的DIV中,让固定宽度的DIV居中就可以了

css的优先级,

一个标签选择器1分,一个类选择器10分,一个id选择器100,一个行内样式1000,!important就当无限分吧,呵呵。分值相同时按后出现优先的原则算

CSS优先级【特例:背景】

外部文件background:url(图片1)

文件内部:background:url(图片2)

最终显示是:图片1

鼠标样式:cursor: pointer

可以同时在 IE FF 中显示游标手指状, hand IE 可以

IElist-style-typeborder-style支持不全

给元素设置background-color背景色时,IEcontent+paddingfirefoxcontent+padding+border

IEFirefox处理margin处理区别

倘若设定了父元素的高度,如果此时子元素的高度超过了父元素设定的高度,二者显示不同。

IE:父DIV的高度值小于子块的高度加上margin的值,此时IE会自动扩大,保持子元素的margin-bottom及父元素的padding-bottom

Firefox:它会保证父元素的高度值完全吻合,而这时子元素将超过父元素的范围。10-12.html

IE6IE7及火狐不支持positionfixed

IE6无法触发a:hover【情况一】

<a>test</a>像这种无法触发hover,必须<a href>即必须加上href才行

IE6无法触发a:hover【情况二】

a:hover{color:#F00;}

<a href="?">鼠标经过时改变我的颜色</a>

以上是正确的。

a:hover em{color:#F00;}

<a href="?">鼠标经过时改变我的<em>颜色</em></a>

以上IE6无法识别。

解决方案:只需要再添加一个a:hover{}样式就可以解决这个问题了,里面可以是zoom, padding, margin等属性。如下:

a:hover{zoom:1;}

a:hover em{color:#F00;}

<a href="?">鼠标经过时改变我的<em>颜色</em></a>

其实:不论你在a:hover{}写入任何属性,color啊,font-size啊,overflow啊(甚至是不存在的属性,如xx:yyy),都可以

DIV垂直居中问题

vertical-align:middle; 
将行距增加到和整个DIV一样高 line-height:200px; 
然后插入文字,就垂直居中了。缺点是要控制内容不要换行。

也可以放span,即行内元素不能块

DIV水平居中问题

div设置 margin-left, margin-right auto 时已经居中。

如果还不行,就给加个边框,有可能边框已经居中,只是边框太宽了。

各浏览器的BUG列表网址

http://developer.51cto.com/art/200908/143733.htm

min-height

IE6不认min-height,IE7,IE8FF识别,利用以上这些属性,我们可以这样定义最小高度

Html代码

  1. <style rel="stylesheet" type="text/css">  
  2. <!--
  3. .content{background:#a5a5a5;height:auto!important; height:500px; min-height:500px;}
  4. -->  
  5. </style>  

<style rel="stylesheet" type="text/css">

<!--

.content{background:#a5a5a5;height:auto!important; height:500px; min-height:500px;}

-->

</style>

我是这样理解这段代码的:

因为在IE里(包括IE6,IE7)认为height就是最小高度,当content中的内容超出设置的高度时,在FF中可以用min-height设置最小高度××,这时即使超出content的高度,背景颜色也会自动延伸下去。但IE不识别min-height,所以要加hack(对程序所作的修改,在尚未被开发者接受并集成到正式版本中之前被称为hack)。

这个常用于:          

框架:<iframe id="queryDetailFrame"

                                        name="queryDetailFrame_Name"

                                        allowtransparency="true"

                                        height="450"

                                        >

</iframe>

子页面:<body style= "width: 100%;background-color: #FFF;height:auto!important;height:450px;min-height: 450px;">

而子页面的高度小于500,则多出的颜色就会被其它颜色填充如外部的html{background颜色},这时要利用min-height使得子页面有个最小高度,即450px

表格样式

Border样式只能用在td,而不能tr

 

Iframe嵌套间隙过大之间的间隔调整为大概5-6px

设置iframe的属性   marginheight= "0 "   marginwidth= "0 "

 

 

分享到:
评论

相关推荐

    浅谈各种浏览器下的CSS Hack兼容性写法

    由于不同浏览器所遵循...CSS Hack技术,就是利用不同浏览器不同版本之间的CSS实现的特性差异,来满足我们需要的效果:在所有主流浏览器上显示统一的效果,或者为特定浏览器显示特定的效果。 众所周知,如果在一个css样

    CSS样式表教程:浏览器默认样式

    也许一个很漂亮的CSS样式表在一个浏览器上表现良好,在另外一个浏览器上即使是没有CSS Bug的情况也会变得结构混乱起来,我都是浏览器默认样式在作怪。 因此,我们在生成CSS样式规则的时候,一个必做的步骤就是重设...

    css Sub-Pixel Bug?!

    jQuery之父John Resig写过一篇《Sub-Pixel Problems in CSS》,一个50px宽的div中有4个float的div,每个宽25%,然而各个浏览器对50*25%的理解有些纠结(demo): 随后Steven Wittens的《CSS Sub-pixel Background ...

    火狼首页N格插件 For Discuz!7.1/7.2 GBK UTF8 BIG5.rar

    3. [修正]修正多处CSS样式,更加兼容各种浏览器。 4. 此次升级需覆盖所有文件,进行升级操作,然后更新缓存。 DuceXHome NC 2.7.1 11月11日更新说明 1. 为有些不会添加代码的网友,后台其它调用处新增指定城市...

    世界之窗 3.5.0.3

    3、全面调整了一些浏览器参数,缩短TW和IE之间的差异,提升网页兼容以及程序稳定性(不影响TW已有配置); 4、增强了IE9下GPU硬件加速处理能力; 5、兼容了IE8原生兼容性视图列表; 修复: 1、修复了地址栏下拉列表...

    AspNetPager示例源码

    因此具有用户友好和搜索引擎友好的优点,关于Url分页与PostBack分页方式的差异,请参考Url与PostBack分页方式的对比。 2、支持Url分页方式下的Url重写(UrlRewrite)功能 Url重写技术可以使显示给用户的Url不同于...

    ASP.Net皮肤换肤控件

    也可以使搜索引擎搜索到所有分页的页面的内容,因此具有用户友好和搜索引擎友好的优点,关于Url分页与PostBack分页方式的差异,请参考Url与PostBack分页方式的对比。 2、支持Url分页方式下的Url重写(UrlRewrite)...

    AspNetPager控件及Demo源码 v7.4.4.rar

    因此具有用户友好和搜索引擎友好的优点,关于Url分页与PostBack分页方式的差异,请参考Url与PostBack分页方式的对比。 2、支持Url分页方式下的Url重写(UrlRewrite)功能 Url重写技术可以使显示给用户的Url不同于...

    AspNetPager示例源码学习 7.2

    因此具有用户友好和搜索引擎友好的优点,关于Url分页与PostBack分页方式的差异,请参考Url与PostBack分页方式的对比。 2、支持Url分页方式下的Url重写(UrlRewrite)功能 Url重写技术可以使显示给用户的Url不同于...

    ExtAspNet_v2.3.2_dll

    -修正IE7下不能以下划线作为CSS中类名的前缀的BUG(feedback:Steve.Wei)。 -添加定时器控件Timer,用来定时发起AJAX请求。 +2009-09-06 v2.1.0 -Button的Pressed属性值能够正确的反映客户端的变化。 -优化...

    AspNetPager7.2分页控件及Demo源码

    因此具有用户友好和搜索引擎友好的优点,关于Url分页与PostBack分页方式的差异,请参考Url与PostBack分页方式的对比。 2、支持Url分页方式下的Url重写(UrlRewrite)功能 Url重写技术可以使显示给用户的Url不同于...

    AspNetPager控件及Demo源码 v7.4.4.zip

    因此具有用户友好和搜索引擎友好的优点,关于Url分页与PostBack分页方式的差异,请参考Url与PostBack分页方式的对比。 2、支持Url分页方式下的Url重写(UrlRewrite)功能 Url重写技术可以使显示给用户的Url不同于...

    AspNetPager 7.2 7.02控件源码与示例

    因此具有用户友好和搜索引擎友好的优点,关于Url分页与PostBack分页方式的差异,请参考Url与PostBack分页方式的对比。 2、支持Url分页方式下的Url重写(UrlRewrite)功能 Url重写技术可以使显示给用户的Url不同于...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -修正IE7下不能以下划线作为CSS中类名的前缀的BUG(feedback:Steve.Wei)。 -添加定时器控件Timer,用来定时发起AJAX请求。 +2009-09-06 v2.1.0 -Button的Pressed属性值能够正确的反映客户端的变化。 -优化...

    feelingrestful-theme:feelrestful.com的主题

    v1和v2之间的区别两者之间有一些差异。 请注意,版本1已被发布标记。变化添加了动态菜单功能。 适用于WordPress菜单设置。 在React中有一个内置的菜单浏览器。 更新的设计修改:ADOR Boston网站,这是一项设计更改。...

    深度学习(asp)网址导航系统 3.1.2(最新更新完美版)

    与前一版本差异: 功能相似度:99%  界面相似度:99%  文件结构相似度:60%  代码结构相似度:60%  代码相似度:80% ---------------------------------------------------------------- 【程序主要功能】 1、...

Global site tag (gtag.js) - Google Analytics