2024年2月9日发(作者:)

Windows系统下各浏览器常用CSS HACK汇总表

1. 此汇总表中测试浏览器的版本为:

微软系统自带:IE6、 IE7、IE8

火狐:Firefox 3.6.6

Safari:Safari 5.0

谷歌浏览器:Chrome 6.0.458.1 dev

Opera浏览器:Opera 10.60

2. 其中,多数CSS hack是在selector{property:value;}基础上更改的。

selector代表CSS选择器,property代表CSS特性,value代表特性的值。

3. FF代表Firefox,Ch代表Chorme,Sa代表Safari,Op代表Opera

4. Q代表Quirks Mode,S代表Standards Mode。

5. Hack Type列的数字,指的是上面CSS hack的实现方式中的列表号。

1是指“利用浏览器对相同代码的解析和支持的不同实现的hack”,2是指以Firefox或Webkit特有的扩展样式实现的hack。

一定遵守CSS hack的三条原则。CSS hack是没有办法的时候才使用的解决兼容性问题的招术,是用兼容性问题去解决兼容性问题,无异于饮鸩止渴。切莫一有兼容性问题就使用,时刻记得改掉用CSS hack修补的问题。

IE6、IE7、IE8、Firefox兼容性CSS HACK代码+示例

1.区别IE和非IE浏览器CSS HACK代码

#divcss5{

background:blue; /*非IE 背景藍色*/

background:red 9; /*IE6、IE7、IE8背景紅色*/

}

2.区别IE6,IE7,IE8,FF CSS HACK

【区别符号】:「9」、「*」、「_」

【示例】:

#divcss5{

background:blue; /*Firefox 背景变蓝色*/

background:red 9; /*IE8 背景变红色*/

*background:black; /*IE7 背景变黑色*/

_background:orange; /*IE6 背景变橘色*/

}

【说明】:因为IE系列浏览器可读「9」,而IE6和IE7可读「*」(米字号),另外IE6可辨识「_」(底线),因此可以依照顺序写下来,就会让浏览器正确的读取到自己看得懂得CSS语法,所以就可以有效区分IE各版本和非IE浏览器(像是Firefox、Opera、Google

Chrome、Safari等)。

3.区别IE6、IE7、Firefox (EXP 1)

【区别符号】:「*」、「_」

【示例】:

#divcss5{

background:blue; /*Firefox背景变蓝色*/

*background:black; /*IE7 背景变黑色*/

_background:orange; /*IE6 背景变橘色*/

}

【说明】:IE7和IE6可读「*」(米字号),IE6又可以读「_」(底线),但是IE7却无法读

取「_」,至于Firefox(非IE浏览器)则完全无法辨识「*」和「_」,因此就可以透过这样的差异性来区分IE6、IE7、Firefox

4.区别IE6、IE7、Firefox (EXP 2)

【区别符号】:「*」、「!important」

【示例】:

#divcss5{

background:blue; /*Firefox 背景变蓝色*/

*background:green !important; /*IE7 背景变绿色*/

*background:orange; /*IE6 背景变橘色*/

}

【说明】:IE7可以辨识「*」和「!important」,但是IE6只可以辨识「*」,却无法辨识「!important」,至于Firefox可以读取「!important」但不能辨识「*」因此可以透过这样的差异来有效区隔IE6、IE7、Firefox。

5.区别IE7、Firefox

【区别符号】:「*」、「!important」

【示例】:

#divcss5{

background:blue; /*Firefox 背景变蓝色*/

*background:green !important; /*IE7 背景变绿色*/

}

【说明】:因为Firefox可以辨识「!important」但却无法辨识「*」,而IE7则可以同时看懂「*」、「!important」,因此可以两个辨识符号来区隔IE7和Firefox。

6.区别IE6、IE7 (EXP 1)

【区别符号】:「*」、「_」

【示例】:

#tip {

*background:black; /*IE7 背景变黑色*/

_background:orange; /*IE6 背景变橘色*/

}

【说明】:IE7和IE6都可以辨识「*」(米字号),但IE6可以辨识「_」(底线),IE7却无法辨识,透过IE7无法读取「_」的特性就能轻鬆区隔IE6和IE7之间的差异。

7.区别IE6、IE7 (EXP 2)

【区别符号】:「!important」

【示例】:

#divcss5{

background:black !important; /*IE7 背景变黑色*/

background:orange; /*IE6 背景变橘色*/

}

【说明】:因为IE7可读取「!important;」但IE6却不行,而CSS的读取步骤是从上到下,因此IE6读取时因无法辨识「!important」而直接跳到下一行读取CSS,所以背景色会呈现橘色。

8.区别IE6、Firefox

【区别符号】:「_」

【示例】:

#divcss5{

background:black; /*Firefox 背景变黑色*/

_background:orange; /*IE6 背景变橘色*/

}

【说明】:因为IE6可以辨识「_」(底线),但是Firefox却不行,因此可以透过这样的差异来区隔Firefox和IE6,有效达成CSS hack。

以上包括了IE6IE8IE7火狐浏览器兼容问题及解决方法。

CSS Hack汇总快查(CSS兼容代码演示)

以下是常用CSS HACK问题及解决代码-DIV+CSS网支持

1、屏蔽IE浏览器(也就是IE下不显示)

*:lang(zh) select {font:12px !important;} /*FF的专用*/

select:empty {font:12px !important;} /*safari可见*/

这里select是选择符,根据情况更换。第二句是MAC上safari浏览器独有的。

2、仅IE7识别hack

*+html {…}

当面临需要只针对IE7做样式的时候就可以采用这个HACK。

3、IE6及IE6以下识别CSS HACK

* html {…}

这个地方要特别注意很多地主都写了是IE6的HACK其实IE5.x同样可以识别这个HACK。其它浏览器不识别。

html/**/ >body select {……}

这句与上一句的作用相同。

4、仅IE6不识别div hack

select { display /*IE6不识别*/:none;}

这里主要是通过CSS注释分开一个属性与值,流释在冒号前。

5、仅IE6识别支持

.yangshi{_height:20px;}

这里IE6支持识别CSS属性前“_”短下划线。

6、仅IE6与IE5不识别

select/**/ { display /*IE6,IE5不识别*/:none;}

这里与上面一句不同的是在选择符与花括号之间多了一个CSS注释。

7、仅IE5不识别

select/*IE5不识别*/ { display:none;}

这一句是在上一句中去掉了属性区的注释。只有IE5不识别

8、盒模型解决方法

selct {width:IE5.x宽度; voice-family :""}""; voice-family:inherit; width:正确宽度;}

盒模型的清除方法不是通过!important来处理的。这点要明确。

9、清除浮动

select:after {content:"."; display:block; height:0; clear:both; visibility:hidden;}

在Firefox中,当子级都为浮动时,那么父级的高度就无法完全的包住整个子级,那么这时用这个清除浮动的HACK来对父级做一次定义,那么就可以解决这个问题 。

10、截字省略号

select { -o-text-overflow:ellipsis; text-overflow:ellipsis; white-space:nowrap;

overflow:hidden; }

这个是在越出长度后会自行的截掉多出部分的文字,并以省略号结尾,很好的一个技术。只是目前Firefox并不支持。

11、只有Opera识别

@media all and (min-width: 0px){ select {……} }

针对Opera浏览器做单独的设定。

以上都是写CSS中的一些HACK,这些都是用来解决局部的兼容性问题,如果希望把兼容性的内容也分离出来,不妨试一下下面的几种过滤器。这些过滤器有的是写在CSS中通过过滤器导入特别的样式,也有的是写在HTML中的通过条件来链接或是导入需要的补丁样式。

12、IE的if条件Hack

所有的IE可识别

只有IE5.0可以识别

IE5.0包换IE5.5都可以识别

仅IE6可识别

IE6以及IE6以下的IE5.x都可识别

仅IE7可识别

13、仅IE8兼容识别

div{height:20px9;}

这里的“9”仅IE8支持识别

解决PNG图片在IE6中背景不透明方

1、解决PNG图片在IE6中背景不透明的CSS与JS代码 - TOP

JS代码

function correctPNG() // correctly handle PNG transparency in Win IE 5.5 & 6.

{

var arVersion = ("MSIE")

var version = parseFloat(arVersion[1])

if ((version >= 5.5) && (s))

{

for(var j=0; j<; j++)

{

var img = [j]

var imgName = rCase()

if (ing(-3, ) == "PNG")

{

var imgID = () ? "id='" + + "' " : ""

var imgClass = (ame) ? "class='" + ame + "' " : ""

var imgTitle = () ? "title='" + + "' " : "title='" + + "' "

var imgStyle = "display:inline-block;" + t

if ( == "left") imgStyle = "float:left;" + imgStyle

if ( == "right") imgStyle = "float:right;" + imgStyle

if () imgStyle = "cursor:hand;" + imgStyle

var strNewHTML = "

+ " style="" + "width:" + + "px; height:" + + "px;" + imgStyle + ";"

+ "filter:progid:mageLoader"

+ "(src='" + + "', sizingMethod='scale');">"

TML = strNewHTML

j = j-1

}

}

}

}

Event("onload", correctPNG);

CSS代码:

#id{background:url(图片路径) ;_filter:

progid:mageLoader(enabled='true', sizingMethod='scale',

src="图片路径");_background:none;}

2、解决png图片在html中IMG标签使用PNG图片IE6中背景不透明方法 - TOP

1、新建一个JS文件为,进以上JS代码拷贝到JS文件里

2、在HTML中声明只有IE6读取此新建JS文件中

只允许IE6读取此JS文件方法:

3、在html中使用图片标签IMG运用PNG图片,在IE6试试看PNG图片背景是否透明了。

3、在CSS中png作为网页背景时在IE6中背景透明方法 - TOP

同样方法

1、新建JS文件同上,命名为,进以上JS代码拷贝到JS文件里

2、在HTML中声明只有IE6读取此新建JS文件中

只允许IE6读取此JS文件方法:

3、在CSS中运用PNG图片作为背景的地方加入以下CSS代码:

#id{background:url(图片路径) ;_filter:

progid:mageLoader(enabled='true', sizingMethod='scale',

src="图片路径");_background:none;}

这样即可解决PNG图片在HTML中img作为图片图标背景不能透明或PNG图片作为网页背景background运用的一样实现PNG图片背景透明

CSS 针对谷歌浏览器(Chrome) safari的webkit核心浏览器CSS hack

我们知道和会运用CSS IE 火狐浏览器之间的区别DIV+CSS HACK,这里为大家再介绍下区别谷歌浏览器(Chrome)苹果浏览器(safari)与IE之间的hack;

只有webkit核心浏览器的谷歌浏览器、safari浏览器识别的CSS hack

Chrome和safari的CSS hack代码,只有谷歌浏览器苹果浏览器读取CSS代码:

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

/* Webkit内核兼容CSS */

}

范例:

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

.yangshi1{color:#f00}

.yangshi2{border:1px solid #f00;}

.yangshi3{background:#f00;}

}

HTML代码:

css样式1


divcss5样式2


div+css样式3

总DIV CSS代码:

谷歌浏览器和safari webkit独有区别其它浏览器css hack演示

css样式1


divcss5样式2


div+css样式3

可自己动动手复制以上完整演示代码,自己实例实例增加记忆和使用技巧知识

演示效果图:

css hack演示图

说明:左边下方为IE浏览器显示效果,右边上方为谷歌浏览器显示效果,很明显Chrome支持独有生效的此CSS hack代码。

CSS网页错位之DIV CSS宽度计算

DIV CSS宽度计算之CSS网页布局错位

为什么计算宽度

计算网页像素宽度是为了CSS网页布局整齐与兼容。常见的我们布局左右结构网页或使用padding、margin布局的时候将计算整页宽度,如果不计算无论是宽度过大过小就会出现错位问题。

怎么计算CSS宽度

例一:我们计算一个左右结构的布局样式。

假如总宽度为400px,那么左右加起来就应当小于400px,那我们可能左边为300px,右边为100px

正确代码:

左右结构宽度计算

左边300px

右边100px

以上为正确的左右结构总宽度刚好等于400px

错误:

假如我们在总宽度不变情况下,左边为300px,而右边为120px那总宽度超过了20px,我们看看会出现什么问题,DIV+CSS代码如下:

左右结构宽度计算

左边300px

右边100px

我们根据上图可看出因为总宽度大约了20px,所以导致了左右结构不能平齐,就出现了右边往下掉。

这样就出现了错位的兼容问题,一般在实际中因为我们计算的疏忽,一般相差小的时候是1px-2px,那样就不会被我们发现,所以排除错位兼容可以从宽度计算入手。

例二:左右结构中有1px边框实例

一般左右结构中有1px边框,然后再加上有些边框这时我们设置左右结构时候就需要将此边框宽度与左右结构宽度计算在一起。

正确例子:

CSS与html代码如下:

左右结构宽度计算

左边300px

右边100px

结果图:

因左右结构都有1px的宽度这个时候各需要减去左右2像素的边框宽度,所以左边最后是298px,右边为98px的宽度

如果不减去边框将会造成一下效果:

DIV+CSS设置百分比宽度计算

有时候我们也需要使用百分比来计算宽度,通常情况也是总的百分比宽度,不能超过100%

CSS宽度计算时候注意总结:

无论是左右结构、多列的布局还是单独一个DIV宽度的布局设置都需要注意宽度的把握与计算,特别是使用了padding、margin、边框等CSS属性,这个时候我们都需要将它们设置的占用宽度计算入内,牢牢把握同排各宽度之和小于或等于总宽度,如果大于总宽度将会出现错位的兼容问题。所以一般错位时我们就可以从计算宽度入手,当然错位还有很多原因这里也是解决错位兼容问题的方法之一。

CSS失效网页乱码原因兼容问题-手写CSS代码注意什么?

乱码VS编码

前面我们介绍过导致网页乱码、CSS失效等原因一部分是由于自己编写的时候没有注意编码问题,不编码转化问题,常常因为自己写的时候使用一种编码,发现别人比较好的DIV+CSS片段比较好直接就复制过来用,结果别人编码与自己编码不符合从而造成网页在IE中呈现乱码,或CSS失效(CSS声明)。解决办法使用软件中编码转化功能进行网页代码转化。如使用Dreamweaver中功能转化编码。-了解语言编码charset网页编码知识

大小写VS失效

1、CSS命名选择符大小写为注意

常常我们在写html时候使用标签的时候使用全角或中文输入法的时候我们能看出毛病来,

但是在手写CSS代码的时候因为自己把CSS命名的选择符这个“.”(点)大写结果会造成此CSS选择器失效,所以注意CSS选择符大小写。(一定使用半角英文输入法小写)

2、CSS属性中分号大小写

在写CSS选择器内的CSS属性的时候,我们常常因为未注意每个CSS属性和对应值结束的时候需要用“;”(分号)结束分割,或未写或大写都会造成此后的这个选择器内属性失效。当然一个CSS属性选择器最后一个可以不加分号结束,但是我们为了养成良好的习惯一定加上。(每个CSS选择器花括号的CSS属性结束一定要以半角小写分号“;”结束。)

DIVCSS5总结:

无论是使用工具制作DIV CSS网页还是手写,平时多注意这些小问题,一点一滴积累和养成好的习惯将会让你在制作网页时候不易出错,记住细节决定成败!

IE的if条件css hack

针对不同的IE浏览器版本,使用if条件来设置对应css样式,从而解决css hack

所有的IE可识别

只有IE5.0可以识别

IE5.0包换IE5.5都可以识别

仅IE6可识别以内的css样式

IE6以及IE6以下的IE5.x都可识别

仅IE7可识别以内的css样式

特别说明ie8不能使用if条件来设置div css样式,这里的“

通过以上的if条件来对不同版本浏览器调用不同css样式来解决css hack方法。

实例如下:

接下来我们只实验一个只有微软IE可识别,火狐不识别例子代码如下

"/TR/xhtml1/DTD/">

IE的if条件css hack实例

<!--[if IE]> Only IE <![endif]-->

我是测试样式

截图如下

左边为微软IE浏览器,右边为火狐浏览器,通过if条件对样式设置只在ie中起作用后效果图。

特别说明的if条件在ie8中不能生效。

区别IE8浏览器的CSS hack

上次我们介绍了ie6、ie7、火狐(firefox)浏览器的css hack区别方法及运用,接下来我们介绍微软最新IE成员ie8与前面浏览器的css hack写法区别。在使用css hack中我们运用了CSS读取原理。同时安装ie6、ie7、ie8浏览器方法:IETester浏览器测试工具介绍。

CSS hack区分如下——注意顺序与浏览器CSS HACK位置:

CSS hack:区分IE6,IE7 ,IE8,firefox

区别不同浏览器,CSS hack写法:

区别FF与IE6:

background:orange;*background:blue; 解释:FF只能识别background:orange; IE6识别*background:blue;

区别IE7与IE6:

background:green !important;background:blue;或者*background:green;_background:blue;

区别IE6与IE8:

background:orange; /*/background:blue;/**/

区别IE7与IE8:

background:orange; /*/background:blue;/**/

区别FF与IE7:

background:orange; *background:green !important;

区别FF,IE7,IE8,IE6:

background:orange;*background:green

important;background:#1119;_background:blue;

或者使用

区别FF,IE7,IE8,IE6:

background:orange;*background:green !important;background:#1119;*background:blue;

CSS Hack实例例子:

"/TR/xhtml1/DTD/">

DIV+CSS各浏览器css hack测试,测试

我是测试颜色,不在不同浏览器下显示颜色不同哦!-

href="/">DIV+CSS

我是颜色在IE6显示

我是颜色在ie7显示

我是颜色在ie8显示

我是颜色在火狐(firefox)显示

在线演示-点击这里

以上代码你拷贝到一个新建的html文件在不同版本浏览器测试就会有不同效果。运用此例子即可解决我们在日常DIV+CSS开发时候的css hack问题。

同时我们如果不想那么的麻烦来做IE8的css hack,我们只需要在html的之间加入,最好加到CSS文件下发即可,在IE8 下和IE7下显示内容相同,这样我们只需区分IE6、IE7、火狐(firefox)的css hack即可。很多大型站点都采用在head加入此代码来减少css bug。

CSS hack之区别不同浏览器的写法

我们在开发DIV+CSS页面时候常常会遇到开发出的网页的一些地方在各大浏览器比如微软IE6、微软IE7、微软IE8、火狐浏览器、谷歌浏览器有一些不同,如宽度、高度等地方有相差误。

IE6比较老的版本浏览器,用户比较多,

IE7较新浏览器,更接近标准浏览器,

IE8算是微软标准浏览器,但差别于浏览器,

火狐(Mozilla, Firefox)和谷歌浏览器(chrome)是比较标准的IE浏览器,一般我们以这个浏览器为开发参考平台,同时IE8与这两个浏览器解释CSS比较接近,一般只要通过火狐、谷歌浏览器测试兼容,一般就能确定IE8.

因此一般我们区别这些浏览器CSS hack的方法就变得简单,我们只需考虑IE6IE7火狐(Firefox)这3个浏览器即可兼容全部浏览器。

具体区别如下:

区别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;

注:IE都能识别*;标准浏览器(如FF)不能识别*;

IE6能识别*,但不能识别 !important,

IE7能识别*,也能识别!important;

FF不能识别*,但能识别!important;以下是各浏览器CSS hack表格

IE6

*

!important

×

IE7

FF

×

另外再补充一个,下划线"_",

IE6支持下划线,IE7和firefox均不支持下划线。

于是大家还可以这样来区分IE6,IE7,firefox:

background:orange;*background:green;_background:blue;

注:不管是什么方法,书写的顺序都是firefox的写在前面,IE7的写在中间,IE6的写在最后面。

以上是介绍区别各浏览器的CSS hack的写法,下面我们简单介绍这些CSS hack用法:

要求说明:假如我们设置一个类名为exple的类CSS属性,CSS样式边框为1PX黑色边框,高度为100PX并要求,在IE6浏览器下宽度为100PX;IE7浏览器宽度下为150PX;火狐IE8谷歌浏览器下宽度为200PX;(PX是长度单位像素)

则CSS代码如下:

.exple{border:1px solid #000; height:100px;width:200px; *width:150px !important;

*width100px;}

这样只要在html设置一个div的类(class="exple"),这样这部分在火狐、IE8、谷歌浏览器下就会显示宽度为200px高度为100px带1px的黑边框的方块;IE7浏览器宽度下为150PX

高度为100px带1px的黑边框的方块;在IE6浏览器下就会显示出长度和宽度为100px的带1px黑边的正方形。

DIV CSS加载失败

1、真正CSS加载失败 - TOP

一、有时网页能完整打开网页布局完整,有时网页像没有CSS控制一样显示没有任何布局样式的网页。

造成此原因有空间IIS不够多、空间速度慢、浏览者网速慢等

二、网页打开显示完全没有CSS控制的原始显示。

造成此原因有链接CSS文件路径错误、CSS代码不兼容等

2、if造成失败 - TOP

有的CSS制作时候可能用了使用if判断语句对什么浏览器调用什么CSS文件或CSS代码,而疏忽造成if调用的混乱,造成在某些浏览器上显示正常,有的浏览器不能显示CSS控制布局,解决方法好好检查自己造成CSS加载失败的if判断设置。

3、另类CSS加载失败 - TOP

此类最为复杂可能本身的CSS代码写法有问题没有设置好造成在各浏览器显示不同布局差距效果,可以说是另类加载失败,我们这里可称为CSS hack。解决办法可以进入css hack教程了解与解决你的CSS加载失败问题。

如还有CSS加载失败问题或更好解决办法欢迎到CSS论坛提问或总结大家学习讨论解决和分享分享。