遭遇したいくつかのブラウザ互換性の問題について簡単に説明します

遭遇したいくつかのブラウザ互換性の問題について簡単に説明します

背景

ブラウザの互換性の問題を解決するのは非常に面倒なことです。高度な技術はそれほど必要ありませんが、開発のニーズに応じて解決する必要があります。最近、開発プロジェクトでいくつかの互換性の問題に遭遇しました。これらの問題の解決策を記録しておき、次回同じ問題に遭遇したときに直接使用したいと考えています。また、他の人にも役立つことを願っています。

互換性の問題と解決策

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 を応援していただければ幸いです。

<<:  MySQL複合インデックスの詳細な研究

>>:  XHTML Web ページ チュートリアル

推薦する

JavaScript での実行コンテキストと実行スタックの例の説明

JavaScript - 原則シリーズ日常の開発では、既存のプロジェクトを引き継ぐときは常に、まず他...

UbuntuはCUDAの複数のバージョンをインストールし、いつでも切り替えることができます

CUDA とは何かを紹介するのではなく、複数の CUDA バージョンの共存とリアルタイム切り替えをど...

MySQL query_cache_type パラメータと使用方法の詳細

MySQL クエリ キャッシュを設定する目的は次のとおりです。クエリ結果をキャッシュしておくと、次回...

nginxを使用して画像サイズを動的に変換し、サムネイルを生成します。

Nginx ngx_http_image_filter_module モジュール (nginx バ...

URLパラメータに基づくNginx転送

使用シナリオ:ジャンプ パスは、傍受された URL に応じて動的に構成する必要があります。これは、イ...

nginx アンチホットリンクおよびアンチクローラー設定の詳細な説明

新しい設定ファイルを作成します (たとえば、nginx インストール ディレクトリの下の conf ...

WeChatアプレットは水平および垂直スクロールを実現

この記事の例では、WeChatアプレットの水平スクロールと垂直スクロールを実現するための具体的なコー...

Vue ElementUI は非同期読み込みツリーを実装します

この記事の例では、vue ElementUI の非同期読み込みツリーを実装するための具体的なコードを...

Raspberry Pi 4 に Ubuntu 19.10 をインストールするための詳細なチュートリアル

以前、raspbian で実行したときに opencv の一部の依存関係をパッケージ化できず、一部の...

LeetCode の SQL 実装 (196. 重複するメールボックスを削除する)

[LeetCode] 196.重複したメールを削除するSQL クエリを記述して、Person とい...

Firefox ブラウザでバックグラウンド ミュージックを再生するための究極のソリューション (Chrome マルチブラウザ対応)

FirefoxでBGMを再生するための推奨コードがテストに合格しました空のコントロールパネルを開いて...

Linux ハードウェア構成コマンドの例

ハードウェア ビュー コマンドシステム # uname -a # カーネル/オペレーティング システ...

Linux インストール MongoDB の起動と一般的な問題の解決

MongoDB のインストール プロセスと問題記録1. MongoDBのインストールMongoDBを...

CSS フレキシブルレイアウト FLEX、メディアクエリ、モバイルクリックイベントの実装

フレックスレイアウト定義: Flexレイアウトの要素は、 Flex 、または略して「コンテナー」と呼...

MySQL が InnoDB テーブルが独立したテーブルスペースか共有テーブルスペースかを判断する方法の詳細な説明

序文InnoDB はデータをテーブルスペースに保存します。デフォルト設定では、初期サイズが 10 M...