当前位置:首页 > Div + CSS > 正文内容

[CSS Filter and Hacks] 解決IE vs Firefox等浏览器排版显示不同题

canca18年前 (2008-05-20)Div + CSS410

万恶IE成为大家的箭靶也不是第一天了,除了安全漏洞外,最让网页开发者头痛的就是CSS支持的问题,每次在IE上排版完后,在Firefox上看就完全不一样,在Firefox上排好则IE又乱掉了。关于IE或是其它浏览器在显示上面的问题打算整理完写在下一篇。今天先来讨论怎么透过CSS Filter(CSS Hacks… whatever)来替特定的浏览器指定专属的属性,或是采用自己专属的样式表。(这篇主要都是解决排版问题或是说指定给不同浏览器不同的排版格式)

CSS Filter的目的就是要用特定的CSS语法来过滤掉某些特定的浏览器,首先对于各种不同的CSS Filter一定要来参考centricle.com上所整理出来的资料,针对各种浏览器与CSS Filter之间的支持,虽然有列出很多的方法来实现各种应对上的问题,但有一些是透过错误的语法来过滤,所以会照成CSS验证的错误,不过也不是每个网站都把完全符合W3C规范当成必要的需求,毕竟能够即刻且实用的解决问题还是很迷人的,所以我就撷取一些自己觉得方便好记的方式。

  1. 子选择器法:

IE 6 and below
* html {}
IE 7 and below
*:first-child+html {} * html {}
IE 7 only
*:first-child+html {}
IE 7 and modern browsers only
html>body {}

example: *:first-child+html #target{}

IE7与Firefox等主流浏览器都支持,主要针对IE6与以下的版本是不支持的(但是Mac OS X和Macintosh版的IE还是支持,所以还是尽量别用)。
(reference:www.webdevout.net)

  1. !important

example:
#target{
background: green !important;
background: red;
}

当有两的一样的属性同时出现时,IE6与以下的版本会忽略!important的宣告,但!important要放在前面(IE7已修正此问题,其它OS上则未知)。
(reference:www.webdevout.net)

  1. 汇入法:

@import “non-ie.css” all; 
(IE不支持在@import指定媒体类型,专门给非IE的浏览器用。)
@import ’styles.css’
@import “styles.css”
@import url(styles.css)
@import url(’styles.css’)
@import url(”styles.css”)
@import “null?\”\{”;
@import “styles.css”;

(以上过滤掉老爷浏览器IE4Ns4等,请参考centricle.com)
/*\*//*/
@import styles.css”;   
/**/
(只给Mac OS X IE5Macintosh IE5)

汇入的方式则是透过一开始就指定特定的样式表给特定的浏览器来使用,所以可以写一份共享的,再针对有问题的部份一一的指定给特定的浏览器来修正。
(reference:
centricle.comwww.webdevout.net)

  1. 前置特殊符号:

*property:value (只给IE7及以下的版本)
_property:value (只给IE6及以下的版本)

example:
#target{
margin-left:30px;//给所有浏览器看的
*margin-left:20px;//给IE全系列看(IE7专用)
_margin-left:10px;//给IE6及以下版本看的(IE7不会识别此设定)
}

这个方法我觉得很好用,也很直觉,只要把要改的点抓出来分别针对IE7及IE6作设定就好了(因为通常有问题的就是IE)。但是美中不足的是这样的CSS是没办法通过验证的,要特别留意。
(reference:
centricle.comwww.webdevout.net)

  1. voice-family

voice-family:”\”}\”";
voice-family:inherit;
property:value;

example:
#target{
margin:0 10px;//设定左右10px的边距
width:120px;//给IE5看的宽度
voice-family:”\”}\”";//IE5会略过以下
voice-family:inherit;
width:100px;//修正给其它浏览器看的正确宽度
}

这个方法主要是针对IE5对于Box的长宽解释而来的,因为CSS规格中,box的长宽与padding、border是分开计算的,而IE5则是把padding、border都算在Box的长宽内,所以实际的box会变的比较小。所以透过这个方法来从新设定新的长宽给IE5的版本。
(reference:
centricle.com)

  1. star html

* html (IE6及以下版本)
*+html (IE7及IE5.0可识别)

透过这个方法再结合!important及voice-family就可以针对IE7、IE6及IE5.5以下版本做修正,而不适用其它的浏览器。

example:
#target{
color:red;//给所有浏览器用
}
* html #target{
color:yellow;//给IE5.5以下用
voice-family:”\”}\”";
voice-family:inherit;
color:black;//给IE6用
}
*+html #target{
color:green !important;//给IE7用
}

(reference:centricle.com)

写到这边总算告一段落了,与IE之间的CSS大战没这么容易就算了,还有一大堆bug等着修正,以后有发现不错的方法再继续补上去吧。

 

扫描二维码推送至手机访问。

版权声明:本文由Ant.Master's Blog发布,如需转载请注明出处。

本文链接:https://iant.work/post/444.html

标签: Div + CSS
分享给朋友:

“[CSS Filter and Hacks] 解決IE vs Firefox等浏览器排版显示不同题” 的相关文章

div+css布局漫谈

1.CSS布局常用的方法:float : none | left | right 取值:none :  默认值。对象不飘浮 left :  文本流向对象的右边 right :  文本流向对象的左边 它是怎样工作的,看个一行两列的例子 xhtml: <div > <div...

CSS DIV超出范围加(...)

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>www.aspxuexi.com asp学习网</title&...

列表元素ul ol li dl dt dd释义

DIV CSS网页布局中常用的列表元素ul ol li dl dt dd释义,块级元素div尽量少用,和table一样,嵌套越少越好  ol 有序列表。 <ol><li>……</li><l...

CSS Hack 汇总快查

屏蔽IE浏览器(也就是IE下不显示) *:lang(zh) select {font:12px  !important;} /*FF,OP可见,特别提醒:由于Opera最近的升级,目前此句只为FF所识别*/ select:empty {font:12px  !import...

如何处理不同浏览器之间的样式表的兼容性问题

IE 不支持 "min-height" 样式本站是这样解决的:.contents { ... ...; min-height:380px; ie-only:expression(this.style.height="390px"); } 兼容 IE 和 Mozilla 的 hr 定义Mozilla...

On having layout

英文原文在此:http://www.satzansatz.de/cssd/onhavinglayout.htm 文中所有的 layout 这个单词都未作翻译,一来本身这个单词意思就比较多,翻成啥都觉得别扭,二来它也是专有的属性,所以就意会一下吧。水平有限,很多地方都是模模糊糊地意译,发现错误欢迎留言...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。