CSS只适用于Opera 11吗?

Tom*_*kay 9 css browser opera css-hack

有没有办法让一些CSS规则仅适用于Opera(11)?

Knu*_*Knu 11

我喜欢挑战!
我花了一些时间,但我终于找到了它:

body {background:0} /* default */
@media not screen and (1) {
body {background:red} /* OP 11 */
}
@media not screen and (orientation) {
body {background:green} /* for the earlier versions of Opera that pick the first media query's rule + chrome/safari */
}
Run Code Online (Sandbox Code Playgroud)

浏览器测试:

  • 红色:歌剧11
  • 绿色:Opera 10和10.5 + WebKit浏览器
  • 无:Opera 9.26 + Firefox 3.6 + IE9

它与错误处理有关,也与NOT否定全局结果有关(WebKit浏览器在没有有效值的情况下不能正确评估方向).由于orientation在presto 2.7中受支持,因此第二个媒体查询为FALSE.

错误定向黑客听起来像是个好名字给我.

  • 怎么会有人发现这样的黑客?:-o (2认同)

Spu*_*ley 5

你有这么好的理由吗?

我总是建议不要进行浏览器检测.几乎在每个人都想使用它的情况下,使用特征检测更好.如果您发现所需的功能是否受支持,那么当它们赶上时,您将自动开始支持其他浏览器的新版本,而无需像浏览器检测脚本那样始终保持站点的最新状态.

对于特征检测,我建议的最好的工具之一是使用Modernizr.

对于浏览器检测 - 特别是像Opera11这样的新浏览器品牌 - 我无法真正提出任何万无一失的建议.正确的答案是查看用户代理字符串,但用户可以轻松更改以欺骗其他浏览器(通常是,尤其是Opera用户,因为他们是最常尝试绕过的网站浏览器检测并尝试阻止它们)