- 浏览: 677743 次
- 性别:
- 来自: 深圳
-
文章分类
最新评论
-
zhouyicang:
为嘛人气不够,这么好的文章,我找了几十篇博客,才找到这篇解惑了 ...
HTML 块级元素/内联元素 -
young7:
不错,解惑了
HTML 块级元素/内联元素 -
lvjin948:
获取浏览器语言的完美方案。http://blog.csdn.n ...
JavaScript获取浏览器语言类型 -
tarena_hhh:
我用了css优化工具,发现他的顺序有很大不一样?????
CSS属性书写顺序及命名规则 -
deng131:
谢谢你的提醒,是有个地方写错了
javascript事件绑定addEventListener,attachEvent
什么是CSS Hack呢?
为解决浏览器间的CSS兼容性问题,设计师们针对不同浏览器写不同的CSS code的过程,就是一个Hack的过程了。在这个过程中,不但要做到浏览器的兼容性,更要合理地做到CSS代码的绝对优化,尽可能少地人为制造冗余的代码,使CSS代码尽可能简练易读。
为什么要用CSS Hack呢?
通过对CSS代码的兼容性问题的解决,使得我们写出的页面能在不同的浏览器中达到统一的页面效果。
CSS Hack原理是什么?
根据不同浏览器对CSS样式的支持程度,解析结果和识别CSS的优先级不同,设计师们就可以根据这些不同浏览器的特点来书写不同的 CSS样式代码。IE6能识别下划线_和星号*,IE7能识别星号*,不能识别下划线_,而firefox两个都不能识别,如此,就可以针对 IE6.IE7和FF通过对这些特殊符号的使用写不同的代码了。
由于不同的浏览器对CSS的支持及解析结果不一样,还由于CSS中的优先级的关系。我们就可以根据这个来针对不同的浏览器来写不同的CSS。
比如 IE6能识别下划线"_"和星号" * ",IE7能识别星号" * ",但不能识别下划线"_",而firefox两个都不能认识。等等
书写顺序,一般是将识别能力强的浏览器的CSS写在后面。下面如何写里面说得更详细些。
比如要分辨IE6和firefox两种浏览器,可以这样写:
<style>
div{
background:green; /* for firefox */
*background:red; /* for IE6 */
}
</style>
我在IE6中看到是红色的,在firefox中看到是绿色的。
解释一下:
上面的css在firefox中,它是认识不了后面的那个带星号的东东是什么的,于是将它过滤掉,不予理睬,解析得到的结果是:div{background:green},于是理所当然这个div的背景是绿色的。
在IE6中呢,它两个background都能识别出来,它解析得到的结果是:div{background:green;background:red;},于是根据优先级别,处在后面的red的优先级高,于是当然这个div的背景颜色就是红色的了。
CSS hack:区分IE6,IE7,firefox
区别不同浏览器,CSS hack写法:
区别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;_background:blue;
background:orange;*background:green !important;*background:blue;
注:IE都能识别*;标准浏览器(如FF)不能识别*;
IE6能识别*,某些情况下不能识别 !important,
IE6支持重定义中的!important,例如:
.yuanxin {color:#e00!important;}
.yuanxin {color:#000;}
你将会发现定义了样式class="yuanxin"时,在IE下,字体显示为红色(#e00)。
但不支持同一定义中的!important。例如:
.yuanxin {color:#e00!important;color:#000}
此时在IE6下不支持,你将会发现定义了样式class="yuanxin"时,字体显示为黑色(#000)。
IE7能识别*,也能识别!important;
FF不能识别*,但能识别!important;
IE6 IE7 FF
* √ √ ×
!important × √ √
浏览器优先级别:FF<IE7<IE6,CSS hack书写顺序一般为FF IE7 IE6
测试浏览器:ie5.0 ie5.5 ie6.0 ie7.0 firefox2.0.0.11 opera9.10 safari3.04(pc)
测试过程:
[非标准类]
property\:value /* ie5.5 */
*property:value /* ie5.0 ie5.5 ie6.0 ie7.0*/
_property:value /* ie5.0 ie5.5 ie6.0*/
Selector\ /* ie6.0 ie7.0 */
Selector, x:-moz-any-link /*ff ie5.0 ie7.0*/
>Selector /*ie5.0*/
<Selector {} /*只有IE5.0可识别*/
*html Selector\ {} /*只有 IE6.0可识别*/
*+html Selector\ {} /*只有IE7.0可识别*/
[标准类]
property /**/:value /*屏蔽ie6.0*/
property/**/:value /*屏蔽ie5.0*/
*html selector /*只对ie6及以下有效*/
*:first-child+html selector /*只对ie7有效 */
html>/**/body selector /*屏蔽所有ie*/
property /**/:value /* ie5.0 ie5.5 ie7.0 ff2.0 op9.1 sf3 */
Selector/**/ property/**/:value /* ie5.5 ie6.0 ie7.0 ff2.0 op9.1 sf3 */
Selector/**/ property/**/:value /* ie5.5 ie6.0 ie7.0 ff2.0 op9.1 sf3 */property /**/:value /* ie5.0 ie5.5 ie7.0 ff2.0 op9.1 sf3 */
Selector/**/ property/**/:value /* ie5.5 ie6.0 ie7.0 ff2.0 op9.1 sf3 */
*:first-child+html {} * html Selector /* ie5.0 ie5.5 ie6 */
*:first-child+html Selector /* ie7.0 */
html[xmlns*=”"] body:last-child Selector /* safari */
html:first-child Selector /* op9.0及以下 */head + body Selector /* ie7.0 ff2.0 op9.1 sf3.0 */
测试结果[常用]:
[快捷HACK方法推荐]
*property:value /*对ie7及以下有效*/
_property:value /*对ie6及以下有效*/
property /**/:value /*屏蔽ie6*/
[标准版HACK方法]
html>/**/body Selector /* ff2.0 op9.1 sf3.0 */
* html Selector /* ie5.0 ie5.5 ie6 */
*+html Selector /* ie5.0 ie7.0 */
最简单CSS Hack: 区分 IE6 / IE7 /IE8 /Firefox
.color{
background-color: #CC00FF; /*所有浏览器都会显示为紫色*/
background-color: #FF0000\9; /*IE6、IE7、IE8会显示红色*/
*background-color: #0066FF; /*IE6、IE7会变为蓝色*/
_background-color: #009933; /*IE6会变为绿色*/
}
参考:
http://www.positioniseverything.net/explorer.html
http://blog.lastkite.com/2010/css-hack/
http://www.cnblogs.com/lhb25/archive/2010/01/26/1656801.html
http://www.cnblogs.com/pittzh/archive/2009/07/23/1529769.html
为解决浏览器间的CSS兼容性问题,设计师们针对不同浏览器写不同的CSS code的过程,就是一个Hack的过程了。在这个过程中,不但要做到浏览器的兼容性,更要合理地做到CSS代码的绝对优化,尽可能少地人为制造冗余的代码,使CSS代码尽可能简练易读。
为什么要用CSS Hack呢?
通过对CSS代码的兼容性问题的解决,使得我们写出的页面能在不同的浏览器中达到统一的页面效果。
CSS Hack原理是什么?
根据不同浏览器对CSS样式的支持程度,解析结果和识别CSS的优先级不同,设计师们就可以根据这些不同浏览器的特点来书写不同的 CSS样式代码。IE6能识别下划线_和星号*,IE7能识别星号*,不能识别下划线_,而firefox两个都不能识别,如此,就可以针对 IE6.IE7和FF通过对这些特殊符号的使用写不同的代码了。
由于不同的浏览器对CSS的支持及解析结果不一样,还由于CSS中的优先级的关系。我们就可以根据这个来针对不同的浏览器来写不同的CSS。
比如 IE6能识别下划线"_"和星号" * ",IE7能识别星号" * ",但不能识别下划线"_",而firefox两个都不能认识。等等
书写顺序,一般是将识别能力强的浏览器的CSS写在后面。下面如何写里面说得更详细些。
比如要分辨IE6和firefox两种浏览器,可以这样写:
<style>
div{
background:green; /* for firefox */
*background:red; /* for IE6 */
}
</style>
我在IE6中看到是红色的,在firefox中看到是绿色的。
解释一下:
上面的css在firefox中,它是认识不了后面的那个带星号的东东是什么的,于是将它过滤掉,不予理睬,解析得到的结果是:div{background:green},于是理所当然这个div的背景是绿色的。
在IE6中呢,它两个background都能识别出来,它解析得到的结果是:div{background:green;background:red;},于是根据优先级别,处在后面的red的优先级高,于是当然这个div的背景颜色就是红色的了。
CSS hack:区分IE6,IE7,firefox
区别不同浏览器,CSS hack写法:
区别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;_background:blue;
background:orange;*background:green !important;*background:blue;
注:IE都能识别*;标准浏览器(如FF)不能识别*;
IE6能识别*,某些情况下不能识别 !important,
IE6支持重定义中的!important,例如:
.yuanxin {color:#e00!important;}
.yuanxin {color:#000;}
你将会发现定义了样式class="yuanxin"时,在IE下,字体显示为红色(#e00)。
但不支持同一定义中的!important。例如:
.yuanxin {color:#e00!important;color:#000}
此时在IE6下不支持,你将会发现定义了样式class="yuanxin"时,字体显示为黑色(#000)。
IE7能识别*,也能识别!important;
FF不能识别*,但能识别!important;
IE6 IE7 FF
* √ √ ×
!important × √ √
浏览器优先级别:FF<IE7<IE6,CSS hack书写顺序一般为FF IE7 IE6
测试浏览器:ie5.0 ie5.5 ie6.0 ie7.0 firefox2.0.0.11 opera9.10 safari3.04(pc)
测试过程:
[非标准类]
property\:value /* ie5.5 */
*property:value /* ie5.0 ie5.5 ie6.0 ie7.0*/
_property:value /* ie5.0 ie5.5 ie6.0*/
Selector\ /* ie6.0 ie7.0 */
Selector, x:-moz-any-link /*ff ie5.0 ie7.0*/
>Selector /*ie5.0*/
<Selector {} /*只有IE5.0可识别*/
*html Selector\ {} /*只有 IE6.0可识别*/
*+html Selector\ {} /*只有IE7.0可识别*/
[标准类]
property /**/:value /*屏蔽ie6.0*/
property/**/:value /*屏蔽ie5.0*/
*html selector /*只对ie6及以下有效*/
*:first-child+html selector /*只对ie7有效 */
html>/**/body selector /*屏蔽所有ie*/
property /**/:value /* ie5.0 ie5.5 ie7.0 ff2.0 op9.1 sf3 */
Selector/**/ property/**/:value /* ie5.5 ie6.0 ie7.0 ff2.0 op9.1 sf3 */
Selector/**/ property/**/:value /* ie5.5 ie6.0 ie7.0 ff2.0 op9.1 sf3 */property /**/:value /* ie5.0 ie5.5 ie7.0 ff2.0 op9.1 sf3 */
Selector/**/ property/**/:value /* ie5.5 ie6.0 ie7.0 ff2.0 op9.1 sf3 */
*:first-child+html {} * html Selector /* ie5.0 ie5.5 ie6 */
*:first-child+html Selector /* ie7.0 */
html[xmlns*=”"] body:last-child Selector /* safari */
html:first-child Selector /* op9.0及以下 */head + body Selector /* ie7.0 ff2.0 op9.1 sf3.0 */
测试结果[常用]:
[快捷HACK方法推荐]
*property:value /*对ie7及以下有效*/
_property:value /*对ie6及以下有效*/
property /**/:value /*屏蔽ie6*/
[标准版HACK方法]
html>/**/body Selector /* ff2.0 op9.1 sf3.0 */
* html Selector /* ie5.0 ie5.5 ie6 */
*+html Selector /* ie5.0 ie7.0 */
最简单CSS Hack: 区分 IE6 / IE7 /IE8 /Firefox
.color{
background-color: #CC00FF; /*所有浏览器都会显示为紫色*/
background-color: #FF0000\9; /*IE6、IE7、IE8会显示红色*/
*background-color: #0066FF; /*IE6、IE7会变为蓝色*/
_background-color: #009933; /*IE6会变为绿色*/
}
参考:
http://www.positioniseverything.net/explorer.html
http://blog.lastkite.com/2010/css-hack/
http://www.cnblogs.com/lhb25/archive/2010/01/26/1656801.html
http://www.cnblogs.com/pittzh/archive/2009/07/23/1529769.html
发表评论
-
IE浏览器stylesheets加载资源限制问题
2015-03-08 20:30 1086@import url()做一下总结: 1:@import ... -
理解Javascript原型及继承
2012-08-15 22:13 1357js初次使用起来觉得很简单但是在使用一段时间后很不深入的理解原 ... -
JS判断IE浏览器支持版本
2012-02-01 19:00 2987/* * @description 判断是否是IE,返回具体 ... -
jsonp动态创建script方式IE9问题
2012-02-01 16:28 2429在IE9浏览器创建一个script元素,然后指定其src属性u ... -
IE9下使用jsonp方式调用问题
2012-01-31 19:03 23041. 如果JSONP返回的Content-Type不符合规范, ... -
JavaScript获取浏览器语言类型
2011-12-31 18:24 7839获取浏览器语言: IE: navigator.browser ... -
IE Security Comprehensive Protection
2011-12-19 20:14 1781IE浏览器安全方面的处理,本人英文不好建议大家直接看英文: ... -
javaScript 中比较数字字符串问题
2011-10-10 21:49 4693在实现前端页面排序功能过程中遇到的问题,由于自己的粗心导致了生 ... -
javascript设置label标签 for属性
2011-09-11 10:36 3620js创建label标签的for属性用来增加操作响应区域。 v ... -
javascript事件绑定addEventListener,attachEvent
2011-07-31 18:55 3559为了考虑浏览器的兼容性问题,都需要对浏览器进行类型检测。 f ... -
readyState五种状态详解
2011-07-24 14:15 1641(0) UNINITIALIZED 未初始化 The obje ... -
getElementByTagName 与 querySelectorAll
2011-07-14 11:29 1498虽然网上有中文翻译但是还是直接看英文有感觉。getElemen ... -
拖放 Drag and drop 方法
2011-07-10 18:55 1543虽然网上又很多实现方法,但是还是需要理解拖放原理。通过绑定on ... -
闭包传入参数 window & undefined
2011-07-03 08:53 2325大家在前端开发中对闭包应该和熟悉了,也就是几种常见的闭包方式: ... -
textarea光标位置插入文字
2011-06-18 18:14 2144各浏览器TextArea获得焦点后的光标位置情况: text ... -
IE6上Array不支持indexOf方法
2011-06-06 10:17 2261在IE6不支持Array上indexOf方法,又是可恶的ie, ... -
处理不支持JavaScript脚本情况
2011-05-26 10:24 1355现在主流的浏览器都支持javascrip, 但还是有小部分不支 ... -
动态创建iframe设置属性name问题
2011-04-20 13:54 2757通常iframe的name可以是link或者form的targ ... -
WebSocket and Socket.IO
2011-04-06 15:39 3488WebSocket API是下一代客户端-服务器的异步通信方法 ... -
Preload CSS/JavaScript预加载
2011-04-06 10:20 1497希望达到效果是页面第一次载入以后,如果在次刷新页或者进入下一个 ...
相关推荐
史上最全的CSS hack方式一览.mhtml史上最全的CSS hack方式一览.mhtml史上最全的CSS hack方式一览.mhtml史上最全的CSS hack方式一览.mhtml史上最全的CSS hack方式一览.mhtml史上最全的CSS hack方式一览.mhtml史上最全...
### CSS Hack 技术详解及应用 #### 一、引言 随着互联网技术的发展,Web前端开发变得越来越重要。然而,在实际开发过程中,一个不容忽视的问题便是**跨浏览器兼容性**。由于不同浏览器(包括同一浏览器的不同版本...
总之,CSS Hack是一种解决浏览器差异的有效方法,但应谨慎使用,因为它们可能导致代码难以维护和扩展。尽量遵循浏览器最佳实践,利用最新的CSS规范,以及使用前缀和媒体查询来实现更好的跨浏览器兼容性。同时,持续...
### CSS Hack 汇总:解决 IE6,IE7,IE8 及 Firefox 的兼容性问题 在网页设计与开发领域,确保不同浏览器间的代码兼容性是一项挑战性的任务,尤其是在处理像 Internet Explorer 6(IE6)、IE7、IE8 和 Firefox 这些...
1. **CSS Hack原理**: 不同的浏览器对某些CSS特性或者字符的识别有所不同。例如,星号(*)在IE6和IE7中被识别为一个选择器前缀,但在FF、IE8及更高版本中不被识别;叹号important(!important)在除IE6外的所有...
CSSHack解决兼容
以下将详细介绍几种常见的CSS Hack方法及其应用场景。 #### 1\. !important Hack 此Hack主要针对IE7及以上版本和Firefox等现代浏览器。通过使用`!important`,可以覆盖默认样式或特定条件下的样式设置。例如: ``...
10. **代码管理和版本控制**:使用版本控制系统(如Git)和模块化CSS(如BEM、SMACSS等方法论)可以帮助管理代码,减少hack的出现。 文件`css_browser_selector.js`和`css_browser_selector.php`可能包含了...
css hack ie6 ie7 ie8 firefox等浏览器兼容性
常见的CSS Hack方法包括属性前缀、特殊字符法、选择器Hack和条件注释等。 1. **属性前缀**:一些浏览器,如Firefox和Chrome,支持Webkit引擎特有的CSS扩展属性,如`-webkit-transform`用于旋转、缩放等。而IE浏览器...
CSS Hack是一种针对不同浏览器之间的CSS解析差异而采取的技术策略,目的是确保网页在各种浏览器中都能得到预期的渲染效果。在Web开发中,由于Internet Explorer(尤其是IE6和IE7)与其他标准兼容的浏览器(如Firefox...
### 区别不同浏览器CSS Hack知识点详解 #### CSS Hack简介 在Web开发过程中,由于不同浏览器对CSS的支持程度不一,导致同一段CSS代码在不同的浏览器中可能呈现出不同的效果。为了确保网页能在各种浏览器中正常显示...
然而,随着浏览器更新迭代,新的CSS规范被广泛采纳,现代浏览器对CSS3的支持越来越完善,CSS hack的使用应尽可能减少,转向使用更稳定和推荐的方法,如使用特性检测库和渐进增强策略。 总之,"IE6/IE7/IE8/Firefox/...
值得注意的是,随着浏览器更新和CSS规范的统一,许多旧的CSS hack已经不再必要,开发者应尽量使用最新的CSS特性并遵循标准,以减少对hack的依赖。同时,持续关注浏览器的更新和新功能,可以帮助我们更好地应对未来的...
CSS Hack可以是属性前缀,特殊字符,或者是使用条件注释等方法。 在提供的压缩包文件中,我们可以找到以下几个文件: 1. **base.css**:这通常是一个基础样式表,包含了网站的通用样式规则,可能包括了部分跨浏览器...
标题“巧用 UserAgent 代替拙劣的 CSS hack”指出了一种避免使用CSS hack,转而利用UserAgent来实现特定浏览器兼容性的方法。CSS hack常常导致代码可维护性下降,而通过UserAgent判断,我们可以更加优雅地处理浏览器...
在Web开发中,CSS Hack是一种解决浏览器间样式差异的方法。由于不同的浏览器对CSS的实现不完全相同,可能导致同样的CSS代码在不同浏览器中表现不一致。开发者会使用特定的CSS语法或选择器来针对特定浏览器进行优化,...
css hack 兼容性的总结与体会. IE6,IE7,IE8,IE9,firefox,apple,chrome等等浏览器的兼容性
CSS Hack是为了让特定样式在特定浏览器中生效而采用的一些技巧或方法。本文将对各浏览器的CSS Hack进行总结,主要关注如何解决CSS样式兼容问题。 首先,我们了解下主要的浏览器:IE(Internet Explorer)、Firefox...