background-attachment のブラウザー サポートを検出する方法はありますか?
編集: この機能はデスクトップ ブラウザーで広くサポートされていますが、ポータブル デバイスではあまりサポートされていないため、この機能を検出できるようにしたいと考えています。
background-attachment のブラウザー サポートを検出する方法はありますか?
編集: この機能はデスクトップ ブラウザーで広くサポートされていますが、ポータブル デバイスではあまりサポートされていないため、この機能を検出できるようにしたいと考えています。
{ background-attachment:fixed } を使用すると、現在のモバイル デバイスでは背景画像がまったく表示されません。画像がすべてのモバイル デバイスで確実に表示されるようにするには、サポートをテストする必要があります。サポートされていない場合は、background-attachment プロパティを「initial」(デフォルト状態) または「scroll」(デフォルト状態) に設定する必要があります。 .
モバイル ブラウザは固定背景をサポートしていると誤って報告するため、現在、固定背景のサポートを直接かつ具体的にテストすることは不可能です。このバグを自分で確認するには、このテストをモバイル ブラウザーにロードします。
http://codepen.io/mattthew/pen/PwEqJa
function supportsCSS(value) {
try {
var style = document.body.style;
if (!("backgroundAttachment" in style)) return false;
var oldValue = style.backgroundAttachment;
style.backgroundAttachment = "fixed";
var isSupported = (style.backgroundAttachment === value);
style.backgroundAttachment = oldValue;
return isSupported;
}
catch (e) {
return false;
}
}
var el = document.getElementById('result');
var txt = '<b>This device & broswer supports:</b><br>';
txt += '{ background-attachment:fixed; } : ' + supportsCSS('fixed') + '<br>';
txt += { background-attachment:foo; } : ' + supportsCSS('foo');
el.innerHTML = txt;
元は @chao によって書かれたコードに基づく
複数の方法でサポートを間接的にテストすることができます。
オプション 1: 小さな画面で固定背景を削除する
このオプションは、CSS メディア クエリを使用して、小さい画面を対象とし、画面幅が 1024 ピクセル以下のデバイスでスタイルを上書きします (デバイスは、固定された背景を非表示としてレンダリングする可能性があります)。このオプションの利点は次のとおりです。非常に軽量で、わずかな CSS しか必要としません。
#some_element {
background-attachment: fixed;
}
@media all and (max-device-width: 1024px) {
/*
overwrite property for devices with
screen width of 1024px or smaller
*/
#some_element {
background-attachment: scroll;
}
}
残念ながら、画面幅が 1280px と 1366px の少数のタブレット ブランドがあり、これらは最小のデスクトップ画面と重なっています (このリストを CSS の高さで並べ替えます)。最も安全な方法は、この重複領域にスクロールする背景を使用して、背景画像が確実に表示されるようにすることです。 安全にプレイしたい場合は、max-device-width: 1366px を使用してください。 ただし、これらの巨大なタブレットを使用している人の数は、画面の小さいラップトップを使用している人の数よりもはるかに少なくなっています。
オプション 2: タッチ イベントとマウス イベントをテストする
このオプションは、ブラウザがタッチ イベント API をサポートしているかどうかをテストするために JS を使用するため、タッチ スクリーン デバイス上にある可能性が高くなります (固定された背景を非表示としてレンダリングする可能性が高いデバイス) 。これは重量オプションです。Modernizrと jQueryが必要です。
if(Modernizr.touch) {
// this browser claims to support touch, so remove fixed background
$('#some_element').css('background-attachment','scroll');
}
残念ながら、このオプションにも灰色の領域があります。一部のブラウザーは偽陽性を示し、一部のブラウザーは偽陰性を示します。次のようなマウス イベントをテストできます。
$('body').mousemove(function(event){
// this device (touch or not) has a mouse, so revert to fixed background
$('#some_element').css('background-attachment','fixed');
$('body').unbind('mousemove');
});
ただし、固定された背景をサポートしていないタッチ スクリーン ラップトップにマウスが接続されている可能性があるため、コードによってリスクが増大します。
あなたは見て、document.body.style
それを確認するかもしれません
Chrome、FF、Opera、および Safari はすべて、プロパティに無効な値を設定しようとしても無視されます。試行すると、IE9 は例外をスローします。したがって、どちらかが発生した場合、その値は確実にサポートされません。(ブラウザーがやみくもに値を設定してそれを保持するだけでは、まだ機能しない可能性があります。しかし、その時点では、とにかくブラウザーが多くを伝えることはできません。)
function supportsFixedBackground() {
try {
var style = document.body.style;
if (!("backgroundAttachment" in style)) return false;
var oldValue = style.backgroundAttachment;
style.backgroundAttachment = "fixed";
var isSupported = (style.backgroundAttachment === "fixed");
style.backgroundAttachment = oldValue;
return isSupported;
}
catch (e) {
return false;
}
}
もう IE6 を気にする必要はありません。また、固定背景をサポートしない別のブラウザーも手元にないため、「固定」設定をテストすることはできません。
CSS プロパティ値のサポートは、次の手順で検出できます。
DIV
)。style
DOMプロパティの値(element.style.backgroundAttachment
あなたの場合)をチェックする値(fixed
あなたの場合)に設定します。style
値を指定された文字列と比較します。あなたの場合、このようなもの:
var elem = document.createElement('div');
elem.style.backgroundAttachment = 'fixed';
var isSupported = 'fixed' === elem.style.backgroundAttachment;
http://www.w3schools.com/cssref/pr_background-attachment.asp
ページの少し下に、主要なブラウザ アイコンの写真があります。どのアイコンの画像もグレー表示されません。すべてのブラウザでサポートされていると書かれています
fixed
IE6 以前を除くすべてのデスクトップ ブラウザでサポートされています。
ほとんどのモバイル ブラウザーでサポートされていますが、ビューポートの処理により、多少の相違が生じる場合があります。