有没有一种方法,使一些CSS规则仅可见于歌剧院(9.5 +)?
Answer 1:
这个技巧适用于在最新的Opera:
@media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {
#id {css rule}
}
它不触及任何其他浏览器我测试的远,但是这可能是实际数月,随着网络技术的繁荣等。
Answer 2:
在Opera 10.63的伟大工程
noindex:-o-prefocus, .class {
color:#fff;
}
Answer 3:
纯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支持,并通过了所有的测试酸,所以如果事情没有出现合适的,这可能是因为其它原因(错误别的地方的代码,细节或拐角情况下,你不应该依赖等。)
Answer 4:
不要以为“检测戏”。
认为“检测不支持的功能X浏览器”。 例如,这个JavaScript语句可以检测到支持MOZ-边界半径的浏览器:
typeof (getComputedStyle(document.body, '').MozBorderRadius)=='string'
这是相当于用于基于WebKit的浏览器(Safari浏览器,浏览器):
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
Answer 5:
Opera12
@media (min-resolution: .001dpcm) {
_:-o-prefocus, .class {
background: red;
};
}
Answer 6:
你可以使用Modernizr的( http://www.modernizr.com/ )来检测要使用的CSS功能-它适用的类名body元素,所以你可以然后据此构建你的CSS。
Answer 7:
我写了检测CSS属性支持一个jQuery $。支持扩展。
http://gist.github.com/556448
此外,我写了一个小片段,使真正的小厂商黑客:
// Sets browser infos as html.className
var params = [];
$.each($.browser, function(k, v) {
var pat = /^[a-z].*/i;
if(pat.test(k)) { params.push(k); }
});
params = params.join(' ');
$('html').addClass(params);
这导致例如:
<html lang="de" class="webkit version safari">
or
<html lang="de" class="opera version">
在样式表中使用这种方式:
html.opera #content_lock {
background:rgba(0,0,0,0.33);
}
Answer 8:
我能想到的唯一的办法是检查用户代理时,它的Opera浏览器只引用样式表。 由于用户代理可以用这个来搞砸可能不是100%可靠。
Answer 9:
您可以使用javascript写了<link>
,包括特定的CSS文件。
if (navigator.userAgent.indexOf(’Opera’) != -1) {
document.write(””);
}
else {
document.write(””);
}
对于Opera 7,你可以这样做:
/*Visible to only Opera*/
@media all and (min-width: 0) {
/* css rules here */
}
然而,这是一般不好的做法基于浏览器的嗅探做造型。
Answer 10:
<链路HREF = “opera.css” 的rel = “样式表” 类型= “文本/歌剧” 媒体= “所有”/>
品尝这里
Answer 11:
<link href="opera.css" rel="stylesheet" type="text/opera" media="all" />
虽然这个解决方案是相当一个CSS黑客,也不能保证它会在Opera的未来版本中支持。 你也可以考虑使用以下方案:
@media all and (-webkit-min-device-pixel-ratio:10000),not all and (-webkit-min-device-pixel-ratio:0) {
.element{/*style for opera only*/}
}
http://bookmarks-online.net/link/1308/css-including-style-for-opera-only
Answer 12:
不以任何方式,我会建议。
检查在谷歌Javascript或PHP浏览器嗅探器。 有些人可能是这样过时的,你需要增加检测歌剧9.5+,但是。
浏览器嗅探器(用于造型)一般是不好的做法。
另外请注意,歌剧9.5+为用户提供了掩盖他们的浏览器IE作为渲染任何一种嗅探无用的选项。
编辑:正如你在另外一个答案看到,有window.opera.version()
我不知道window.opera
对象所包含的信息。 但是,你应该看看,看看这个对象仍然是可用的,当有人已成立歌剧被视为IE或其他一些浏览器。
Answer 13:
@certainlyakey对我的作品真棒:
@media所有和(-webkit分钟设备像素比:10000),不是所有的和(-webkit分钟设备象素比:0){#ID {CSS规则}}
我有一个网页的按钮,文本将不会在Opera中正确显示。 该按钮出现多次(加入购物车)。 应用此修复后,它的工作完美。