css优化

前端工程——基础篇

狂风中的少年 提交于 2020-01-07 08:31:11
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> # 前端工程——基础篇 > 喂喂喂,那个切图的,把页面写好就发给研发工程师套模板吧。 你好,切图仔。 不知道你的团队如何定义前端开发,据我所知,时至今日仍然有很多团队会把前端开发归类为产品或者设计岗位,虽然身份之争多少有些无谓,但我对这种偏见还是心存芥蒂,酝酿了许久,决定写一个系列的文章,试着从工程的角度系统的介绍一下我对前端,尤其是Web前端的理解。 只要我们还把自己的工作看作为一项软件开发活动,那么我相信读过下面的内容你也一定会有所共鸣。 ## 前端,是一种GUI软件 现如今前端可谓包罗万象,产品形态五花八门,涉猎极广,什么高大上的基础库/框架,拽炫酷的宣传页面,还有屌炸天的小游戏……不过这些一两个文件的小项目并非是前端技术的主要应用场景,更具商业价值的则是复杂的Web应用,它们功能完善,界面繁多,为用户提供了完整的产品体验,可能是新闻聚合网站,可能是在线购物平台,可能是社交网络,可能是金融信贷应用,可能是音乐互动社区,也可能是视频上传与分享平台…… > 从本质上讲,所有Web应用都是一种运行在网页浏览器中的软件,这些软件的图形用户界面(Graphical User Interface,简称GUI)即为前端。 如此复杂的Web应用,动辄几十上百人共同开发维护,其前端界面通常也颇具规模

web前端开发图文全面解析

牧云@^-^@ 提交于 2020-01-06 14:11:41
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 前端是什么? 在回答这个问题之前,我想到了一道面试题: 当我们在浏览器中输入网址并按回车之后,接下来会发生什么? 我们来简单地看一看 “网页展现” 的整个过程。 比如这里有一个用户,它需要访问 abc.com 这个网址。一般来说,当用户输入一个域名时,是在请求一个 HTML 资源。当他完成域名解析之后,他的浏览器会向 abc.com 这个域名所指向的 Web 服务器发出请求。 有时候 Web 服务器直接就可以返回用户的请求了;有时候 Web 服务器还需要向数据库查询一些数据,然后才能把处理结果返回给用户。 当用户的浏览器拿到服务器返回的 HTML 资源之后,就开始解析并显示 HTML 的内容了。 一般来说,HTML 页面需要 CSS 资源来描述页面的样式。比如浏览器在解析 HTML 时发现了一个 CSS 外链 abc.com/a.css ,它就会去请求这个资源。 HTML 页面往往还需要加载外部的 JS 资源,比如 abc.com/a.js ,此时浏览器同样会向服务器请求这个资源。 当所需的资源都加载完成之后,这个页面就可以提供完整的外观和功能了。整个过程差不多就是这个样子了。 我们看一看这张流程图,可以在中间画一道竖线,把它分成左右两个部分。 我们会发现,这道线左侧的事情发生在浏览器端,我们称之为 “前端”

网站性能优化(website performance optimization)2

爷,独闯天下 提交于 2020-01-04 03:43:14
我们先研究下构建渲染树前的几个步骤:也就是DOM和CSSOM,通常这些步骤的效果最差使你的网页呈现速度非常慢,我们是讨论尽可能快的将HTML流式传输给客户端,使浏览器能够开始构建DOM,还有其他注意事项吗?有一个HTML的尺寸呢?我想应该尽可能小,我们来看看实现这一目的一些策略,假设我想要优化这个HTML 要优化CSSOM,我们需要删除不必要的样式,缩小和压缩文件并缓存,对吧?对,这些都是很好的策略,安市没记错的话,当我们运行PageSpeed Insignts的时候,它还推荐我们查看下阻止呈现的CSS。假设有个简单的网页,包含一个CSS文件,浏览器下载了HTML然后发现并获取CSS,浏览器最早什么时候就会绘制网页? 我们不能绘制没有样式的网页,也就是阻止呈现的CSS,可以对此作出优化?CSS使我们能够按照特定条件范围应用样式,如这个文件,body规则在所有条件下都适用。但是当设备处于横向模式时,我们会应用特殊的规则。是菜单悬浮在右侧,类似的,如果有用户想要打印网页,我们就会调整文本大小,适用更小的字号,媒体查询对自适应设计来说很重要,但是这回如何帮助我优化关键渲染路径呢?假设我要呈现使用这个CSS文件的网页,我们注意到浏览器会阻止呈现,直到解析了所有的样式,但是直观的来说,你认为它应该对print规则阻止呈现吗?我认为如果我们不打印网页的话,则没必要呈现,对吧?对

桌面端前端性能优化策略

…衆ロ難τιáo~ 提交于 2020-01-04 03:40:18
网络加载类 减少 HTTP 资源请求次数 合并静态资源图片、JavaScript 或 CSS 代码,减少页面请求数和资源请求消耗 避免重复的资源,防止增加多余请求 减小 HTTP 请求大小 减少没必要的图片、JavaScript、CSS 及 HTML 代码 对文件进行压缩优化 使用 gzip 等方式压缩传输文件 将 CSS 或 JavaScript 放到外部文件中,避免使用 <style> 或 <script> 标签直接引入 在 HTML 文件中引用外部资源可以有效利用浏览器的静态资源缓存 避免页面中空的 href 和 src 当 <link> 标签的 href 属性为空,或 <script> 、 <img> 、 <iframe> 标签的 src 属性为空时,浏览器在渲染的过程中仍会将 href 属性或 src 属性中的空内容进行加载,直至加载失败,这样就阻塞了页面中其他资源的下载进程,而且最终加载到的内容是无效的,因此要尽量避免 // 不推荐 <img src="" alt="photo"> <a href="">点击链接</a> 为 HTML 指定 Cache-Control 或 Expires 为 HTMl 内容设置 CaChe-Control 或 Expires 可以将 HTML 内容缓存起来,避免频繁向服务器端发送请求。 <meta http-equiv="Cache

盒子端 CSS 动画性能提升研究

最后都变了- 提交于 2020-01-04 03:37:30
不同于传统的 PC Web 或者是移动 WEB,在腾讯视频客厅盒子端,接大屏显示器(电视)下,许多能流畅运行于 PC 端、移动端的 Web 动画,受限于硬件水平,在盒子端的表现的往往不尽如人意。 基于此,对于 Web 动画的性能问题,仅仅停留在感觉已经优化的OK之上,是不够的,想要在盒子端跑出高性能接近 60 FPS 的流畅动画,就必须要刨根问底,深挖每一处可以提升的方法。 流畅动画的标准 理论上说,FPS 越高,动画会越流畅,目前大多数设备的屏幕刷新率为 60 次/秒,所以通常来讲 FPS 为 60frame/s 时动画效果最好,也就是每帧的消耗时间为 16.67ms。 直观感受,不同帧率的体验 帧率能够达到 50 ~ 60 FPS 的动画将会相当流畅,让人倍感舒适; 帧率在 30 ~ 50 FPS 之间的动画,因各人敏感程度不同,舒适度因人而异; 帧率在 30 FPS 以下的动画,让人感觉到明显的卡顿和不适感; 帧率波动很大的动画,亦会使人感觉到卡顿。 盒子端动画优化 在腾讯视频客厅盒子端,Web 动画未进行优化之前,一些复杂动画的帧率仅有 10 ~ 30 FPS,卡顿感非常明显,带来很不好的用户体验。 而进行优化之后,能将 10 ~ 30 FPS的动画优化至 30 ~ 60 FPS,虽然不算优化到最完美,但是当前盒子硬件的条件下,已经算是非常大的进步。 盒子端 Web

前端优化点总结

孤人 提交于 2020-01-04 03:35:55
PC 浏览器前端优化策略 PC 端优化的策略很多,如 YSlow(YSlow 是 Yahoo 发布的一款 Firefox 插件,现 Chrome 也可安装,可以对网站的页面性能进行分析,提出对该页面性能优化的建议)原则,或者 Chrome 自带的 Audits 等,总结起来主要包括网络加载类、页面渲染类、CSS 优化类、JavaScript 执行类、缓存类、图片类、架构协议类等几类,下面逐一介绍。 网络加载类 1.减少 HTTP 资源请求次数 在前端页面中,通常建议尽可能合并静态资源图片、JavaScript 或 CSS 代码,减少页面请求数和资源请求消耗,这样可以缩短页面首次访问的用户等待时间。通过构建工具合并雪碧图、CSS、JavaScript 文件等都是为了减少 HTTP 资源请求次数。另外也要尽量避免重复的资源,防止增加多余请求。 2.减小 HTTP 请求大小 除了减少 HTTP 资源请求次数,也要尽量减小每个 HTTP 请求的大小。如减少没必要的图片、JavaScript、CSS 及 HTML 代码,对文件进行压缩优化,或者使用 gzip 压缩传输内容等都可以用来减小文件大小,缩短网络传输等待时延。前面我们使用构建工具来压缩静态图片资源以及移除代码中的注释并压缩,目的都是为了减小 HTTP 请求的大小。 3.将 CSS 或 JavaScript 放到外部文件中,避免使用

WebView性能、体验分析与优化

落爺英雄遲暮 提交于 2020-01-04 03:27:14
在App开发中,内嵌WebView始终占有着一席之地。它能以较低的成本实现Android、iOS和Web的复用,也可以冠冕堂皇的突破苹果对热更新的封锁。 然而便利性的同时,WebView的性能体验却备受质疑,导致很多客户端中需要动态更新等页面时不得不采用其他方案。 以发展的眼光来看,功能的动态加载以及三端的融合将会是大趋势。那么如何克服WebView固有的问题呢?我们将从性能、内存消耗、体验、安全几个维度,来系统的分析客户端默认WebView的问题,以及对应的优化方案。 性能 对于WebView的性能,给人最直观的莫过于:打开速度比native慢。 是的,当我们打开一个WebView页面,页面往往会慢吞吞的loading很久,若干秒后才出现你所需要看到的页面。 这是为什么呢? 对于一个普通用户来讲,打开一个WebView通常会经历以下几个阶段: 交互无反馈 到达新的页面,页面白屏 页面基本框架出现,但是没有数据;页面处于loading状态 出现所需的数据 如果从程序上观察,WebView启动过程大概分为以下几个阶段: 如何缩短这些过程的时间,就成了优化WebView性能的关键。 接下来我们逐一分析各个阶段的耗时情况,以及需要注意的优化点。 WebView初始化 当App首次打开时,默认是并不初始化浏览器内核的;只有当创建WebView实例的时候,才会创建WebView的基础框架。

WebView性能、体验分析与优化

一个人想着一个人 提交于 2020-01-04 03:26:56
育新 徐宏 嘉洁 · 2017-06-09 20:03 在App开发中,内嵌WebView始终占有着一席之地。它能以 较低的成本 实现Android、iOS和Web的复用,也可以冠冕堂皇的突破苹果对 热更新 的封锁。 然而便利性的同时,WebView的性能体验却 备受质疑 ,导致很多客户端中需要动态更新等页面时不得不采用其他方案。 以发展的眼光来看,功能的动态加载以及 三端的融合将会是大趋势 。 那么如何克服WebView固有的问题呢? 我们将从性能、内存消耗、体验、安全几个维度,来系统的分析客户端默认WebView的问题,以及对应的优化方案。 性能 对于WebView的性能,给人最直观的莫过于: 打开速度比native慢 。 是的,当我们打开一个WebView页面,页面往往会慢吞吞的loading很久,若干秒后才出现你所需要看到的页面。 这是为什么呢? 对于一个普通用户来讲,打开一个WebView通常会经历以下几个阶段: 交互 无反馈 到达新的页面, 页面白屏 页面基本框架出现,但是没有数据; 页面处于loading状态 出现所需的数据 如果从程序上观察,WebView启动过程大概分为以下几个阶段: 如何 缩短这些过程的时间 ,就成了优化WebView性能的关键。 接下来我们逐一分析各个阶段的耗时情况,以及需要注意的优化点。 WebView初始化 当App首次打开时

你不可不知的HTML优化技巧

余生颓废 提交于 2020-01-04 03:20:46
如何提升Web页面的性能,很多开发人员从多个方面来下手如JavaScript、图像优化、服务器配置,文件压缩或是调整CSS。 很显然HTML 已经达到了一个瓶颈,尽管它是开发Web 界面必备的核心语言。HTML页面的负载也是越来越重。大多数页面平均需要40K的空间,像一些大型网站会包含数以千计的HTML 元素,页面Size会更大。 如何有效的降低HTML 代码的复杂度和页面元素的数量,本文主要解决了这个问题,从多个方面介绍了如何编写简练,清晰的HTML 代码,能够使得页面加载更为迅速,且能在多种设备中运行良好。 在设计和开发过程中需要遵循以下原则: 结构分离:使用HTML 增加结构,而不是样式内容; 保持整洁:为工作流添加代码验证工具;使用工具或样式向导维护代码结构和格式 学习新语言:获取元素结构和语义标记。 确保可访问: 使用ARIA 属性和Fallback 属性等 测试: 使网站在多种设备中能够良好运行,可使用emulators和性能工具。 HTML,CSS 和JavaScript三者的关系 HTML 是用于调整页面结构和内容的标记语言。HTML 不能用于修饰样式内容,也不能在头标签中输入文本内容,使代码变得冗长和复杂,相反使用CSS 来修饰布局元素和外观比较合适。HTML元素默认的外观是由浏览器默认的样式表定义的,如在Chrome中h1标签元素会渲染成32px的Times

浏览器渲染页面原理,reflow、repaint及其优化

别等时光非礼了梦想. 提交于 2020-01-04 02:38:22
浏览器的主要组件包括: 1. 用户界面 - 包括地址栏、前进/后退按钮、书签菜单等。除了浏览器主窗口显示的你请求的页面外,其他显示的各个部分都属于用户界面。 2. 浏览器引擎 - 在用户界面和渲染引擎之间传送指令。 3. 渲染引擎 - 负责显示请求的内容。如果请求的内容是 HTML,它就负责解析 HTML 和 CSS 内容,并将解析后的内容显示在屏幕上。 4. 网络 - 用于网络调用,比如 HTTP 请求。其接口与平台无关,并为所有平台提供底层实现。 5. 用户界面后端 - 用于绘制基本的窗口小部件,比如组合框和窗口。其公开了与平台无关的通用接口,而在底层使用操作系统的用户界面方法。 6. JavaScript 解释器。用于解析和执行 JavaScript 代码,比如chrome的JavaScript解释器是V8。 7. 数据存储。这是持久层。浏览器需要在硬盘上保存各种数据,例如 Cookie。新的 HTML 规范 (HTML5)定义了“网络数据库”,这是一个完整(但是轻便)的浏览器内数据库。 关键路径渲染(Critical Rendering Path):渐进式 浏览器拿到HTML之后的渲染过程:(不同内核实现不一样但大概是这样) 1. 解析HTML,构建DOM tree。 2. 解析CSS,构建CSSOM tree。 3. 合并DOM tree和CSSOM tree