原本是打算昨天昨天下午的时候就写一篇关于前端图片延迟加载的详细技术的博客的,没想到下午公司项目出现了一些问题,所以一直在改代码进行调试,今天白天一整天又在外面跑,回来已经傍晚了,刚吃完饭,就想着赶紧补上,这样很多不懂这方面具体实现的小伙伴们也能早点学习经验。
前端页面的用户体验对于一个网站来说是至关重要的,我们在访问一些图片量比较大的网站的时候,往往会有这样的感受:显示在我电脑屏幕可视区域的图片总是不能及时的刷出来,这就造成了对于一些没有什么耐心的用户而言,他们就不愿意多等下去,索性直接关闭了网站去看其他的网站,这就使得本网站的用户量的流失,这往往是一个网站最不愿意看到的情况,那么对于这样的情况而言,开发者们不断的努力,很快就想到了解决的方案,让在可视区域的图片立即加载进来,而让不在可视区域并且需要通过滚动条进行滚动显示的图片在图片滚动到可视区域内再显示出来,这就比一次性把所有的图片资源加载进来从而造成图片刷新较慢的用户体验好的多的多。
那么,图片延迟加载的技术具体如何实现呢?下面来做详细的介绍:
首先,定义图片为三列,一共有5行,具体代码如下:
里面用到的bootstrap的布局技术(当然,这不是重点),请看img标签中的src,一开始我们并没有给它具体的图片的资源路径,而是自己定义了一个属性 x-src,该属性的值是图片图片的资源路径,每一行的img都是如此,接下来,当页面载入的时候,我们使用jquery(当然,你想javascript原生的代码也可以,我这里只是为了省时间而已)来循环遍历每一个img,判断每一个图片是否在当前可视区域内,是则显示图片,否则稍后处理,这里需要知道三个数据:
注:因为我所写的是当图片的一半进入的浏览器的可视区域内才将这张图片进行加载,所以需要第三个数据,这个看个人的需求是什么, 如果你的需求是图片只要已进入可视区域内就加载,可直接忽略第三个数据!!!!
1:浏览器可视区域的高度
2:图片相对于文档的偏移量(这里只需要高度上的偏移量)
3:图片元素本身的高度
如果图片先对于文档的偏移量+图片元素本身的高度的一半 < 浏览器可视区域的高度,即表明图片已经有一半进入的可视区域了,那么我就应该要把这张图片加载进来了,可是img标签的src是为空的,x-src的值才是图片的资源路径,这个时候就需要用jquery将img 标签的x-src值传给src,从而将图片加载进来,具体实现代码如下:
具体的效果如下:
你可以在控制台看到,虽然我们有5行图片,每行有3列,但加载进来的图片只有第一列(图片高度有超出一半的img才会加载图片的资源进来),其他的都没有加载进来,这就使得图片的刷新会很快出现效果,那么接下来,用户需要看到更多的图片,这个时候需要进行滚动条往下滚动,去刷新更多的图片,那么这个时候我们除了上述的3个数据之外,还需要知道当前滚动条滚动的距离,如果:
图片先对于文档的偏移量+图片元素本身的高度的一半 < 浏览器可视区域的高度 + 当前滚动条滚动的距离,那么表明当前图片已经在可视区域内,并且图片有一半以上的高度是在可视区域内,那么将图片进行加载进来,具体代码如下:
具体效果如下:
在控制台你可以看到,随着滚动条的滚动,加载进来的图片由原来的三张变成了现在的六张,滚动条不断的往下滚动,图片就会不断的加载进来,从而得到更好的用户体验。
这就是图片延迟加载的具体实现,是不是觉得图片的炫酷,如果你想自己看下具体的实现效果,可以点击我的网址进行查看:
http://meichao.sinaapp.com/show.html
如果还有什么不明白的,可以直接QQ联系本人:447247261 欢迎大家一起相互探讨,相互进步
相关推荐
在开发大型单页面应用(SPA)时,为了优化用户体验和提高页面加载速度,常采用图片延迟加载(懒加载)技术。Vue-Lazyload 是一个专为 Vue.js 设计的图片懒加载插件,它可以有效地提升网页性能,减少首次加载时的流量...
2. **首屏加载优化**:针对用户首次访问时的加载体验,"优化首屏体验——Lazy-Load 初探"可能讲解了延迟加载(Lazy-Load)技术,它允许非首屏内容在需要时才加载,从而减少初始页面的体积,加快加载速度。...
本文将详细讲解如何使用jQuery实现页面滚动时图片和其他元素的动态加载,以此来降低初次加载页面时的数据量。 首先,jQuery是一个非常流行的JavaScript库,它简化了DOM操作、事件处理和动画等功能。在实现页面滚动...
9. 性能优化:页面加载速度的优化策略,如延迟加载、代码分割、图片压缩等。 10. 安全性:跨站脚本攻击(XSS)和跨站请求伪造(CSRF)的防范,HTTPS的使用,以及前端安全的最佳实践。 通过学习【传智博客黑马前端...
7. **前端性能优化**:页面加载速度的优化策略,如延迟加载、代码分割、压缩资源等。 8. **浏览器工作原理**:渲染引擎、JS引擎、缓存机制、同源策略等,以及如何进行性能分析。 9. **前端安全**:XSS、CSRF攻击的...
以下将详细讲解这12个JS图片展示效果及其背后的关键知识点。 1. **轮播图(Slideshow)**:这是一种常见的图片展示方式,通过定时切换图片来展示多张图片。实现轮播图的关键在于使用`setInterval`或`setTimeout`...
3. **资源加载策略**:延迟加载、异步加载等策略可以显著提升用户体验。书中将介绍如何智能地管理资源加载顺序,确保关键内容优先呈现,同时不影响页面的整体加载。 4. **Web性能工具**:利用Chrome DevTools、Fire...
以下将详细讲解实现这一功能所涉及的关键知识点: 1. **uni-app**:uni-app 是一个使用 Vue.js 开发的多端框架,它允许开发者编写一次代码,部署到多个平台,包括微信小程序、H5、Android 和 iOS 等。uni-app 提供...
- **延迟加载(Lazy Loading)**:对于图片或其他资源,可以采用延迟加载技术,只在用户滚动到对应位置时才加载。 - **错误处理**:设置适当的错误处理机制,如请求失败时显示错误信息或重试机制。 4. **跨域问题...
- 图片预加载:为了避免图片加载延迟,可以使用JavaScript预加载图片,确保图片在需要时能够快速显示。 - 缓存策略:设置合适的HTTP缓存策略,减少对服务器的重复请求。 - 异步加载:避免阻塞页面加载,使用异步...
通过合理的HTML5标记结构、CSS3选择器优化、延迟加载策略以及对移动设备特性的适配,可以显著提升用户体验。 2. 响应式设计:响应式设计是移动Web开发的核心,它允许网页根据访问设备的屏幕尺寸和方向自动调整布局...
本教程将详细讲解如何利用jQuery这一强大的JavaScript库来实现动态加载进度条。 首先,jQuery是一个轻量级、高性能的JavaScript库,它的API简洁易用,使得开发者能轻松实现复杂的前端交互效果。在实现动态加载...
还可能讨论延迟加载(lazy loading)和按需加载(on-demand loading)等技术。 6. **响应式设计**:确保代码对不同设备和屏幕尺寸的适应性是现代Web开发的重要组成部分。文档可能会讲解媒体查询、Flexbox和Grid布局...
7. **兼容性和优化**:最后,确保轮播特效在各种浏览器和设备上都能正常工作,进行必要的兼容性测试,并优化性能,比如通过延迟加载未显示的图片来减少页面加载时间。 通过以上步骤,我们可以实现一个与腾讯游戏...
- 了解并应用最佳实践,如延迟加载、代码分割、减少HTTP请求、缓存策略等,以提升页面加载速度和用户体验。 10. **跨端开发** - 使用React Native、PWA(渐进式Web应用)或Electron框架,可以实现JavaScript在...
在实际项目中,我们还需要考虑性能优化,比如通过延迟加载、图像压缩、CDN分发等方法来提高页面加载速度。对于前端,还可以利用WebP或AVIF等现代图像格式,它们在提供更好的压缩比的同时保持高质量。 总之,“展示...
这可能包括延迟加载、静态资源CDN分发、代码分割、HTTP/2利用等方法,以及如何通过工具进行性能监控和调优。 4. **前端框架与库**:百度可能会使用React、Vue.js或Angular等主流框架,雷志兴会分享这些框架在大型...
- 异步加载策略:异步脚本,延迟加载(defer与async属性)。 5. **网络知识**: - HTTP/HTTPS协议:状态码,请求头,响应头,缓存机制。 - WebSocket:实时通信,与HTTP的区别。 - 安全性:跨站脚本攻击(XSS)...
3. 可能会定义图片间的间距、过渡动画和延迟加载效果,提高用户体验。 4. 可能还会涉及到响应式设计,确保在不同设备上都能正常显示。 JavaScript则是实现动态切换的关键。`js`文件可能包含以下功能: 1. 编写轮播...
考虑性能优化,比如延迟加载未显示的图片,以提高页面加载速度。 总结起来,创建一个jQuery插件实现图片画廊的关键在于理解jQuery的基本操作,如DOM选择、事件绑定和动画效果。通过结合HTML、CSS和JavaScript,我们...