Css Hack的定义以及用法

Css Hack的定义以及用法

1、什么是CSS hack

由于不同的浏览器,比如Internet Explorer 6,Internet Explorer 7,Mozilla firefox等,对CSS的解析认识不一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。这个针对不同的浏览器写不同的CSS code的过程,就叫CSS hack!

2、CSS hack解决的问题

问题①  CSS hack用来解决有些CSS属性在不同浏览器中显示的效果不一样的问题,如块级元素浮动后margin属性在IE6中显示的距离会比其他浏览器中显示的距离宽2倍,也就是说margin-left:20px;在非IE6浏览器中显示的距离是设置的值20px,而在IE6浏览器中实际的显示距离是40px;所以要想margin-left的值在所有浏览器中都显示是20px的宽度,写法应为: display:inline;解决的是IE6双边距的问题

.kw{ margin-left:20px;

_margin-left:20px;

}

问题②  IE6浏览器不支持最大最小宽高(min/max-height)

解决方法:为IE6单独设置hack,即_height:最小高度值;_width:最小宽度值(对于IE6,当实际宽高超出定义的宽高时,元素会自动调整宽高)。对于最大高度和最大宽度,没有必要设置兼容。

常见的hack如下


hack


示例


IE6


IE7


IE8


*


*color


Yes


Yes


No


+


+color


Yes


Yes


No


-


-color


Yes


No


No


_


_color


Yes


No


No


#


#color


Yes


Yes


No


\0


color\0


No


No


Yes


\9


color\9


Yes


Yes


Yes


!important


color:blue !important;
color:green;


No


Yes


Yes

IE6支持重定义中的!important,例如:
  .yanse {color:red!important;}
  .yanse {color:#000;}
  你将会发现定义了样式class="yanse"时,在IE6下,字体显示为红色(red)。 
  但不支持同一定义中的!important。例如:
  .yanse {color:red!important;

color:#000

}
  此时在IE6下不支持,你将会发现定义了样式class="yanse"时,字体显示为黑色(#000)。

 

 

 

3、我们也可以反过来利用CSS hack为不同版本的浏览器定制编写不同的CSS效果。

以颜色为例来为FF、IE8、IE7、IE6编写不用的效果:
.csshack{

color:red;        /*firefox等浏览器 显示为红色*/

color:blue\9;     /*IE8可识别 覆盖上面规则 显示为蓝色*/

*color:green!important;

/*IE7可识别 覆盖上面规则 显示为绿色*/
     *color:#000;/*_color:#000;*/

/*IE6可识别 覆盖上面规则 显示为黑色*/
}
这里的"\9"可以区别所有IE和FireFox.
"*" IE6、IE7可以识别.IE8、FireFox不能.
"_" IE6可以识别"_",IE7、IE8、FireFox不能.
IE7、IE8都可识别!important。
如此,就可以完全区分开IE6、IE7、IE8、FireFox了.

CSS hack书写顺序,一般是将适用范围广、被识别能力强的CSS定义在前面。所以上面例子的书写顺序为:火狐浏览器的写法写在最前面,IE6的写法要在最后面用于覆盖,其他浏览器写在中间。

时间: 2024-10-01 00:15:34

Css Hack的定义以及用法的相关文章

CSS选择器、CSS hack及CSS执行效率

主要内容: 1.CSS选择器.优先级与匹配原理 2. CSS 引入的方式有哪些 ? link 和 @import 的区别是 ? 3.CSS hack 4.如何书高效CSS  一.CSS选择器.优先级与匹配原理     CSS选择器大概可以分为:1.id选择器(#myid)  2.类选择器(.myclassname)  3.标签选择器(div,h1,p)  4.相邻选择(h1+p)6.后代选择器(li a)7.通配符选择器(*)  8.属性选择器(a[rel='externaml']) 9.伪类选

让IE和Firefox兼容的CSS技巧集合css hack

CSS对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理方法并整理了一下.对于web2.0的过度,请尽量用xhtml格式写代码,而且DOCTYPE 影响 CSS 处理,作为W3C的标准,一定要加 DOCTYPE声明. CSS技巧 1.div的垂直居中问题 vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了.缺点是要控制内容不

CSS hack样式兼容模式收藏

part1 —— 浏览器测试仪器,测试您现在使用的浏览器类型 IE6   IE7   IE8   Firefox   Opera   Safari (Chrome)   IE6   IE7   IE8   Firefox   Opera   Safari (Chrome)   您现在使用的浏览器是Opera.Opera游览器很时髦么. 您现在使用的浏览器是Firefox.Firefox是很强大的游览器. 您现在使用的浏览器是Safari(Chrome).Safari和Chrome使用的都是Web

CSS - Hack 总结

CSS hack总结: 1.兼容范围:IE6.0+.FirFox2.0+.Opera10.0+.Sarari3.0+.Chrome. 注意:网上很多资料中常常把!important也作为一个hack手段,其实这是一个误区.!important常常被我们用来更改样式,而不是兼容hack.造成这个误区的原因是IE6在某些情况下不主动识别!important,以至于常常被人误用做识别IE6的hack.可是,大家注意一下,IE6只是在某些情况下不识别(ie6下,同一个大括号里对同一个样式属性定义,其中一

CSS hack技术

首先我们要了解一个概念CSS hack 不同浏览器,比如IE6.IE7.IE8,Mozilla Firefox等,对CSS的支持及解析结果不同,因此会导致相同的网页生成的页面效果不一样. 这个时候我们就需要针对不同的浏览器去定义不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果. 这个针对不同的浏览器写不同的CSS code的过程,就叫CSS hack,也叫写CSS hack. CSS Hack的原理:由于不同的浏览器对CSS的支持及解析结果不同以及CSS中

CSS hack方式

史上最全的CSS hack方式一览 做前端多年,虽然不是经常需要hack,但是我们经常会遇到各浏览器表现不一致的情况.基于此,某些情况我们会极不情愿的使用这个不太友好的方式来达到大家要求的页面表现.我个人是不太推荐使用hack的,要知道一名好的前端,要尽可能不使用hack的情况下实现需求,做到较好的用户体验.可是啊,现实太残酷,浏览器厂商之间历史遗留的问题让我们在目标需求下不得不向hack妥协,虽然这只是个别情况.今天,结合自己的经验和理解,做了几个demo把IE6~IE10和其他标准浏览器的C

常见浏览器兼容问题、盒模型2种模式以及css hack知识讲解

什么是浏览器兼容问题?所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况.在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的显示效果.所以浏览器的兼容性问题是前端开发人员经常会碰到和必须要解决的问题. 总结一下我编写代码的时候遇到的浏览器兼容问题,跟大家学习. 一.解决无法在IE6下面设置1px高的容器(div)的问题. 大家看看这一段代码: <div style="height:1px;wi

史上最全的CSS hack方式一览

做前端多年,虽然不是经常需要hack,但是我们经常会遇到各浏览器表现不一致的情况.基于此,某些情况我们会极不情愿的使用这个不太友好的方式来达到大家要求的页面表现.我个人是不太推荐使用hack的,要知道一名好的前端,要尽可能不使用hack的情况下实现需求,做到较好的用户体验.可是啊,现实太残酷,浏览器厂商之间历史遗留的问题让我们在目标需求下不得不向hack妥协,虽然这只是个别情况.今天,结合自己的经验和理解,做了几个demo把IE6~IE10和其他标准浏览器的CSS hack做一个总结,也许本文应

CSS中的!important属性用法

关于CSS的运用技巧有很多, 今天主要探讨一下CSS中 !important 这个属性的用法.在CSS的使用中,遇到最多的问题就是不同浏览器之间的兼容问题. 由于IE并不严格执行W3C标准, 而又几乎垄断了浏览器市场. 所以作为一名合格的网站制作人员, 必须要针对不同的浏览器进行微调. 实现不同浏览器之间兼容的方法有很多, 比如利用JS探测用户的浏览器类型,从而调用不同的样式表. 或者就是利用!important 属性来实现微调的效果. 下面是具体的例子. 下面是一段普通的 DIV 代码: 下面