画像の遅延読み込みは遅延読み込みとも呼ばれます。通常、ページに多くの画像があり、ページの高さまたは幅が複数の画面に及ぶ場合、ページが最初に読み込まれるときは画像のみが読み込まれます。ページがスクロールしているときに、画像が読み込まれる前に表示領域に入ることで、ページの読み込み速度が大幅に向上し、同時の画像リクエストが減ることでサーバーへの負荷も軽減されます。ユーザーが最初の画面にのみ留まる場合は、データを保存することもできます。 TAB に多くの画像がある場合は、TAB にも適用でき、TAB がトリガーされたときに画像がロードされます。
画像の遅延読み込みの原理は比較的単純です。まず、画像の実際のアドレスをカスタム属性 (lazy-src) にキャッシュし、ソース アドレスに 1×1 の完全に透明なプレースホルダー画像を使用します。もちろん、代わりに、プレースホルダー画像を別の画像にすることもできます。

画像の読み込みには JavaScript が使用されるため、ユーザーが JavaScript を無効にしている場合は、代替手段を設定できます。

ページが最初にロードされると、ページ内の画像の位置が取得されてキャッシュされます (オフセットの値が取得されるたびに、ページのリフローがトリガーされます)。表示領域が計算され、位置が取得されると、画像のファイルが表示領域に表示され、src の値が実際のアドレスに置き換えられ、画像の読み込みが開始されます。
ページがスクロールすると、キャッシュされた画像の位置値が表示領域に表示されるかどうかが判断され、代わりに src がロードされます。すべてのイメージがロードされると、繰り返しの操作によって引き起こされるメモリ リークを避けるために、対応するトリガー イベントがアンロードされます。ウィンドウ全体を大きなコンテナと考えると、ページ内に小さなコンテナを設定することもでき、小さなコンテナに画像の遅延読み込みを実装することもできます。
以下は、jQuery プラグインとして作成した実装コードです。
(function( $ ){
$.fn.imglazyload = function( options ){
var o = $.extend({
attr : 'lazy-src',
container : window,
event : 'scroll',
fadeIn : false,
threshold : 0,
vertical : true
}, options ),
event = o.event,
vertical = o.vertical,
container = $( o.container ),
threshold = o.threshold,
// 将jQuery对象转换成DOM数组便于操作
elems = $.makeArray( $(this) ),
dataName = 'imglazyload_offset',
OFFSET = vertical ? 'top' : 'left',
SCROLL = vertical ? 'scrollTop' : 'scrollLeft',
winSize = vertical ? container.height() : container.width(),
scrollCoord = container[ SCROLL ](),
docSize = winSize + scrollCoord;
// 延迟加载的触发器
var trigger = {
init : function( coord ){
return coord >= scrollCoord &&
coord },
scroll : function( coord ){
var scrollCoord = container[ SCROLL ]();
return coord >= scrollCoord &&
coord },
resize : function( coord ){
var scrollCoord = container[ SCROLL ](),
winSize = vertical ?
container.height() :
container.width();
return coord >= scrollCoord &&
coord }
};
var loader = function( triggerElem, event ){
var i = 0,
isCustom = false,
isTrigger, coord, elem, $elem, lazySrc;
// 自定义事件只要触发即可,无需再判断
if( event ){
if( event !== 'scroll' && event !== 'resize' ){
isCustom = true;
}
}
else{
event = 'init';
}
for( ; i isTrigger = false;
elem = elems[i];
$elem = $( elem );
lazySrc = $elem.attr( o.attr );
if( !lazySrc || elem.src === lazySrc ){
continue;
}
// 先从缓存获取offset值,缓存中没有才获取计算值,
// 将计算值缓存,避免重复获取引起的reflow
coord = $elem.data( dataName );
if( coord === undefined ){
coord = $elem.offset()[ OFFSET ];
$elem.data( dataName, coord );
}
isTrigger = isCustom || trigger[ event ]( coord );
if( isTrigger ){
// 加载图片
elem.src = lazySrc;
if( o.fadeIn ){
$elem.hide().fadeIn();
}
// 移除缓存
$elem.removeData( dataName );
// 从DOM数组中移除该DOM
elems.splice( i--, 1 );
}
}
// すべての画像がロードされた後、トリガー イベントをアンロードします
if( !elems.length ){
if(triggerElem ){
triggerElem.unbind(event, fire );
}
else{
container.unbind( o.event, fire );
}
$( window ).unbind( 'resize', fire );
elems = null;
}
};
var fire = function( e ){
loader( $(this), e.type );
};
//バインドイベント
コンテナ = イベント === 'スクロール' ? コンテナ : $( this );
コンテナ.bind( イベント, fire );
$( window ).bind( 'resize' , fire ) ;
// 初期化
loader();
これを返します;
};
})( jQuery );
呼び出し:
$ ( 'img ' ).imglazyload({
event : 'scroll',
attr : 'lazy-src'
});
デフォルトの呼び出しではすべてのパラメータを省略できます。
画像の遅延読み込み用のプラグイン API の説明:
attr string
HTML に対応する画像の実際のアドレスを格納する属性名。デフォルトは Lazy-src です。
コンテナー dom & セレクター
デフォルトのコンテナーはウィンドウであり、コンテナーはカスタマイズできます。
eventstirng
画像の読み込みをトリガーするイベントタイプ、デフォルトは window.onscrollevent
fadeIn boolean
jQuery の fadeIn 効果を使用して表示するかどうか。デフォルトは false です。
しきい値
画像から指定された距離までスクロールするとページがロードされます。デフォルトは 0 です。
vertical boolean
水平にスクロールするかどうか。デフォルトは true (垂直) です。
loadScript (関数の拡張版) boolean
JavaScript の広告画像をブロックせずに読み込むかどうか。デフォルトは false です。

PythonとJavaScriptの主な違いは、タイプシステムとアプリケーションシナリオです。 1。Pythonは、科学的コンピューティングとデータ分析に適した動的タイプを使用します。 2。JavaScriptは弱いタイプを採用し、フロントエンドとフルスタックの開発で広く使用されています。この2つは、非同期プログラミングとパフォーマンスの最適化に独自の利点があり、選択する際にプロジェクトの要件に従って決定する必要があります。

PythonまたはJavaScriptを選択するかどうかは、プロジェクトの種類によって異なります。1)データサイエンスおよび自動化タスクのPythonを選択します。 2)フロントエンドとフルスタック開発のためにJavaScriptを選択します。 Pythonは、データ処理と自動化における強力なライブラリに好まれていますが、JavaScriptはWebインタラクションとフルスタック開発の利点に不可欠です。

PythonとJavaScriptにはそれぞれ独自の利点があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1. Pythonは、データサイエンスやバックエンド開発に適した簡潔な構文を備えた学習が簡単ですが、実行速度が遅くなっています。 2。JavaScriptはフロントエンド開発のいたるところにあり、強力な非同期プログラミング機能を備えています。 node.jsはフルスタックの開発に適していますが、構文は複雑でエラーが発生しやすい場合があります。

javascriptisnotbuiltoncorc;それは、解釈されていることを解釈しました。

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ドリームウィーバー CS6
ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター
