add: CSS优化
This commit is contained in:
parent
bf6b50625a
commit
cd8001f25e
@ -219,13 +219,12 @@ console.log(result.final_svg);
|
||||
|
||||
- 使用 Data URI 代替图片。base64就是属于 Data URI的方式。
|
||||
|
||||
## 在服务器端进行图片自动优化
|
||||
### 7、在服务器端进行图片自动优化
|
||||
|
||||
### 概念
|
||||
|
||||
图片服务器自动化优化是可以在图片 URL 链接上增加不同特殊参数,服务器自动化生成。通过这些参数,可以设置图片的不同格式、大小、质量。
|
||||
|
||||
### 常见处理方式
|
||||
**常见处理方式**:
|
||||
|
||||
- 图片裁剪:按长边、短边、填充、拉伸等缩放。
|
||||
|
||||
@ -235,7 +234,9 @@ console.log(result.final_svg);
|
||||
|
||||
- AI 能力:鉴黄、涉政、智能抠图、智能排版、智能配色、智能合成等 AI 功能。
|
||||
|
||||
### 图片举例
|
||||
**图片举例**:
|
||||
|
||||
比如JD公司的图片链接,就会在服务器端做优化处理。通过修改图片链接中的参数,就能自动达到相应的优化效果。
|
||||
|
||||
原始图片链接:
|
||||
|
||||
@ -261,3 +262,109 @@ https://img12.360buyimg.com/img/s200x200_jfs/t1/149913/14/18648/719436/5fd8b9b5E
|
||||
https://img12.360buyimg.com/img/s3866x3866_jfs/t1/149913/14/18648/719436/5fd8b9b5Eb697b825/7c23f3028aff8e2b.jpg.q10
|
||||
```
|
||||
|
||||
|
||||
## HTML优化
|
||||
|
||||
### 1、精简 HTML 代码
|
||||
|
||||
- 减少 HTML 的嵌套。
|
||||
|
||||
- 减少 DOM 节点数。
|
||||
|
||||
- 减少无语义代码(比如: <div class=“clear”></div> 消除浮动,其实可以用css来处理)。
|
||||
|
||||
- 删除 http 或者 https:如果URL的协议头和当前页面的协议头一致的,或者此 URL 在多个协议头都是可用的,则可以考虑删除协议头。
|
||||
|
||||
- 删除多余的空格、换行符、缩进和不必要的注释。
|
||||
|
||||
- 省略冗余标签和属性。
|
||||
|
||||
- 使用相对路径的 URL。
|
||||
|
||||
### 2、文件放在合适位置
|
||||
|
||||
- CSS 样式文件链接尽量放在页面头部。
|
||||
|
||||
CSS 加载不会阻塞 DOM tree 解析,但是会阻塞 DOM Tree 渲染,也会阻塞后面 JS 执行。
|
||||
|
||||
任何 body 元素之前,可以确保在文档部分中解析了所有 CSS 样式(内联和外联),从而减少了浏览器必须重排文档的次数。
|
||||
|
||||
如果放置页面底部,就要等待最后一个 CSS 文件下载完成,此时会出现"白屏",影响用户体验。
|
||||
|
||||
- JS 引用放在 HTML 底部
|
||||
|
||||
防止 JS 在加载、解析、执行时,阻塞了页面后续元素的正常渲染。
|
||||
|
||||
### 4、增强用户体验
|
||||
|
||||
- 设置 favicon.ico
|
||||
|
||||
网站如果不设置 favicon.ico,控制台会报错。另外页面加载过程中如果没有图标,则会出现 loading 过程,也不利于记忆网站品牌,建议统一添加。
|
||||
|
||||
- 增加首屏必要的 CSS 和 JS
|
||||
|
||||
页面如果需要等待所的依赖的 JS 和 CSS 加载完成才显示,则在渲染过程中页面会一直显示空白,影响用户体验,建议在首屏增加必要的 CSS 和 JS,比如页面框架背景图片或者loading 图标,内联在 HTML 页面中。这样做,首屏能快速显示出来,缓解用户焦虑。现在很多网页在初始化的时候,流行做**骨架屏**,小伙伴们也可以研究下。
|
||||
|
||||
## CSS优化
|
||||
### 1、提升 CSS 渲染性能
|
||||
|
||||
- 谨慎使用 expensive 属性,这类属性比较耗浏览器的性能。比如:`nth-child` 伪类;`position: fixed` 定位。
|
||||
|
||||
- 尽量减少样式的层级数。
|
||||
|
||||
比如:`div ul li span i {color: blue;}`这样的层级就太深了。建议给 i 标签设置 class属性,然后通过class直接设置样式属性,可以提升浏览器的查询效率。
|
||||
|
||||
- 尽量避免使用占用过多 CPU 和内存的属性。比如:`text-indnt:-99999px`。
|
||||
|
||||
- 尽量少使用耗电量大的属性。比如:CSS3 3D transforms、CSS3 transitions、Opacity 这样的属性会消耗GPU。
|
||||
|
||||
### 2、合适使用 CSS 选择器
|
||||
|
||||
- 尽量避免使用 CSS 表达式。
|
||||
|
||||
比如 `background-color: expression( (new Date()).getHours()%2 ? "#FFF" : "#000" );`这个属性的意思是,每间隔两小时,改变白景色。
|
||||
|
||||
- 尽量避免使用通配选择器。
|
||||
|
||||
比如 `body > a {font-weight:blod;}`这样的属性,可能会把 body 里所有的标签遍历一遍,才找到 a 标签,比较耗时。
|
||||
|
||||
- 尽量避免类正则的属性选择器:`*=, |=, ^=, $=`
|
||||
|
||||
### 3、提升 CSS 文件加载性能
|
||||
|
||||
- 使用外链的 CSS。
|
||||
|
||||
我们知道,内联的 css 是在html 内部写的。相比之下,外链的 CSS文件是放在CDN上的,可以缓存,既能减少 html 页面的体积大小,也能利用缓存减少资源的请求。
|
||||
|
||||
- 尽量避免使用 @import 方法
|
||||
|
||||
整个CSS加载完成后,浏览器会把 import 中所有依赖的文件全部加载完成后,浏览器才会接着往下渲染。这个过程会阻塞CSS文件的加载过程。
|
||||
|
||||
### 4、精简 CSS 代码
|
||||
|
||||
- 使用缩写语句
|
||||
|
||||
- 删除不必要的零。比如 0.2 可以写成 .2
|
||||
|
||||
- 删除不必要的单位,比如 0px 可以写成 0
|
||||
|
||||
- 删除过多的空格;注释言简意赅
|
||||
|
||||
- 尽量减少样式表的大小
|
||||
|
||||
当然,很多地方可以在编译时,通过压缩工具来处理;但是我们在写代码时,也应该有良好的编码习惯。
|
||||
### 5、合理使用 Web Fonts
|
||||
|
||||
- 将字体文件部署在 CDN 上。
|
||||
|
||||
- 或者将字体以 base64 形式保存在 CSS 中并通过 localStorage 进行缓存
|
||||
|
||||
- Google 字体库因为某些不可抗拒原因,应该使用国内托管服务
|
||||
|
||||
### 6、CSS 动画优化
|
||||
|
||||
- 尽量避免同时出现过多动画。
|
||||
|
||||
- 延迟动画初始化:让其他的重要的CSS样式优先渲染。
|
||||
|
||||
- 结合 SVG。
|
||||
|
Loading…
Reference in New Issue
Block a user