当前位置: 代码迷 >> HTML/CSS >> 浏览器CSS兼容小结
  详细解决方案

浏览器CSS兼容小结

热度:339   发布时间:2012-10-29 10:03:53.0
浏览器CSS兼容总结

首先推荐一款集成多个版本IE(IE5.5、IE6、IE7、IE8)的样式测试工具(IETester):

http://www.my-debugbar.com/wiki/IETester/HomePage

以下是上个月总结的样式兼容方面的技巧,现发布到博客。

1.??????? 使用 DIV+CSS 布局注意事项:

?

使用 DIV+CSS 布局,要配合一定的 table 布局才能较好的达到多浏览器兼容。

完全使用 DIV+CSS 布局实现多浏览器的兼容,难度较大;

在对样式不熟悉且项目需求中没有要求一定要用 DIV+CSS 布局的情况下,建议直接使用 table 布局,这样更容易实现多浏览器兼容;

?

2.??????? IE 不同版本之间的兼容, IE 与火狐的兼容:

?

可以使用如下形式 ( IE6 为例 ) ,为特定版本的 IE 使用特定的样式达到 IE 不同版本间的样式兼容

??? <!--[if lte IE 6]>

<link href="../../Content/DropdownMenuIE6.css" rel="Stylesheet" type="text/css" />

<![endif]-->

这里的 <!--[if lte IE 6]> <![endif]--> 之间除了可以使用 link 标签引用样式外,还可以用 style 标签声明特定的样式。

?

_width _height 等在样式属性名前加“ _ ”只有 IE6 才能识别。

在样式属性值之后接“ !important ”(必须写在未加 !important 的同名属性前), IE6 会忽略, IE7 IE8 FF 能识别。

在样式属性前加“ * ”则只有 IE 能够识别。

例如:

区别 FF IE7 IE6

? ? ? ?background: orange ; * background: green ? !important ;*background: blue ;

?

?

IE6

IE7

FF

*

×

!important

×

#someNode

{

??? position: fixed; /* FF 及其他浏览器 */

?? #position: fixed; /* IE7 */

?? _position: fixed; /*IE6 以及更老的版本*/

}

?

#example { color: #333; } /* FF 及其他浏览器 */
* html #example { color: #666; } /* IE6 */
*+html #example { color: #999; } /* IE7 */

注意:

*+html IE7 HACK 必须保证 HTML 顶部有如下声明:

? 以下为引用的内容:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

?

可以使用以下 HTML

< meta http-equiv ="x-ua-compatible" content ="ie=7" />

IE8 使用兼容 IE7 的样式模式。

?

当由于使用 margin padding 导致的 IE FF 显示的宽度有差异时,除了可以尝试使用上文提及的方法处理外,还可以使用脚本在相应的部分添加样式,例如:

< script language ="javascript" src ="../../Scripts/jquery-1.3.2.js" type ="text/javascript"></ script >

< script type ="text/javascript" language ="javascript" >

// 火狐浏览器样式

$(document).ready(function (){

??? var bro=$.browser;

??? if (bro.mozilla) {

?????? $("#aboutMenu" ).attr("style" ,"padding:0 33px 0 23px;" );

?????? $("#headTaleFF" ).attr("style" ,"width:951px;" );

??? }??

})

</ script >

上面的代码是使用jquery判断当前的浏览器是否是火狐,当是火狐浏览器时,添加相应的样式(覆盖之前产生差异的样式),使得火狐中的显示宽度与IE保持一致。

?

3. 补充一些项目中的样式问题:

?

用hr标签显示一条横线时,在FF中的颜色始终是深黑色(即使写了颜色样式)。

这时可以考虑用DIV实现显示横线,但如果样式中不加overflow : hidden ;则在IE6中横线的高度会有20像素左右,而不是1像素。正确的写法如下:

< div style =" background-color : #b2b5b6 ; width : 179px ; height : 1px ; overflow : hidden ;" />

?

在使用li标签时(例如在导航条中),因为li标签的内容前会有列表符号,所以会空出一部分,如果要消除这部分空余,在li标签的样式里添加 padding : 0px ;margin-left : 0px ;list-style-type : none ;既可。

?

4. 针对webkit的hacks

??? @media screen and (-webkit-min-device-pixel-ratio:0) {

??? /* 针对Google ChromeSafari 3.0Opera 9 CSS 样式 */

??? }

?

这样的hacks同样是被Google Chrome、Safari 3.0、Opera 9 所识别的。“另有一种通过附加#的Css hack对chrome无效,可能是Webkit版本不同。”

将chrome的字体设置为宋体,其它浏览器仍然使用默认设置的字体:

? ? ? ? @media screen and (-webkit-min-device-pixel-ratio:0) {

??? .parent-cat li {font-family :' 宋体' }

??? .parent-cat li {font-family :inhert ;#}

??? }

在设置完针对google chrome的样式后,再通过css inhert + # hacks即可达目标。

(针对webkit的hacks来源:http://www.ajaxbbs.net/post/google-chrome-only-css-hacks.html )

?

转自:http://blog.csdn.net/n_ithero/archive/2009/11/25/4873376.aspx

  相关解决方案