背景 ブラウザの互換性の問題を解決するのは非常に面倒なことです。高度な技術はそれほど必要ありませんが、開発のニーズに応じて解決する必要があります。最近、開発プロジェクトでいくつかの互換性の問題に遭遇しました。これらの問題の解決策を記録しておき、次回同じ問題に遭遇したときに直接使用したいと考えています。また、他の人にも役立つことを願っています。 互換性の問題と解決策 1. Object-fitはIE11およびEdgeと互換性がありません。いくつかのCSSハックを使用できます。 画像のスタイルを設定するには、object-fitの代わりにbackground-sizeとbackground-positionを使用します。 <img class="loadingImage" src="url"/> .loadingImage{ 幅: 100%; 高さ: 100%; 遷移: すべて 1 の緩和; オブジェクトフィット: カバー; } 上記のコードは次のように変更できます。 <div class="loadingImage"></div> .loadingImage{ 幅: 100%; 高さ: 100%; 背景サイズ: カバー; 背景の位置: 中央; 背景画像: url(url); } ビデオ再生の場合、object-fit:cover を使用すると、ビデオが画面に合わせて拡大縮小されない問題を解決できます。 <ビデオクラス="ビデオ"></ビデオ> 。ビデオ { 幅: 100%; 高さ: 自動; 位置: 相対的; 左: 50%; 上位: 50%; 変換: translate(-50%, -50%); オブジェクトフィット: カバー; } 次の CSS を使用してビデオ タグを設定すると、object-fit が IE および Edge と互換性がない問題を解決できます。 <ビデオクラス="ビデオ"></ビデオ> 。ビデオ { 幅: 100%; 高さ: 自動; 位置: 相対的; 左: 50%; 上位: 50%; 変換: translate(-50%, -50%); オブジェクトフィット: 塗りつぶし; } 2. window.onloadイベントは、画像やその他のリソースが読み込まれた後にメソッドを実行しますが、ビデオリソースが読み込まれたかどうかは検出しません。次のコードを使用して、ビデオが読み込まれたかどうかを検出できます。 <ビデオ id="ビデオ"></ビデオ> ビデオを document.getElementById('ビデオ') に設定します。 ビデオの準備状態が 4 の場合 console.log('完了!') } 3. CSSトランジションが実行されると、transitionendイベントがトリガーされますが、互換性があります。次のコードを使用して、ブラウザ間の互換性を解決できます。 関数 checkTransitionEvent() { var el = document.createElement('div') var 遷移 = { '遷移':'遷移終了', 'OTransition':'oTransitionEnd', 'MozTransition':'遷移終了', 'WebkitTransition':'webkitTransitionEnd' } for(t in transitions){ if(el.style[t] !== 未定義){ transitions[t]を返します。 } } } 4. オンホイールイベントの互換性 サポート() { let support = "onwheel" in document.createElement("div") ? "wheel" : // 最近のブラウザは "wheel" をサポートしています document.onmousewheel !== undefined ? "mousewheel" : // Webkit と IE は少なくとも "mousewheel" をサポートしています "DOMMouseScroll"; 返品サポート }, 5. ホイールイベントのwheelDelta属性とdetail属性は、ブラウザによって値が異なります。次のコードを使用して正規化できます。https://stackoverflow.com/questions/5527601/normalizing-mousewheel-speed-across-browsersを参照してください。 var ホイール距離 = function(evt){ if (!evt) evt = イベント; var w = evt.wheelDelta、d = evt.detail; もし(d){ if (w) return w/d/40*d>0?1:-1; // オペラ そうでない場合は -d/3 を返します。 // Firefox; TODO: OS X では /3 を実行しないでください。 } else return w/120; // IE/Safari/Chrome TODO: Chrome OS X の場合は /3 }; var ホイール方向 = function(evt){ if (!evt) evt = イベント; 戻り値 (evt.detail<0) ? 1 : (evt.wheelDelta>0) ? 1 : -1; }; 6. requestAnimationFrameの互換性 cancelAnimationFrame = window.cancelAnimationFrame とします。 || window.mozCancelAnimationFrame || 関数(id) { clearTimeout(id) }; requestAnimationFrame = window.requestAnimationFrame とします。 || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || 関数 (コールバック) { return setTimeout(コールバック, 1000 / 60) }; 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 |
目次クラスコンポーネント機能コンポーネントインタビューのよくある質問: React における ref...
フレックス レイアウトは現在よく使用されるレイアウト方法ですが、場合によっては小さな問題が発生するこ...
3 つの方法を使用する簡単な例は次のとおりです。インラインスタイル: <!doctypehtm...
DNS(ドメインネームサーバー)は、ドメイン名とそれに対応する IP アドレスを変換するサーバーです...
1. ナビゲーション: 順序なしリストとその他のラベル要素ナビゲーションを記述するために最も一般的に...
1. サーバーのセットアップリモート リポジトリは実際にはローカル リポジトリと何ら変わりなく、純粋...
これはモーダル ボックスのドラッグのケースです。ここで実装する関数は次のとおりです。 1. ポップア...
Vim は強力なフルスクリーン テキスト エディターであり、Linux/UNIX で最も一般的に使用...
この記事の例では、検証コードを実装するためのjsの具体的なコードを参考までに共有しています。具体的な...
国慶節の休暇後、Windows アップデート後に VMware 仮想マシンが開けなくなり、「VMwa...
目次FastDFSについて1. 画像を検索する2. イメージをインストールする3.1. 必要なディレ...
目次1. 遅いクエリSQLを見つけて最適化する方法a. スローログに基づいてスロークエリSQLを見つ...
1. 改行なしを実現するには<nobr>タグを使用するコードをコピーコードは次のとおりで...
目次依存関係をインストールする構成使用1.アイコン検索ページに入る2. 使用したいアイコンの英語名を...
目次序文シナリオシミュレーション要約する序文最近、sql_mode の話題については何度も話し合われ...