ostcss越来越重要了,经常可以看到它的身影,比如面试,论坛。本篇文章是小编参考多方资料以及官网总结出来的,不喜勿喷,喜欢多多支持,谢谢!
另外 React Redux ES6 Webpack...... 更多干货在个人主页中查看
postcss 一种对css编译的工具,类似babel对js的处理,常见的功能如:
1 . 使用下一代css语法
2 . 自动补全浏览器前缀
3 . 自动把px代为转换成rem(rem不熟悉的,点这)
4 . css 代码压缩等等
postcss 只是一个工具,本身不会对css一顿操作,它通过插件实现功能,autoprefixer 就是其一。
less sass 是预处理器,用来支持扩充css语法。
postcss 既不是 预处理器也不是 后处理器,其功能比较广泛,而且重要的一点是,postcss可以和less/sass结合使用
虽然可以结合less/sass使用,但是它们还是有很多重复功能,用其中一个基本就 ok 了。
以下是个人的总结:
postcss 鼓励开发者使用规范的CSS原生语法编写源代码,支持未来的css语法,就像babel支持ES6。
less、sass 扩展了原生的东西,它把css作为一个子集,但这不好保持向后兼容。
总体来说区别不大,看个人喜好吧
这里只说在webpack里集成使用,首先需要 loader
1 . 安装
npm install postcss-loader –save-dev
2 . webpack配置
一般与其他loader配合使用,下面*标部分才是postcss用到的
配合时注意loader的顺序(从下面开始加载)
3 . postcss配置
项目根目录新建 postcss.config.js文件,里面配置一些插件
注:也可以在webpack中配置
1 . Autoprefixer
前缀补全,全自动的,无需多说
安装:
cnpm install Autoprefixer --save-dev
2 . postcss-cssnext
使用下个版本的css语法【关于语法另一篇文章会单独讲】
安装:
cnpm install postcss-cssnext --save-dev
3 . postcss-pxtorem
把px转换成rem
安装:
cnpm install postcss-pxtorem --save-dev
配置项:
特殊技巧:不转换成rem
px检测区分大小写,也就是说Px/PX/pX不会被转换,可以用这个方式避免转换成rem
下篇:cssnext,下一代css
【关注一下不迷路】
html css html css javascript html javascript css javascript css
比于早些年前后端代码紧密耦合、后端工程师还得写前端代码的时代,如今已发展到前后端分离,这种开发方式大大提升了前后端项目的可维护性与开发效率,让前后端工程师关注于自己的主业。然而在带来便利的同时,也带来了一些弊端,比如首屏渲染时间(FCP)因为首屏需要请求更多内容,比原来多了更多HTTP的往返时间(RTT),这造成了白屏,如果白屏时间过长,用户体验会大打折扣,如果用户网速差,则FCP会更长。
1. FCP优化
在 Google 提出的以用户为中心的四个页面性能衡量指标中,FP/FCP可能是开发者们最熟悉的了
为了优化首屏渲染时间这个指标,减少白屏时间,前端仔们想了很多办法:
这里要介绍的就是优化用户等待体验的骨架屏,它可以被视为是原来加载菊花图的一种升级版,结合传统的首屏优化方法对应用进行优化可以达到不错的效果。
2. 骨架屏
骨架屏可以理解为是当数据还未加载进来前,页面的一个空白版本,一个简单的关键渲染路径。可以看一下下面Facebook的骨架屏实现,可以看到在页面完全渲染完成之前,用户会看到一个样式简单,描绘了当前页面的大致框架的骨架屏页面,然后骨架屏中各个占位部分被实际资源完全替换,这个过程中用户会觉得内容正在逐渐加载即将呈现,降低了用户的焦躁情绪,使得加载过程主观上变得流畅。
可以看一下下面的示例图,第一个为骨架屏,第二个为菊花图,第三个为无优化,可以看到相比于传统的菊花图会在感官上觉得内容出现的流畅而不突兀,体验更加优良。
如今这项技术已经在Facebook、Google、支付宝、饿了么、简书、新浪微博、知乎、美团、领英等公司的产品中被广泛的使用。在论坛和社区也都有不少文章讨论骨架屏的实现和使用场景等。
3. 生成骨架屏的方法
生成骨架屏的方式主要有:
另外还有个插件 vue-skeleton-webpack-plugin,它将插入骨架屏的方式由手动改为自动,原理在构建时使用 Vue 预渲染功能,将骨架屏组件的渲染结果 HTML 片段插入 HTML 页面模版的挂载点中,将样式内联到 head 标签中。这个插件可以给单页面的不同路由设置不同的骨架屏,也可以给多页面设置,同时为了开发时调试方便,会将骨架屏作为路由写入router中,可谓是相当体贴了。
vue-skeleton-webpack-plugin的具体使用参考 vue-style-codebase,主要关注build目录的几个文件,线上Demo 在Chrome的DevTools中把network的网速调为Gast 3G / Slow 3G就能看到效果了~
链接文章:
https://juejin.im/post/5b79a2786fb9a01a18267362
聊聊图片预加载:提升用户体验与性能的秘密武器
**引言:**
在Web前端开发中,图片资源的加载速度直接影响着用户体验和页面性能。尤其是在涉及到大量图片展示的网站或应用中,图片预加载作为一种优化手段显得尤为重要。本文将详细介绍图片预加载的原理、应用场景、实现方法以及相关注意事项,并通过具体的HTML+JS代码实例,让你深入了解如何运用预加载技术改善用户的浏览体验。
---
### **一、什么是图片预加载?**
**标题:未雨绸缪,提前加载的背后逻辑**
图片预加载是指在用户实际查看图片之前,预先将图片资源加载到浏览器缓存中。这样当用户浏览到对应位置时,图片已经处于可用状态,从而避免了图片加载导致的页面空白或延迟现象,显著提升了页面的流畅性和整体性能。
---
### **二、图片预加载的重要性**
**标题:瞬间加载,用户体验的飞跃**
1. **更快的视觉呈现**:预加载能够确保图片在用户视线到达前就已经准备好,减少用户等待图片加载的时间,提供即视即所得的浏览体验。
2. **优化页面滚动流畅性**:对于长页面和图片瀑布流等场景,预加载能够消除滚屏时的图片加载滞后问题,确保页面滚动过程平滑无阻。
3. **降低用户跳出率**:快速加载的内容能够增加用户留存,减少因等待时间过长而导致的用户流失。
---
### **三、图片预加载的实现方法**
**标题:实战演练,手把手教你实现预加载**
1. **HTML `<link rel="prefetch">` 方式**
```html
<link rel="prefetch" href="image.jpg">
```
`rel="prefetch"` 属性告诉浏览器在闲置时预先下载指定资源,适用于浏览器支持的情况下对将来可能访问的资源进行预加载。
2. **JavaScript 实现预加载**
```javascript
// 基础图片预加载函数
function preloadImages(urls) {
urls.forEach(function(url) {
var img=new Image();
img.src=url;
});
}
// 使用预加载函数
var imageUrls=['image1.jpg', 'image2.jpg'];
preloadImages(imageUrls);
```
上述JavaScript代码中,我们通过创建新的`Image`对象并设置其`src`属性为待加载图片URL的方式实现预加载。当浏览器解析到这一行代码时,就会立即发送请求加载图片资源。
3. **更进阶的预加载库(如lozad.js)**
```html
<!-- 引入lozad.js库 -->
<script src="https://cdn.jsdelivr.net/npm/lozad/dist/lozad.min.js"></script>
<!-- 使用lozad.js进行懒加载 -->
<img
data-src="image.jpg"
class="lozad"
alt="Example Image"
/>
```
Lozad.js是一个轻量级的懒加载库,它能够在图片进入可视区时才进行加载,既实现了预加载的目的,又节省了带宽和CPU资源。
---
### **四、图片预加载的注意事项**
**标题:谨慎而行,预加载的合理应用**
1. **合理安排预加载数量**:过多的预加载可能导致带宽占用过高,影响其他关键资源加载速度。
2. **判断用户网络状况**:在低速网络环境下,避免无脑预加载,可采用动态加载策略。
3. **隐私保护与资源优化**:尊重用户隐私,避免预加载无关紧要的资源,同时对图片进行压缩和尺寸裁剪,减轻预加载负担。
---
**结语:**
图片预加载作为Web前端优化的一项关键技术,巧妙运用可以显著提升用户体验,降低用户流失率。在实践中,我们要根据具体项目需求和用户场景,灵活选择合适的预加载策略,做到既能加速页面渲染,又能兼顾性能与资源优化,达到提升网站整体表现的终极目标。而不断精进和深化前端优化技术,正是每一位前端开发者追求卓越的必由之路。
*请认真填写需求信息,我们会在24小时内与您取得联系。