问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

HTML5网页优化时应该注意哪些?

发布网友 发布时间:2022-04-24 18:46

我来回答

3个回答

懂视网 时间:2022-05-12 04:11

本篇文章给大家带来的内容是关于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('SomeElementYouWantToAnimate');
    element.style.position = 'absolute';
    
    function step(timestamp) {
     if (!start) start = timestamp;
     var progress = timestamp - start;
     element.style.left = Math.min(progress / 10, 200) + 'px';
     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('for in ok')
     }
     }
     function t2(){ //4ms
     var len = anObj.length;
     var i = 0;
     for(var i = 0 ;i < len;i++){
      i++
     }
     if( i === 100000){
      console.log('for ok')
     }
     }

    这是我自己试验循环100000个元素的数组,得出的执行时间(看代码)。所以最好别用,一般实际也不会用到遍历对象。如果真有特殊情况遍历对象,也要注意 !!!遍历出来的东西是不是自己。以为for in是会遍历其原型链的。

  • 骨架屏

  • 这个是增强用户体验,类似增强版loading。有自动化生成方案。感兴趣可以看看。

  • ios禁止页面识别手机号。Android禁止识别邮箱。

  • <meta name="format-detection" content="telephone=no" />
    <meta name="format-detection" content="email=no" />
  • 头部css 底部js。

  • 这个大家都知道,js将阻塞解析dom,增加白屏时间。所以一定要注意啊。

    其实优化的细节很多,所以要好好培养自己的编码习惯,积少成多,慢慢的不断积累,代码的质量肯定就不同了。

    热心网友 时间:2022-05-12 01:19

    重点是素材!重点是素材!重点是素材!一般一个只有图片、文字、音频的H5,2-5页左右,5M以内最佳,保证加载时间足够,当然是越小越好。
    因为素材没有优化好导致的问题太多了,因为手机加载资源的性能有限,必须要考虑H5在不同的手机机型、系统、网络优劣状态下打开后的效果。
    如果手机性能不佳,H5作品偏大,网络也不够流畅的情况下,会导致作品长时间加载不出,甚至闪屏、卡顿等问题。
    当然这只是其中之一。既然提到了不同的手机机型,还要考虑不同手机屏幕上手机适配问题。
    也就是H5页面的尺寸要怎么做才合适,一般会做一个带有出血框的画布,外框尺寸422X748px
    内框尺寸:375X603px。重要的信息放内框,不重要的信息铺满外框,比如背景图。

    热心网友 时间:2022-05-12 02:37

    现在做优化效果慢,还是做百度竞价吧

    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    ...明若晓溪》的结局是什么?明晓溪到底和谁一起了?急急急急急_百度... ...时怎样才能做到剪好的画面像我们平时看的电视画面一样 夫妻感情最脆弱往往在这3个时刻 为什么美国至今没有女总统? 从东莞站坐动车到广东工业大学龙洞校区,在附近在哪个站下比较近?_百度... ...组织和排列疏松的海绵组织之分,叶脉里有运输水分和无机盐的 &amp;... 三峡机场机票最长时间可订几个月票 有哪位朋友知道:郑州新郑至宜昌三峡机场在10月25日以后就没有机票预订... 在东平买个110平的房子,首付和所有的都加上需要多少钱? 你住的城市下雨了,很想问你有没有带伞.可是我忍住了,因为我怕你说没带... - 信息提示 html 怎么让图片预先加载完, 用img标签的时候图片加载可慢了 对象提分手 怎么回复她? reactnative 使用WebView加载H5,热跟新之后,为什么安卓机显示白屏,加载不出来? H5页面在iPhone上 使用QQ浏览器和自带Safari浏览器打开无法加载数据怎 ... 女朋友想分手了我应该怎么说什么? 陈冠希体贴陪妻女度假,你觉得他会复出娱乐圈吗? 个人是做android使用Webview加载H5的时候,网络图片显示不出来,是空白... 套链怎么发朋友圈 用木疙瘩做h5,突然不能加载出来,一直停留在正在加载页面。连预览也不可以。求问大神该怎么解决啊 物理魔术环套链 杨颖陈冠希的旧照流出,信息量很大,黄教主心里会怎么想? H5页面上传图片后预览时加载速度慢是什么原因啊? 摩托车套链45号钢是什么意思 项链款式有哪些? D字母套链寓意 海参一共有多少品种? 女王套链的寓意和话术 心形钻石套链的寓意 什么叫套链。。。 男朋友说不合适要分手,我该如何挽回呢? 我电脑蓝屏出现代码为 0x0000009C ,这是电脑哪个地方出现故障,求高手解答 html 语句 &lt;img src=&quot;本地路径&quot; /&gt; 就是图片不出来 求教求救 我是本地... 陈冠希晒女儿Alaia搞怪萌照,甜甜圈比脸大眼神抢镜,他还会复出吗? wap h5页怎样提高加载速度 IH5作品编辑页面加载不出来怎么办 如果陈冠希没出现艳照门事件,他会火到什么程度? 斗罗大陆h5加载途径资源失败怎么办? 女朋友提出分手了,我该怎么回复? h5页面未加载完毕,不能点击按钮。要怎么加方法,页面未加载完毕的时候参数还没加在出来点击按钮会报错? H5为什么动态的加载代码加不进去 JS控制图片大小,但是图片首次加载不能显示,需要刷新后才会正常,急急急啊 在和女朋友谈恋爱之后想分手,该怎么说呢? 求约会的幽默句子 eclipse怎么配置maven库 怎么在eclipse中配置maven 如何配置maven到eclipse eclipse maven选项怎么配置settings? 华泰期货有限公司电话是多少? 华泰期货怎么样?如何评价?