PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

423_html/css_WEB-ITnose

原创
2016-06-24 11:20:13 831浏览

在web页面中敲定一个高度,以高度得到一条首屏线,在首屏线上方的内容是需要第一之间展示给用户的,它能不能及时的展示是能否留住用户的一个非常重要的因素。研究认为,用户最满意的网页打开速度在2s以内。

火极鸟工作室

首屏时间

在web页面中敲定一个高度,以高度得到一条首屏线,在首屏线上方的内容是需要第一之间展示给用户的,它能不能及时的展示是能否留住用户的一个非常重要的因素。研究认为,用户最满意的网页打开速度在2s以内。

  • 首屏时间:指用户在没有滚动页面时,看到的内容渲染完成以及可以交互的时间。
  • 加载时间:整个页面滚动到底部,可以渲染并且交互的时间。

在用户访问一个站点时,浏览器会发送一个请求,请求该html文档,当浏览器接收到文档后,就会开始解析并渲染到窗口上。

在这个过程中,有两个非常重要的时间点:

  • Time Of First Byte(首字节时间)
  • Start Render Time(开始渲染时间)

以上两个时间点,将首屏时间分为了如下图三短时间:

Time Of First Byte

首字节时间越长,浏览器就越晚解析文档,首屏时间就越长。

在 HTML5 performance API 中提供了这个时间点。

如果首字节时间越长,那么瓶颈应该是存在于网络、后端程序等方面。

Start Render Time

Start Render Time是指用户屏幕刚开始显示某些内容的时候。

浏览器最开始是一片空白的,在绘制时就会产生变化,有可能是文字、背景、logo等。

非可视化的DOM如head标签是不会展示在浏览器窗口中的,这意味着在浏览器开始渲染之前,至少需要解析完head标签中的内容。

在一般情况下,只要文档中的css文件准备就绪就可以开始绘制,而我们的css文件都是写在head标签中的。因此,我们可以认为,只要是开始渲染body标签或者解析完head标签的时刻就是 Start Render Time

根据这一特性,我们可以在body标签开始处或者head标签结束处埋下脚本用来获取 Start Render Time。

减少首屏使用的方法

  • 首屏css内嵌
  • css放 head内,js放

  • js尽量异步加载, script标签内添加 async属性
  • 手淘rem方案

    flexible.js

    建议此js在 所有资源加载前执行

    此js会在 html即 document.documentElement上增加一个 data-dpr和 font-size属性,之后的元素都可以用rem来进行设置,这里设置的 font-size就是rem的基准像素

    该方案会把视觉稿分为100份,每一份被认定为一个单位a,1rem被认定为10a。拿750px的视觉稿举例:

    1a = 7.5px1rem = 10a = 75px

    flexible.js到底做了什么?

    1. 如果 meta标签里已经设置了 viewport,则使用已有的 viewport并且对 dpr进行设置
    2. 如果 meta标签里已经设置了 flexible, 则使用里面的内容
    3. 如果 meta标签里没有对以上两个中任意一个进行书写的时候,他会自动获取一个 dpr值。
      1. ios下,会设置dpr为该设备的dpr,只存在dpr=2和dpr=3的情况
      2. 安卓下,统一设置dpr=1

    得到的dpr有什么用?

    有这么一个公式: scale = 1 / dpr(scale即缩放值)

    #span{ font-size: 20px;}[data-dpr="2"] span { font-size: 40px;}	[data-dpr="3"] span { font-size: 60px;}

    上面的一段css代码,分别为dpr=1,dpr=2,dpr=3情况下的 span设置了字体大小。

    • dpr = 1时,scale = 1,font-size = 16px;
    • dpr = 2时,scale = 0.5,font-size = 32px; 对32px的字体进行0.5倍缩放,得到的还是16px的大小
    • dpr = 3时,scale = 1/3,font-size = 48px; 对48px的字体进行1/3倍缩放,得到的还是16px的大小
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。