首頁 web前端 H5教程 HTML5中一些可以優化的細節介紹

HTML5中一些可以優化的細節介紹

Oct 29, 2018 pm 04:20 PM
css html html5 javascript

這篇文章帶給大家的內容是關於HTML5中一些可以優化的細節介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

介紹一些最近整理的最佳化細節。圖片壓縮什麼的就不說了,這是優化必須做的。今天就說一下大家寫程式碼時可以培養的優化的細節點。

  • 不濫用float。不濫用web字體。

Float渲染時計算量比較大,並且會脫標、塌陷。我們可以用flex佈局來代替。 web字體引入需要不小的消耗,最好跟設計提一下不要太多。

  • css中避免多餘的樣式設定。

color、font、line-height等都是可以繼承的,所以他們的子元素如果屬性一樣就要重複寫了,特別是font-family。

  • 複雜的一個方法,可以快取函數的回傳值。

function cached (fn) {
    var cache = Object.create(null);
    return (function cachedFn (str) {
        var hit = cache[str];
        return hit || (cache[str] = fn(str))
    })
};
var fk = function (str) {
  return str.charAt(0).toUpperCase() + str.slice(1)
}
var cacheFk = cached(fk)
// 1 step
cacheFk('ui') 
//2 step
cacheFk('ui')
登入後複製

這是我看vue原始碼時發現的一段程式碼,作用就是可以快取一個複雜函數的值,如果參數一樣就不重複計算。但這裡要注意的是,這個快取函數是透過閉包來做的,所以要做一些權衡。

  • 盡量減少layout。

// 触发两次 layout
var newWidth = p.offsetWidth + 50;
p.style.width = newWidth + 'px';
var newHeight = p.offsetHeight + 50;
p.style.height = newHeight + 'px';

// 只触发一次 layout
var newWidth = p.offsetWidth + 50;
var newHeight = p.offsetHeight + 50;
p.style.width = newWidth + 'px';
p.style.height = newHeight + 'px';
登入後複製

所有可觸發layout的操作都會被暫時放入layout-queue 中,等到必須更新的時候,再計算整個隊列中所有操作影響的結果,如此就可只進行一次的layout,從而提升效能。

動畫元素最好脫標,不影響其他模組。這樣也是為了不影響其他元素。

  • transform代替position。

做一些css位移效果,最好用transform而不要用定位。我剛入門的時候用position做動畫卡的一匹~~~

  • 選擇dom元素使用id,但不要為設定css而定義id。

如果用id選擇器,就不要加其他class約束。定義過多id會使重用性降低,維護更困難,所以css中不建議多用id。

  • 多次使用length的時候,要用變數儲存。

var len = dom.length;
for(var i = 0;i < len;i++){};
登入後複製

這樣好處就是每次循環,不用都計算dom的長度了。

  • requestAnimationFrame取代setTimeout

var start = null;
var element = document.getElementById(&#39;SomeElementYouWantToAnimate&#39;);
element.style.position = &#39;absolute&#39;;

function step(timestamp) {
  if (!start) start = timestamp;
  var progress = timestamp - start;
  element.style.left = Math.min(progress / 10, 200) + &#39;px&#39;;
  if (progress < 2000) {
    window.requestAnimationFrame(step);
  }
}

window.requestAnimationFrame(step);
//window.requestAnimationFrame(callback);
返回值是一个 long 整数,请求 ID ,是回调列表中唯一的标识。是个非零值,没别的意义。你可以传这个值给 window.cancelAnimationFrame() 以取消回调函数。
登入後複製

requestAnimationFrame就是不用設定時間的定時器,每1/60s執行一次,這是根據瀏覽器刷新幀數來定的。但兼容是個問題,用的話需要寫好兼容。

  • 如果可以,盡量避免全域查找。

//dom = document.querySelector("#id");
function test() {
    dom = document.querySelector("#id");
}
登入後複製

例如上面的,如果只做test內使用dom 就不要在全域定義,因為執行的時候會現在test函數內部作用域查找,速度會快。

  • 除非不知道遍歷的長度或遍歷物件不要用for in

    function t1(){        //20ms
        var i = 0;
       for(item in anObj) {
           i++
       }
       if( i === 100000){
           console.log(&#39;for in ok&#39;)
       }
    }
    function t2(){     //4ms
        var len = anObj.length;
        var i = 0;
        for(var i = 0 ;i < len;i++){
            i++
        }
        if( i === 100000){
            console.log(&#39;for ok&#39;)
        }
    }
登入後複製

這是我自己試驗循環100000個元素的數組,得出的執行時間(看程式碼)。所以最好別用,一般實際上也不會用到遍歷物件。如果真有特殊狀況遍歷對象,也要注意 ! ! !遍歷出來的東西是不是自己。以為for in是會遍歷其原型鏈的。

  • 骨架螢幕

這個是增強使用者體驗,類似增強版loading。有自動化生成方案。有興趣可以看看。

  • ios禁止頁面辨識手機號碼。 Android禁止識別郵箱。

<meta name="format-detection" content="telephone=no" />
<meta name="format-detection" content="email=no" />
登入後複製
  • 頭部css 底部js。

這個大家都知道,js會阻塞解析dom,增加白螢幕時間。所以一定要注意啊。

其實優化的細節很多,所以要好好培養自己的程式設計習慣,積少成多,慢慢的不斷積累,程式碼的品質一定就不同了。

#

以上是HTML5中一些可以優化的細節介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

vue中怎麼用bootstrap vue中怎麼用bootstrap Apr 07, 2025 pm 11:33 PM

在 Vue.js 中使用 Bootstrap 分為五個步驟:安裝 Bootstrap。在 main.js 中導入 Bootstrap。直接在模板中使用 Bootstrap 組件。可選:自定義樣式。可選:使用插件。

HTML,CSS和JavaScript的角色:核心職責 HTML,CSS和JavaScript的角色:核心職責 Apr 08, 2025 pm 07:05 PM

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

React在HTML中的作用:增強用戶體驗 React在HTML中的作用:增強用戶體驗 Apr 09, 2025 am 12:11 AM

React通過JSX與HTML結合,提升用戶體驗。 1)JSX嵌入HTML,使開發更直觀。 2)虛擬DOM機制優化性能,減少DOM操作。 3)組件化管理UI,提高可維護性。 4)狀態管理和事件處理增強交互性。

了解HTML,CSS和JavaScript:初學者指南 了解HTML,CSS和JavaScript:初學者指南 Apr 12, 2025 am 12:02 AM

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

H5指的是什麼?探索上下文 H5指的是什麼?探索上下文 Apr 12, 2025 am 12:03 AM

H5referstoHTML5,apivotaltechnologyinwebdevelopment.1)HTML5introducesnewelementsandAPIsforrich,dynamicwebapplications.2)Itsupportsmultimediawithoutplugins,enhancinguserexperienceacrossdevices.3)SemanticelementsimprovecontentstructureandSEO.4)H5'srespo

H5與HTML5相同嗎? H5與HTML5相同嗎? Apr 08, 2025 am 12:16 AM

"h5"和"HTML5"在大多數情況下是相同的,但它們在某些特定場景下可能有不同的含義。 1."HTML5"是W3C定義的標準,包含新標籤和API。 2."h5"通常是HTML5的簡稱,但在移動開發中可能指基於HTML5的框架。理解這些區別有助於在項目中準確使用這些術語。

HTML:結構,CSS:樣式,JavaScript:行為 HTML:結構,CSS:樣式,JavaScript:行為 Apr 18, 2025 am 12:09 AM

HTML、CSS和JavaScript在Web開發中的作用分別是:1.HTML定義網頁結構,2.CSS控製網頁樣式,3.JavaScript添加動態行為。它們共同構建了現代網站的框架、美觀和交互性。

HTML:建立網頁的結構 HTML:建立網頁的結構 Apr 14, 2025 am 12:14 AM

HTML是構建網頁結構的基石。 1.HTML定義內容結構和語義,使用、、等標籤。 2.提供語義化標記,如、、等,提升SEO效果。 3.通過標籤實現用戶交互,需注意表單驗證。 4.使用、等高級元素結合JavaScript實現動態效果。 5.常見錯誤包括標籤未閉合和屬性值未加引號,需使用驗證工具。 6.優化策略包括減少HTTP請求、壓縮HTML、使用語義化標籤等。

See all articles