ウォーターフォールレイアウトのJavaScript実装の詳細説明_javascriptスキル
この記事では、JavaScript ウォーターフォール レイアウト の関連コンテンツを紹介し、参考として皆さんと共有します。具体的な内容は次のとおりです
。JS 原則
上で述べたように、列レイアウトは単純に絶対レイアウトです。絶対レイアウトは 1 日あたり 10 元のレンガ職人のようなものです。列のレイアウトは、監督者がそこに立ってレンガを動かすのを見ているというものです。 彼らもみなレンガを動かしており、一人は一生懸命働いており、もう一人は自分のIQを誇示しています。単に! ! !
これを聞いたら、暗い人生と向き合いましょう。
列レイアウトの原理は、実際には絶対レイアウトとあまり変わりません。
また、3 つの部分に分かれており、1 つはアダプティブ ページの読み込み、もう 1 つはスライド 読み込み、3 つ目はレスポンシブ レイアウトです。
別途説明:
1. アダプティブローディング
まずコードを見てみましょう:
var $ = function() { //一个hacks return document.querySelectorAll.apply(document, arguments); } var waterFall = (function(){ //初始化布局 var arrHeight = []; //列的高度 var columns = function() { //计算页面最多可以放多少列 var bodyW = $('#container')[0].clientWidth, pinW = $(".column")[0].offsetWidth; return Math.floor(bodyW / pinW); } //设置瀑布流居中 var getHtml = function() { var cols = $('.column'), //获得已有的列数 arrHtml = []; for (var i = 0, col; col = cols[i++];) { var htmls = col.innerHTML.match(/<img(?:.|\n|\r|\s)*?p>/gi); //获取一个columns的 arrHtml = arrHtml.concat(htmls); } return arrHtml; } //获得数组中最低的高度 var getMinIndex = function() { //获得最小高度的index var minHeight = Math.min.apply(null, arrHeight); //获得最小高度 for (var i in arrHeight) { if (arrHeight[i] === minHeight) { return i; } } } var createCol = function() { var cols = columns(), //获得列数 contain = $("#container")[0]; contain.innerHTML = ''; //清空数据 for (var i = 0; i < cols; i++) { var span = document.createElement("span"); span.className = "column"; contain.appendChild(span); } } //初始化列的高度 var initHeight = function() { var cols = columns(), arr = []; for (var i = 0; i < cols; i++) { arr.push(0); } arrHeight = arr; } //创建一个ele并且添加到最小位置 var createArticle = function(html){ var cols = $('.column'), index = getMinIndex(), ele = document.createElement('article'); ele.className = "panel";; ele.innerHTML = html; cols[index].appendChild(ele); arrHeight[index] += ele.clientHeight; } //遍历获得的html然后添加到页面中 var reloadImg = function(htmls) { for (var i = 0, html, index; html = htmls[i++];) { createArticle(html); } } var onload = function() { var contain = $("#container")[0], //获得容器 arrHtml = getHtml(); //获得现有的所有瀑布流块 //创建列,然后进行加载 createCol(); //初始化arrHeight initHeight(); //进行页面的重绘 reloadImg(arrHtml); return this; } })();
プログラムを参照したら、最初にそのエントリ関数を探します。次に、onload 関数を観察します。合計 4 つの関数があることがわかります。
ユーザーの幅が不確かであるため、列数も不確かです。このとき実際のサイズを求めて計算する必要があります。次に、元のデータを再配置する必要があります。
したがって、getHtml は最初から元のデータ (innerHTML) を取得することになります。
その後、さらに幅のある列を追加できます。
createCol 関数は、列を追加する幅がより広くなります。
このとき、各列の高さを保存するための配列 (arrHeight) が必要です (デフォルトは 0)。
その後、ページを並べ替えることができます =>reloadImg(arrHtml)。arrHtml が元のデータです。
さて、ここで基本的なレンガの移動が完了しました。
次に、強化を開始します。
2. スライドローディング
これは私が直接コピーしたものであると考えられるため、機能がよく書かれており、再利用性が優れています。コードを表示
var isLoad=function() { //是否可以进行加载 var scrollTop = document.documentElement.scrollTop || document.body.scrollTop, wholeHeight = document.documentElement.clientHeight || document.body.clientHeight, point = scrollTop + wholeHeight; //页面底部距离header的距离 var lastHei = Math.min.apply(null,arrHeight); return (lastHei < point) ? true : false; } var dealScroll = (function(){ window.onscroll = ()=>{dealScroll();} var container = $('#container')[0]; return function(){ if(isLoad()){ for(var i = 0,html,data;data = dataInt[i++]; ){ html = tpl.temp(data.src); //获得数据然后添加模板 createArticle(html); } } return this; } })();
それでは、もうありません。
3. レスポンシブレイアウト
これも直接コピーしました。
var resize = (function(){ window.onresize = ()=>{resize();}; var flag; return function(){ clearTimeout(flag); flag = setTimeout(()=>{onload();},500); return this; }
以上がこの記事の全内容です。皆様が JavaScript ウォーターフォール フローを学習するのに役立つことを願っています。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









記事では、JavaScriptライブラリの作成、公開、および維持について説明し、計画、開発、テスト、ドキュメント、およびプロモーション戦略に焦点を当てています。

この記事では、ブラウザでJavaScriptのパフォーマンスを最適化するための戦略について説明し、実行時間の短縮、ページの負荷速度への影響を最小限に抑えることに焦点を当てています。

フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

この記事では、ブラウザ開発者ツールを使用した効果的なJavaScriptデバッグについて説明し、ブレークポイントの設定、コンソールの使用、パフォーマンスの分析に焦点を当てています。

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

この記事では、ソースマップを使用して、元のコードにマッピングすることにより、Minified JavaScriptをデバッグする方法について説明します。ソースマップの有効化、ブレークポイントの設定、Chrome DevtoolsやWebpackなどのツールの使用について説明します。

Console.log出力の違いの根本原因に関する詳細な議論。この記事では、Console.log関数の出力結果の違いをコードの一部で分析し、その背後にある理由を説明します。 �...

エントリーレベルのタイプスクリプトチュートリアルをマスターしたら、TypeScriptをサポートするIDEで独自のコードを作成し、JavaScriptにコンパイルできるはずです。このチュートリアルは、TypeScriptのさまざまなデータ型に飛び込みます。 JavaScriptには、NULL、未定義、ブール値、数字、文字列、シンボル(ES6によって導入)とオブジェクトの7つのデータ型があります。 TypeScriptはこれに基づいてより多くのタイプを定義し、このチュートリアルではすべてを詳細に説明します。 ヌルデータ型 JavaScriptのように、Typescriptのnull
