CSS Hack技术解决多浏览器兼容问题
创始人
2024-07-14 05:00:21
0

本文向大家描述一下如何使用CSS Hack技巧解决DIV+CSS布局多浏览器兼容问题,针对不同的浏览器写不同的CSS代码的过程,就叫CSS Hack,相信本文介绍一定会让你有所收获。

CSS Hack技巧汇总

CSS Hack简介

我们在用DIV+CSS制作网页时,由于不同的浏览器,比如InternetExplorer6,InternetExplorer7,MozillaFirefox等对CSS的支持及解析结果不一样,导致生成的页面效果不一样,得不到我们所需要的页面效果。这时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。这个针对不同的浏览器写不同的CSS代码的过程,就叫CSS Hack。

为了向你展示这些CSS Hack是否正常运作,我新建六个P标签,并给每一个P标签一个特有的id。这将向你展示CSS Hack的运作情况。

  1. 我来自Opera7.2-9.5

     
  2. 我是神奇的Safari

     
  3. 我来自Firefox

     
  4. 我是FF前辈Firefox1-2

     
  5. 我是IE7

     
  6. 我是残品IE6

     
  7.  

然后我让这些P标签默认都不显示

  1.  
  2. bodyp{display:none;}  
  3.  
  4.  

使用IE CSS条件注释区分IE浏览器

最简单的区分IE浏览器的方法自然是使用他们的条件注释。微软创建了一个强大的语法来让我们去实现这个功能。我不想再详细地介绍IE条件注释了,我想你在搜索引擎能搜索到上万个搜索条目,我这里只要这两个:

  1.  
  2.  
  3.  

#p#使用CSS解析器Hacks区分IE

虽说IE条件注释十分简单好用,但是如果你想把全部的CSS放到一个文件里的话,那么你不得不使用别的方法。注意这里的IE7Hack将只对IE7有效,因为IE6根本不知道>选择符。同时你也得注意>选择符对于其他浏览器同样是无效的。

  1. /*IE7*/  
  2. html>body#ie7  
  3. {*display:block;}  
  4.  
  5. /*IE6*/  
  6. body#ie6  
  7. {_display:block;}  
  8.  

CSS Hack区分Firefox

***个使用了body:empty来区分Firefox1和2。第二个hack使用了全部Firefox浏览器的专有扩展-moz。-moz只对Firefox有效,使用这个Hack大可不必担心其他浏览器的影响。

  1. /*Firefox1-2*/  
  2. body:empty#firefox12  
  3. {display:block;}  
  4.  
  5. /*Firefox*/  
  6. @-moz-documenturl-prefix()  
  7. {#firefox{display:block;}}  

CSS Hack区分Safari

Safari的CSS Hack与Firefox的hack看起来很像,使用的是Safari浏览器的专有扩展-webkit且只对Safari浏览器有效。

  1. /*Safari*/  
  2. @mediascreenand(-webkit-min-device-pixel-ratio:0)  
  3. {#safari{display:block;}}  
  4.  

 #p#CSS Hack区分Opera

  1. /*Opera*/  
  2. @mediaalland(-webkit-min-device-pixel-ratio:10000),  
  3. notalland(-webkit-min-device-pixel-ratio:0)  
  4. {head~body#opera{display:block;}}  
  5.  

然后,全部合在一起便是完整代码:

  1.  
  2. "http://www.w3.org/TR/html4/strict.dtd"> 
  3.  
  4.  
  5.  
  6. CSSBrowserHacks 
  7.  
  8. bodyp  
  9. {  
  10. display:none;  
  11. }  
  12. /*Opera*/  
  13. html:first-child#opera  
  14. {  
  15. display:block;  
  16. }  
  17. /*IE7*/  
  18. html>body#ie7  
  19. {  
  20. *display:block;  
  21. }  
  22. /*IE6*/  
  23. body#ie6  
  24. {  
  25. _display:block;  
  26. }  
  27. /*Firefox1-2*/  
  28. body:empty#firefox12  
  29. {  
  30. display:block;  
  31. }  
  32. /*Firefox*/  
  33. @-moz-documenturl-prefix()  
  34. {  
  35. #firefox{display:block;}  
  36. }  
  37. /*Safari*/  
  38. @mediascreenand(-webkit-min-device-pixel-ratio:0)  
  39. {  
  40. #safari{display:block;}  
  41. }  
  42. /*Opera*/  
  43. @mediaalland(-webkit-min-device-pixel-ratio:10000),  
  44. notalland(-webkit-min-device-pixel-ratio:0)  
  45. {  
  46. head~body#opera{display:block;}  
  47. }  
  48.  
  49.  
  50.  
  51.  
  52. 我来自Opera7.2-9.5

     
  53. 我是神奇的Safari

     
  54. 我来自Firefox

     
  55. 我是FF前辈Firefox1-2

     
  56. 我是囧IE7

     
  57. 我是残品IE6

     
  58.  
  59.  

 CSS Hack虽好且方便兼容各浏览器,但是通不过W3C验证,所以还得自己权衡是否有必要去使用。

【编辑推荐】

  1. 兼容IE6,IE7,IE8,Firefox的CSS HACK写法
  2. CSS display:inline和float:left两者区别
  3. CSS HACK区别IE6、IE7、IE8、Firefox兼容性
  4. JS在IE和Firefox兼容性问题及解决方案
  5. IE8浏览器中正式版CSS hack技术用法

 

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...