有没有办法让一些CSS规则只对Opera(9.5 +)可见?
适用于Opera 10.63
noindex:-o-prefocus, .class { color:#fff; }
*: - o-prefocus,body {background-color:red;} code>
据我所知,与opera v12一起使用!
2> certainlyake..:
这个黑客适用于最新的Opera:
@media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {
#id {css rule}
}
就我测试而言,它并没有触及任何其他浏览器,但这可能是实际的几个月,随着网络技术的繁荣等.
在Opera 12上未检测到.
Vitaly Batonov使用:-o-prefocus选择器要简单得多.
3> Kornel..:
使用纯CSS攻击你可能无法安全地限制你正在黑客攻击的上层版本(例如,-o-prefocus
在你的黑客停止修复并开始破坏它们之后很久就可以支持).
// remember to limit maximum version, because hacking all future versions
// will eventually break the page
if (window.opera && window.opera.version() < 10)
{
document.documentElement.className += ' opera9';
}
在CSS中:
.opera9 .element-to-hack { /*declarations for opera <= 9 only*/ }
但请首先仔细检查CSS规范,以确保您所攻击的内容实际上是一个错误.Opera 10的具有完全CSS2.1支持,并通过了所有的测试酸,所以如果事情没有出现合适的,这可能是因为其它原因(错误别的地方的代码,细节或拐角情况下,你不应该依赖等.)
4> hallvors..:
不要想"检测Opera".
想想"检测不支持功能x的浏览器".例如,此JavaScript语句允许您检测支持moz-border-radius的浏览器:
typeof (getComputedStyle(document.body, '').MozBorderRadius)=='string'
这相当于基于WebKit的浏览器(Safari,Chrome):
typeof (getComputedStyle(document.body, '').WebKitBorderRadius)=='string'
把它们放在一起,我们可以想出类似的东西
function detectBorderRadiusSupport(){
var styleObj;
if( window.getComputedStyle ){
styleObj=window.getComputedStyle(document.body, '');
}else{
styleObj=document.body.currentStyle;
}
return typeof styleObj.BorderRadius != 'undefined' || typeof styleObj.MozBorderRadius != 'undefined' || typeof styleObj.WebKitBorderRadius != 'undefined';
}
// the below must be inside code that runs when document.body exists, for example from onload/document.ready/DOMContentLoaded event or inline in body
if(!detectBorderRadiusSupport())document.body.className+=' fakeBorderRadius';
CSS:
body.fakeBorderRadius .roundMyCorners{
/* CSS for Opera and others to emulate rounded corners goes here,
typically various background-image and background-position properties */
}
警告:未经测试:-p
如果你可以忽略一个临时的浏览器错误,我鼓励你这样做.因此,如果问题纯粹是化妆品而不影响功能,我建议你不要做任何事情.即使它让一些遇到问题的用户看起来更糟糕,我认为最好避免使用会导致问题的变通方法和黑客攻击.
我只是想补充一点,当一个浏览器据称支持一个功能时,并不意味着它的实现是完美无缺的.因此,在某些情况下,您可能想要禁用特定浏览器的功能.就像Opera 10.53中的"box-shadow"一样,仍有一些重绘问题.在这种情况下,除了将它隐藏在Opera之外,我没有别的办法.你呢?
5> 小智..:
Opera12
@media (min-resolution: .001dpcm) {
_:-o-prefocus, .class {
background: red;
};
}