html中ul標籤的優化
對於前端的優化接觸的太少了,平常在pc端上感覺正常,但是到了移動端,時間一長就不行了。今天說說html中ul的優化問題,我給了一種傳統的寫法(耗時的),一種優化的寫法.
模擬一種業務流程吧,類似留言牆,大家留言後,要將留言顯示在留言牆上面。
開始我們的程式碼寫吧
如果在平常我會這樣寫,但是假如我接收了一百萬條數據,程式碼如下:
nbsp;html> <meta> <title>没有进行性能优化的案例</title> <p></p> <script> var List = function(container,items,itemHeight){ this.container = container; this.items = items; this.itemHeight = itemHeight; this.init(); this.update(); } List.prototype.init = function(){ //创建一个ul this.ul = document.createElement("ul"); this.ul.style.position = "relative"; //将元素添加到p中 this.container.appendChild(this.ul); } List.prototype.update = function(){ for(var i = 0; i < this.items.length; i++){ var liTag = document.createElement("li"); liTag.textContent = this.items[i] this.ul.appendChild(liTag); } } //模拟数据 var array = []; for(var i = 0; i < 1000000; i++){ array.push(i) } new List(document.getElementById("pElement"),array,16); </script>
整整使用了大約一分鐘,我的天啊,我想大家早已散去,可以看到時間都花在了Rendering中,並且要等所有的li都渲染好了之後,才會顯示,用戶體驗感極差.
優化方案就是減少Rendering.設定數量合適的li標籤,根據位置調整li的內容與樣式
nbsp;html> <meta> <title>性能优化</title> <p>List的性能优化</p><br> <br> <br> <p></p> <script> var List = function(container,items,itemHeight){ this.container = container; this.items = items; this.itemHeight = itemHeight; this.init(); this.update(); } List.prototype.init = function(){ //创建一个ul标签 this.ul = document.createElement("ul"); this.ul.style.position = "relative"; //获取的显示的高度内可以最多显示多少条数据 var len = this._maxLength(); var html = ""; for(var i = 0; i < len; i++){ html += "<li>" + this.items[i] + ""; } this.ul.innerHTML = html this.container.appendChild(this.ul); var self = this; this.container.addEventListener("scroll",function(){ self.update() }) } List.prototype._maxLength = function(){ var h = this.container.offsetHeight; return Math.min(Math.ceil(h / this.itemHeight),this.itemHeight); } List.prototype.update = function(){ //计算出ul的高度 this.ul.style.height = this.items.length * this.itemHeight + "px"; this.ul.style.margin = 0; //计算出滑动条目前位置前有多少个li标签 var start = Math.floor(this.container.scrollTop / this.itemHeight); console.log("start:",start) //获得所有的子节点 var items = this.ul.children; //获得长度 var len = this._maxLength(); for(var i = 0; i < len; i++){ var item = items[i]; if(!item){ item = items[i] || document.createElement("li"); this.ul.appendChild(item); } var index = start + i; item.innerHTML = this.items[index]; item.style.top = this.itemHeight * (index) + "px"; item.style.position = "absolute"; } } //模拟数据 var array = []; for(var i = 0; i < 1000000; i ++){ array.push(i) } var list = new List(document.getElementById("pElement"),array,16); </script>
再來看一眼性能圖
同樣的寫法這樣速度直接提高了20倍.
更多html中ul標籤的優化相關文章請關注PHP網!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

HTML適合初學者學習,因為它簡單易學且能快速看到成果。 1)HTML的學習曲線平緩,易於上手。 2)只需掌握基本標籤即可開始創建網頁。 3)靈活性高,可與CSS和JavaScript結合使用。 4)豐富的學習資源和現代工具支持學習過程。

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

HTML定義網頁結構,CSS負責樣式和佈局,JavaScript賦予動態交互。三者在網頁開發中各司其職,共同構建豐富多彩的網站。

GiteePages靜態網站部署失敗:404錯誤排查與解決在使用Gitee...

AnexampleOfAstartingTaginHtmlis,beginSaparagraph.startingTagSareEssentialInhtmlastheyInitiateEllements,defiteTheeTheErtypes,andarecrucialforsstructuringwebpages wepages webpages andConstructingthedom。

實現圖片點擊後周圍圖片散開並放大效果許多網頁設計中,需要實現一種交互效果:點擊某張圖片,使其周圍的...

HTML、CSS和JavaScript是Web開發的三大支柱。 1.HTML定義網頁結構,使用標籤如、等。 2.CSS控製網頁樣式,使用選擇器和屬性如color、font-size等。 3.JavaScript實現動態效果和交互,通過事件監聽和DOM操作。

網頁批註功能的Y軸位置自適應算法本文將探討如何實現類似Word文檔的批註功能,特別是如何處理批註之間的間�...
