在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到底做了什么? 如果 meta标签里已经设置了 viewport,则使用已有的 viewport并且对 dpr进行设置 如果 meta标签里已经设置了 flexible, 则使用里面的内容 如果 meta标签里没有对以上两个中任意一个进行书写的时候,他会自动获取一个 dpr值。 ios下,会设置dpr为该设备的dpr,只存在dpr=2和dpr=3的情况 安卓下,统一设置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的大小