Chrome 安定版を含む一部のブラウザーでは、次のことができます。
h3 {
-webkit-filter: grayscale(1);
filter: grayscale(1);
}
ご存じないでしょうが、h1 は完全にグレースケールでレンダリングされます。古いものはすべて新しくなりました。
とにかく—これを機能検出する方法を知っている人はいますか?
うまくいかない場合は、他のスタイルを適用できる必要がありますfilter
。
Chrome 安定版を含む一部のブラウザーでは、次のことができます。
h3 {
-webkit-filter: grayscale(1);
filter: grayscale(1);
}
ご存じないでしょうが、h1 は完全にグレースケールでレンダリングされます。古いものはすべて新しくなりました。
とにかく—これを機能検出する方法を知っている人はいますか?
うまくいかない場合は、他のスタイルを適用できる必要がありますfilter
。
いわゆる更新された回答:
OPが良い点を述べたので、私は答えを更新していますが、これには以前の答えに関連するものや矛盾するものはありません。これは単なるブラウザの検出です。
Alan H. は、IE が 10 番目になる前に言及しました。バージョンはfilter
css プロパティをサポートしていますが、私たちが知っている方法ではありません (つまりCSS3 filter
)。
したがって、 detect のみを機能させたい場合はCSS3 filter
、先に進んで少しbrowser-detectionを使用する必要があります。コメントで述べたように。
プロパティを使用しdocumentMode
、それを単純な機能検出と組み合わせることで、いわゆる IE の誤検知を除外できます。
function css3FilterFeatureDetect(enableWebkit) {
//As I mentioned in my comments, the only render engine which truly supports
//CSS3 filter is webkit. so here we fill webkit detection arg with its default
if(enableWebkit === undefined) {
enableWebkit = false;
}
//creating an element dynamically
el = document.createElement('div');
//adding filter-blur property to it
el.style.cssText = (enableWebkit?'-webkit-':'') + 'filter: blur(2px)';
//checking whether the style is computed or ignored
//And this is not because I don't understand the !! operator
//This is because !! is so obscure for learning purposes! :D
test1 = (el.style.length != 0);
//checking for false positives of IE
//I prefer Modernizr's smart method of browser detection
test2 = (
document.documentMode === undefined //non-IE browsers, including ancient IEs
|| document.documentMode > 9 //IE compatibility moe
);
//combining test results
return test1 && test2;
}
if(document.body.style.webkitFilter !== undefined)
また
if(document.body.style.filter !== undefined)
追加情報:
簡単な機能検出には、上記のコードを使用してください。サポートされている機能のリストについては、こちらをご覧ください。
filter
Chrome での のライブ デモンストレーションについては、こちらをご覧ください。
さらに 2 つのリソースがあります。
私がこの回答を書いているとき、webkit
それを機能させるにはベンダープレフィックスを使用する必要があります。
@Sepehrの回答を基に構築しますが、少し近代化し、余分な行を削除するには:
var supportsFilters = (function() {
var filterEl = document.createElement('div');
filterEl.style.cssText = 'filter:blur(2px)';
return filterEl.style.length != 0 && (document.documentMode === undefined || document.documentMode > 9);
})();