当前位置: 首页 > Web前端 > HTML5

关于CSSHACK

时间:2023-04-05 23:40:36 HTML5

关于CSSHACK可以参考这个网站http://browserhacks.com/。Internet上的许多资料经常使用!important作为hack方法。其实,这是一种误解。!important经常被我们用来改变样式,而不是为了兼容hack。造成这种误解的原因是IE6在某些情况下并没有主动识别!important,以至于经常被误认为是hack来识别IE6。不过大家要注意,IE6只是在某些情况下不识别(在ie6下,同一个style属性定义在同一个花括号里,如果其中一个加上important,important标签会被忽略,例如:{background:red!important;background:green;},ie6下解释为背景色绿色,其他浏览器解释为背景色红色;如果在不同的花括号中定义了相同的样式,其中一个加上important,而important会正常发挥作用,例如:div{background:red!important},div{background:green},此时所有浏览器统一将其解释为背景色红色。)示例说明:Hack应用场景(1)适用范围:IE:6.0,IE7.0,IE8。0和0相容的例子:在这个例子中,我们使用渐进式识别的方法,从整体中逐渐排除部分。首先,巧妙地使用“9”标记将IE浏览器与所有情况区分开来。然后,再次使用“+”将IE8与IE7、IE6分开。这时候我们的IE8已经独立认可了。示例代码:.bb{height:32px;background-color:#f1ee18;/*全部识别*/.background-color:#00deff\9;/*IE6,7,8识别*/+background-color:#a200ff;/*IE6,7识别*/_background-color:#1e0bd1;/*IE6识别*/}/*一个类为bb的div标签用于显示*/

Hack应用场景(二)适用范围:IE:6.0、IE7.0、IE8.0、Firefox兼容示例说明:可以很容易看出这是一个增强版Scenario(1)的版本,适用范围更广的环境。其实在场景(1)中,Firefox已经和IE浏览器区分开来了。我们现在需要做的是再次从其他浏览器中识别出Firefox。仔细看代码,你会发现浏览器识别其实很简单。Firefox如何识别它?顺便说一句,伪分类在IE中并没有得到广泛的支持,所以伪分类是一个很好的方法。(.yourClass,x:-moz-any-link,x:default)注意这个区分伪类是IE7经常识别的,所以最好单独识别IE7,此方法对ff3.6无效。您可以使用@-moz-documenturl-prefix(){}示例代码来区分firefox:.bb{height:32px;background-color:#f1ee18;/*全部识别*/background-color:#00deff\9;/*IE6,7,8识别*/+background-color:#a200ff;/*IE6,7识别*/_background-color:#1e0bd1;/*IE6识别*/}.bb,x:-moz-any-link,x:default{background-color:#00ff00;}/*IE7firefox3.5及以下识别*/@-moz-documenturl-prefix(){.bb{background-color:#00ff00;}}/*只能被firefox识别*/*+html.bb{background-color:#a200ff;}/*只能被IE7识别*//*一个显示类为bb的div标签*/
Hack应用场景(三)适用范围:兼容IE:6.0,IE7.0,IE8.0,Firefox,Safari(Chrome)示例说明:我们现在将再次加强我们的CSS,使其能够识别Safari(Chrome)浏览器。这个是根据他们的内核webkit来识别的,用法是@mediascreenand(-webkit-min-device-pixel-ratio:0)示例代码:.bb{height:32px;background-color:#f1ee18;/*全部识别*/background-color:#00deff\9;/*IE6,7,8识别*/+background-color:#a200ff;/*IE6,7识别*/_background-color:#1e0bd1;/*IE6识别*/}@mediascreenand(-webkit-min-device-pixel-ratio:0){.bb{background-color:#f1ee18}}{}/*safari(Chrome)有效*/.bb,x:-moz-any-link,x:default{background-color:#00ff00;}/*IE7firefox3.5及以下识别*/@-moz-documenturl-prefix(){.bb{background-color:#00ff00;}}/*只能被firefox识别*/*+html.bb{background-color:#a200ff;}/*只能被IE7识别*//*类为bb的div标签用于显示*/
Hack应用场景(四)适用范围:IE:6.0+,FireFox:2.0+,Opera10.0+,Sarari3.0+,Chrome完全兼容示例说明:示例的具体代码已经在下面列出示例代码,具体效果为页面顶部的效果,可以通过不同的浏览器查看效果。这次我们基本上把所有主流浏览器都兼容了,来看看代码吧。Opera的识别部分是因为“0”标记,只有IE8和Opera可以识别,而特殊标记往往创造了我们更广泛的黑客手段。下面例子中的代码比较完整,大家可以选择参考。示例代码:/********************************************每个浏览器都兼容CSS************************************************/.bb{height:32px;background-color:#f1ee18;/*所有标识*/background-color:#00deff\9;/*IE6,7,8识别*/+background-color:#a200ff;/*IE6,7识别*/_background-color:#1e0bd1/*IE6识别*/}@mediascreenand(-webkit-min-device-pixel-ratio:0){.bb{background-color:#f1ee18}}{}/*Safari(Chrome)有效*/@mediaalland(min-width:0px){.bb{background-color:#f1ee18;/*opera和Safari(Chrome)和firefox*/background-color:#4cac70\0;}/*Opera仅适用*/}{}.bb,x:-moz-any-link,x:default{background-color:#4eff00;/*IE7、Firefox3.5及以下识别*/}@-moz-documenturl-prefix(){.bb{background-color:#4eff00;/*Firefox只识别*/}}*+html.bb{background-color:#a200ff;}/*只被IE7识别*//*一般我们只用+background-color来匹配_background-color来区分IE7。如果一定要写.bb,x:-moz-any-link,x:default这样的代码来区分Firefox3.5及以下,记住这种写法对IE7也有效,所以需要重写+再次背景nd-color或使用*+html.bb{background-color:blue;}方法只对IE7有效可以使用@-moz-documenturl-prefix(){}方法独立区分所有firefox*/.browserstd{width:8%;text-align:center;padding:8px;}}.browsercolor{color:#333;font-size:18px;font-weight:bold;}.ie6{background-color:#1e0bd1}.ie7{background-color:#a200ff}.ie8{background-color:#00deff}.firefox{background-color:#4eff00}.opera{background-color:#4cac70}.other{background-color:#f1ee18;}#tipTabletd,#tipTableth{border:1pxsolidblack;width:56px;height:16px;text-align:center;}#wordTabletd{margin-left:8px;}#firefoxTip{display:none;}#firefoxTip,x:-moz-any-link,x:default{display:block;/*IE7firefox3.5及以下版本识别*/+display:none/*再次区分IE7*/}@-moz-documenturl-prefix(){#firefoxTip{display:block;/*只有firefox识别*/}}#ChromeTip{display:none;}@mediascreenand(-webkit-min-device-pixel-ratio:0){#ChromeTip{display:block;}}{}/*safari(Chrome)有效*/@mediaalland(min-width:0px){#ChromeTip{display:none\0;}/*Opera仅有效*/}{}</style>IE6IE7IE8火狐Operatd>Safari(Chrome)IE6IE7IE8Firefox歌剧Safari(Chrome)歌剧区分颜色是深绿色。Opera浏览器很时尚吗?Firefox的显着颜色是淡绿色,Firefox是一款非常强大的浏览器。Safari和Chrome的区分色是金黄色,Safari和Chrome都使用Webkit内核