浏览器专属 CSS Hack:区分 Firefox / Opera / Safari / Internet Explorer


CSS Hack 是在标准 CSS 没办法兼容各浏览器显示效果时才会用上的补救方法,在各浏览器厂商解析 CSS 没有达成一致前,我们只能用这样的方法来完成这样的任务。网上你可能能搜索到一大堆的 CSS Hack,但是我今天发布的你可能并不都很了解,因为这些都是只针对单独一个浏览器的 CSS Hack。

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

<p id="opera">我来自 Opera 7.2 - 9.5</p>
<p id="safari">我是神奇的 Safari</p>
<p id="firefox">我来自 Firefox</p>
<p id="firefox12">我是你爷爷 Firefox 1 - 2 </p>
<p id="ie7">我是囧 IE 7</p>
<p id="ie6">我是脑瘸 IE 6</p>

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

<style type="text/css">
body p{display: none;}
</style>

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

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

<!--[if IE 7]>
<style type="text/css">
</style>
<![endif]--><!--[if IE 6]>
<style type="text/css">
</style>
<![endif]-->

使用 CSS 解析器 Hacks 区分 IE

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

/* IE 7 */
html > body #ie7
{*display: block;}/* IE 6 */
body #ie6
{_display: block;}

CSS Hack 区分 Firefox

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

/* Firefox 1 - 2 */
body:empty #firefox12
{display: block;}/* Firefox */
@-moz-document url-prefix()
{#firefox { display: block; }}

CSS Hack 区分 Safari

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

/* Safari */
@media screen and (-webkit-min-device-pixel-ratio:0)
{#safari { display: block; }}

CSS Hack 区分 Opera

/* Opera */
@media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0)
{head~body #opera { display: block; }}

然后,全部合在一起便是

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>CSS Browser Hacks</title>
<style type="text/css">
body p
{
display: none;
}
/* Opera */
html:first-child #opera
{
display: block;
}
/* IE 7 */
html > body #ie7
{
*display: block;
}
/* IE 6 */
body #ie6
{
_display: block;
}
/* Firefox 1 - 2 */
body:empty #firefox12
{
display: block;
}
/* Firefox */
@-moz-document url-prefix()
{
#firefox { display: block; }
}
/* Safari */
@media screen and (-webkit-min-device-pixel-ratio:0)
{
#safari { display: block; }
}
/* Opera */
@media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0)
{
head~body #opera { display: block; }
}
</style>
</head><body>
<p id="opera">我来自 Opera 7.2 - 9.5</p>
<p id="safari">我是神奇的 Safari</p>
<p id="firefox">我来自 Firefox</p>
<p id="firefox12">我是你爷爷 Firefox 1 - 2 </p>
<p id="ie7">我是囧 IE 7</p>
<p id="ie6">我是脑瘸 IE 6</p>
</body>
</html>

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

-Via.

文章来源: http://leeiio.me/css-hack-for-firefox-opera-safari-ie/

浏览器专属 CSS Hack:区分 Firefox / Opera / Safari / Internet Explorer相关推荐

  1. 浏览器兼容css hack,CSS Hack技术解决多浏览器兼容问题

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

  2. CSS hack:区分IE6 IE7 Firefox

    区别不同浏览器,CSS hack写法: 区别IE6与FF: background:orange;*background:blue; 区别IE6与IE7: background:green !impor ...

  3. [完美]原生JS获取浏览器版本判断--支持Edge,IE,Chrome,Firefox,Opera,Safari,以及各种使用Chrome和IE混合内核的浏览器...

    [完美]原生JS获取浏览器版本判断--支持Edge,IE,Chrome,Firefox,Opera,Safari,以及各种使用Chrome和IE混合内核的浏览器 原文:[完美]原生JS获取浏览器版本判 ...

  4. css 自定义字体 Internet Explorer,Firefox,Opera,Safari

    FROM: https://developer.mozilla.org/ja/CSS/@font-face http://nicewebtype.com/notes/2009/10/30/how-to ...

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

    区别不同浏览器,CSS hack写法: 区别IE6与FF: background:orange;*background:blue; 区别IE6与IE7: background:green !impor ...

  6. 区分各浏览器的CSS hack(包括360、搜狗、opera)

    虽然说使用css hack来解决页面兼容性bug并不是个好办法,但是有时候这些hack还是用的着的,比如你接受了一个二手或是三手的遗留界面,杂乱无章的css代码,只在某个浏览器下有兼容bug,而且需要 ...

  7. hack (浏览器兼容css hack)

    1.hack的原理 由于不同的浏览器对CSS的支持及解析结果不一样,还由于CSS中的优先级的关系.我们就可以根据这个来针对不同的浏览器来写不同的CSS. CSS Hack大致有3种表现形式,CSS类内 ...

  8. 针对IE6\7\8\9\10浏览器的CSS hack大全详解

    目前IE内核浏览器仍然是国内主流浏览器,占据着PC浏览器的大部分市场份额,版本从IE6到IE10,所有前段工作者都必须面对和解决多个IE浏览器对代码的兼容性问题.在很多情况下,我们需要专门针对IE写c ...

  9. 区分IE6,IE7,firefox三种浏览器的CSS HACK

    2010年01月18日 10:29 区别IE6与FF: background:orange;*background:blue; 区别IE6与IE7: background:green !importa ...

最新文章

  1. Daily Scrum02 12.09
  2. QT的QTextStream类的使用
  3. python开发web项目_Django2:Web项目开发入门笔记(20)
  4. 用了这么多年的PCA可视化竟然是错的!!!
  5. 使用awk和grep做简单的统计
  6. 阿里云资源编排服务Python SDK使用入门
  7. 在计算机中打开word2010三种方法,Word2019中打开文档的三种方式
  8. 【排队论 | 数学建模常用模型】
  9. 为Linux的ibus添加五笔98输入法
  10. 梯度提升决策树GBDT
  11. 论文阅读 [TPAMI-2022] Locally Connected Network for Monocular 3D Human Pose Estimation
  12. BAT疯狂抢人, AI应届博士生年薪201万, 网友: 转行来得及吗???
  13. 搭建es+kabana
  14. 高通华裔工程师跳楼自杀!中年IT男,为何这么难?
  15. 无法在 Mountain Lion 上启动 visual Paradigm 软件安装程序
  16. m2e-wtp的作用
  17. WebView实现改变选中区域颜色以及添加下划线
  18. 无人驾驶汽车系统入门(十八)——使用pure pursuit实现无人车轨迹追踪
  19. WPF编程;上位机编程;C#编程;仿QQ基础实现(一)之界面预览
  20. access找不到输入表或者dual_神奇的DUAL表总结

热门文章

  1. java cookie p3p_P3P script src 解决cookie存取的跨域问题 java 终极解决办法
  2. ionic android绝对定位,Safari中的CSS故障与Ionicons作为背景内容和绝对定位
  3. ssh 登陆错误后禁止ip再次登陆_macOS破坏SSH默认规则,程序员无法登录Web服务器...
  4. python快捷键设置_Pycharm学习教程(5) Python快捷键相关设置
  5. Spring注解 @Async 实现异步调用方法
  6. 将button变成圆形(有弧度)
  7. 删除用户和用户下的所有表
  8. [NOIP2013] 花匠
  9. java线程跟多线程
  10. [程序猿感悟] [悟] 两篇不错的文章 (转载自 stay4it )