目錄
html
css
javascript
首頁 web前端 html教學 网站代码优化_html/css_WEB-ITnose

网站代码优化_html/css_WEB-ITnose

Jun 24, 2016 am 11:24 AM

将面试整理的网站优化资料记一记,针对移动端的代码说的。

html

1: 标签嵌套层级不要太深,标签尽量简洁化.如懒加载后将data属性去除

2: DNS预先处理 dns-prefetch,如果一个页面有多个不同地址的引用,则DNS预解析很有用。页面预先处理link标签的prefetch

3: 大量图片的懒加载策略,以及一些元素利用ajax在onload后实行延迟加载

4: 对一些js的异步加载

css

1: 嵌套层级不要太深,一般三层最多了。这个主要还是看团队项目结构,命名规范对这个有很大影响,互有取舍,是命名长一点不会有重复还是命名方便一点嵌套深一点

2: css解析从右向左,所以最右边的应该是相对少一点的,比如.on.li_lick 就比.li_click.on要好(如果.on很多的话)

3: html用了base64的img的话,并不会缓存起来,可以将这个base64的图片放在css文件里,css会缓存,图片就缓存起来了

4: 尽量不用后代元素选择器,最右边的一层不要是标签,尤其是像div这种非常常用的标签

5: 多使用css的继承,而不是每一次都书写时都全部重写一遍。写多个css属性时,能连在一起写的就连在一起写。如:background: #fff url() center center no-repeat

javascript

以一个for循环来构建DOM文档举例(使用jquery)

// var lis = document.getElementsByTagName("li")

var lis = [1, "2", "3", "4"];

var ulObj = $("ul");

var lisLength = lis.length;

var html = "";

for (var i = 0; i

if (lis[i] === 1) {

html += '

  • ' + lis[i] + '
  • ';

    } else {

    html += '

  • ' + lis[i] + '
  • ';

    }

    }

    ulObj.html(html);

    01. 缓存变量。$("ul") 使用jquery这种语句记得将其存在变量里,每一句$()都是非常重的函数,能尽量少用就少用。

    02. 使用诸如getElementsByTagName这类LIVE类型的collections时,更要注意对其length的缓存

    03. var html = ""。 赋值时,用字面量的方式

    04. for 循环。实践证明,递减循环比递增循环要快那么一点点。

    05. 对于大型的for循环,可能导致执行时页面卡住,可以考虑使用数组分块技术将循环分割成多个循环一部分一部分的执行

    06. for循环里的条件判断lis.length一定要缓存在变量里,不然每一次都要去查询一次长度。

    07. 构建DOM结构。一般有三种方式:

    ①: 使用节点关系createElement,appendChild这些去构建生成节点关系。

    ②:使用文档片段documentFragment的方式。

    ③:直接用字符串拼接:这个又分为两种,直接+号拼接和数组join拼接。第三种速度效率最高。而第三种里面在移动端里使用+号比数组快很多,在PC端得看浏览器,不同浏览器不同版本对这两种方式的优化不同。

    08. 插入到DOM文档:使用innerHTML的方式比appendChild要效率高。综上,移动端还是使用+号拼接字符串最后使用innerHTML的方式

    09. 插入到DOM中时,一定要将插入结果放在变量里,在for循环结束后插入,千万不能在for循环中执行插入操作,会造成大量的重绘重排。尽量减少对DOM的操作

    10. 这个例子需要动态添加,动态删除,每个li标签有click事件。如果每次插入到DOM后给li添加click事件,那么删除时就要清除注册在li上的click事件。非常麻烦。所以采用事件委托的机制,将事件绑定在ul上,通过target属来判断

    11. 条件判断: == 与 ===,==要进行类型转换比较,多了一个步骤,效率低

    12. 使用直接函数,而不是与之等同的函数,比如$.ajax(),其他$.get()等最终都是调用$.ajax(),多余的步骤多余的调用必然导致效率相对低

    13. 选择器: 使用原生的选择器一定是最快的getElementById(),getElementsByTagName()这些,因为是用编译语言写好的方法。所以jquery里$("li")标签选取器的效率是很高的,所以$("li .my_li")这样写比$(".my_li")效率要高

    14. 善用事件委托:如果有许多类似的结构要绑定事件,都利用事件冒泡的机制,在上层元素上绑定事件

    15. 将一些多条件判断赋值语句用数组来做,比如:

    switch(a) {

    case 0:

    result = "一";

    break;

    case 1:

    result = "二";

    break;

    }

    改成:

    var arr = ["零", "一"];

    result = arr[a]

    16. 对于有复杂动画的模块,尽量用定位使其脱离文档流。利用css3实现的动画,调用一下translate3d(0, 0, 0)或其他的的3d变换,就会调起硬件加速,这个页面其他动画就都会有硬件加速的效果了。要考虑低端机型的话慎用

    17. 函数尽量简单,少用闭包,嵌套的对象成员也会影响性能,总之结构尽量简单,能少一层就少一层

    18. 对于非常频繁调用的函数,如scroll触发的函数,可以考虑使用函数节流,debounce,throttle

    转自: https://segmentfault.com/a/1190000004223993

    作者:  zzzddd

    本篇文章由 HTML5梦工场 小编从其他媒体精选前端相关文章转载,仅供网友学习和交流,如果小编的工作有侵犯到您的权益,请及时联系小编QQ:123464386,将会在第一时间进行处理!投稿与合作,请发至邮箱:tommy@html5dw.com

    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡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

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

    熱門文章

    <🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌
    北端:融合系統,解釋
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌

    熱工具

    記事本++7.3.1

    記事本++7.3.1

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

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強大的PHP整合開發環境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    SublimeText3 Mac版

    SublimeText3 Mac版

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

    熱門話題

    Java教學
    1664
    14
    CakePHP 教程
    1423
    52
    Laravel 教程
    1319
    25
    PHP教程
    1269
    29
    C# 教程
    1248
    24
    了解HTML,CSS和JavaScript:初學者指南 了解HTML,CSS和JavaScript:初學者指南 Apr 12, 2025 am 12:02 AM

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

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

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

    HTML,CSS和JavaScript的未來:網絡開發趨勢 HTML,CSS和JavaScript的未來:網絡開發趨勢 Apr 19, 2025 am 12:02 AM

    HTML的未來趨勢是語義化和Web組件,CSS的未來趨勢是CSS-in-JS和CSSHoudini,JavaScript的未來趨勢是WebAssembly和Serverless。 1.HTML的語義化提高可訪問性和SEO效果,Web組件提升開發效率但需注意瀏覽器兼容性。 2.CSS-in-JS增強樣式管理靈活性但可能增大文件體積,CSSHoudini允許直接操作CSS渲染。 3.WebAssembly優化瀏覽器應用性能但學習曲線陡,Serverless簡化開發但需優化冷啟動問題。

    HTML的未來:網絡設計的發展和趨勢 HTML的未來:網絡設計的發展和趨勢 Apr 17, 2025 am 12:12 AM

    HTML的未來充滿了無限可能。 1)新功能和標準將包括更多的語義化標籤和WebComponents的普及。 2)網頁設計趨勢將繼續向響應式和無障礙設計發展。 3)性能優化將通過響應式圖片加載和延遲加載技術提升用戶體驗。

    HTML與CSS vs. JavaScript:比較概述 HTML與CSS vs. JavaScript:比較概述 Apr 16, 2025 am 12:04 AM

    HTML、CSS和JavaScript在網頁開發中的角色分別是:HTML負責內容結構,CSS負責樣式,JavaScript負責動態行為。 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、使用語義化標籤等。

    HTML的角色:構建Web內容 HTML的角色:構建Web內容 Apr 11, 2025 am 12:12 AM

    HTML的作用是通過標籤和屬性定義網頁的結構和內容。 1.HTML通過到、等標籤組織內容,使其易於閱讀和理解。 2.使用語義化標籤如、等增強可訪問性和SEO。 3.優化HTML代碼可以提高網頁加載速度和用戶體驗。

    HTML:是編程語言還是其他? HTML:是編程語言還是其他? Apr 15, 2025 am 12:13 AM

    HTMLISNOTAPROGRAMMENGUAGE; ITISAMARKUMARKUPLAGUAGE.1)htmlStructures andFormatSwebContentusingtags.2)itworkswithcsssforstylingandjavascript for Interactivity,增強WebevebDevelopment。

    See all articles