レスポンシブ デザイン - メディア クエリ - 特定の画像を読み込まない方法
-
29-10-2019 - |
質問
さて、メディアクエリと display: none;
.
ここまでは順調ですね。ただし、これらのイメージは依然としてこれらのデバイスにダウンロードされるため、帯域幅の増加が発生します。
これらのイメージが指定されたデバイスにダウンロードされないようにする適切な方法は何ですか?
ご返答いただければ幸いです。
解決
今すぐ唯一のアクセス可能なソリューションは、<noscript>
タグで画像を包み込み、後でJavaScriptを使用して画像を出力することです。 cookieは、最初のページロード(HTMLPreloadScanner)でもCDNSを使用して動作しません。。あなたのイメージが常にビューポートの100%ではない場合は、ブラウザスニッフィングは無用です。
slimmage.jsは、3KBのVanilla JS 。のコンテキストフレンドリーな応答イメージを実装します。
マークアップはかなり単純です:
<noscript data-slimmage>
<img src="http://z.zr.io/ri/1s.jpg?width=150" />
</noscript>
.
もちろん、これを抽象化するためのサーバーサイドヘルパーを作ることができます。
<noscript data-slimmage>
<img src="http://z.zr.io/ri/1s.jpg?width=150" />
</noscript>
他のヒント
私が考えることができる 2 つのオプション:
- ブラウザスニッフィングを使用してサーバー上の小型デバイスを検出し、画像を参照しない別の HTML を送信します。
- HTML ではなく CSS 経由で画像を表示します (
style
必要に応じて属性)、いずれかを使用しますbackground-image
または:before
/:after
そしてcontent
(IE 6 または 7 ではサポートされていません)、その CSS コードをメディア クエリでラップして、画面が大きいデバイスでのみ表示されるようにします。
JavaScript依存関係を気にしない場合 window.innerWidth
十分に大きなスクリーン用の画像タグを挿入します。
JavaScriptが有効になっていて、ウィンドウが十分に大きい場合にのみ要求されます。
追加のJavaScriptを使用して問題がない場合は、このを試すことができます。メディアクエリについて検索して学びながら、私はそれにつまずいた。
所属していません StackOverflow