Javascript实现图片加载从模糊到清晰显示的方法


Posted in Javascript onJune 21, 2016

1.背景介绍

在网络相册应用中用户查看照片是最朴素的需求,当网络比较慢的时候查看照片等待的时间是比较长的,用户体验会很差。

2.现状

现在加载照片的方法主要有一下两种:
(1)最原始的方式在html页面直接用img标签加载显示照片。该方法在网络速度比较慢或者要显示的照片比较大的时候会页面出现空白的等待过程,并且不能开始给用户看到照片大概的情况,用户体验比较不好
(2)在html页面先用img标签加载显示照片的缩略图,同时用javascript隐藏的加载照片的原图,等照片大图加载完成后再将原图显示到页面中。以下是流程图:

Javascript实现图片加载从模糊到清晰显示的方法

3.我们的解决方案

QQ相册最近做的一些优化方法解决了上诉两个方法的缺点和满足了用户查看照片的需求:第一时间看到照片大概情况和尽可能快的看到清晰的原图。该方法使用缩略图和原图同时加载并叠加显示,先加载缩略图并拉大显示,大图叠加在缩略图上面同时加载。缩略图很小通常很快就能给用户看到照片模糊的效果,大图加载过程中从上往下逐步覆盖缩略图,这样用户就可以看到加载过程中的大图。

(1)示例图

Javascript实现图片加载从模糊到清晰显示的方法

如上如所示,本方法的处理步骤是:
1).获取照片缩略图和原图的URL,获取照片的长和宽;
2).加载并显示照片缩略图,将缩略图按照片的长和宽拉伸显示,这时用户看到的是模糊的效果;
3).加载并显示照片原图,将原图叠加在缩略图上面显示,原图加载多少就显示多少,没有加载的还是显示缩略图,逐步将缩略图覆盖掉,原图在加载的过程中用户看到的是照片从模糊到清晰的渐变效果。
4).原图加载完后,原图已经全部将缩略图覆盖,这时用户看到的是真实的原图。此时可以隐藏缩略图防止缩略图干扰PNG或GIF等有透明效果的图片显示。

(2)示例代码

<!--设置照片的大小-->
<div style="width:400px;height:300px;">
    <!--小图拉大显示-->
    <img src="small_url" style="width:100%;height:100%;"/>
    <!--原图叠加在小图上面-->
    <img src="big_url" style="width:100%;height:100%;position:absolute;top:0px;left:0px;"/>
</div>

以上就是本文的全部内容,了解更多JavaScript的语法,大家可以查看:《JavaScript 参考教程》、《JavaScript代码风格指南》,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript中Eval函数的使用说明
Oct 11 Javascript
JavaScript?Apple设备检测示例代码
Nov 15 Javascript
JavaScript给url网址进行encode编码的方法
Mar 18 Javascript
javascript拖拽应用实例(二)
Mar 25 Javascript
JavaScript事件处理的方式(三种)
Apr 26 Javascript
简单谈谈React中的路由系统
Jul 25 Javascript
浅谈angular2 组件的生命周期钩子
Aug 12 Javascript
JS简单实现父子窗口传值功能示例【未使用iframe框架】
Sep 20 Javascript
JS实现json对象数组按对象属性排序操作示例
May 18 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
Nov 13 Javascript
微信小程序实用代码段(收藏版)
Dec 17 Javascript
axios解决高并发的方法:axios.all()与axios.spread()的操作
Nov 09 Javascript
Javascript类型系统之String字符串类型详解
Jun 21 #Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
Jun 21 #Javascript
JS实现简单的右下角弹出提示窗口完整实例
Jun 21 #Javascript
jQuery获取元素父节点的方法
Jun 21 #Javascript
JS图片定时翻滚效果实现方法
Jun 21 #Javascript
Javascript删除指定元素节点的方法
Jun 21 #Javascript
jQuery插件扩展测试实例
Jun 21 #Javascript
You might like
一些被忽视的PHP函数(简单整理)
2010/04/30 PHP
php中截取中文字符串的代码小结
2011/07/17 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
ThinkPHP开发--使用七牛云储存
2017/09/14 PHP
jquery 入门教程 [翻译] 推荐
2009/08/17 Javascript
js常用代码段整理
2011/11/30 Javascript
div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox
2013/08/29 Javascript
js实现通用的微信分享组件示例
2014/03/10 Javascript
JavaScript中的document.referrer在各种浏览器测试结果
2014/07/18 Javascript
js中style.display=&quot;&quot;无效的解决方法
2014/10/30 Javascript
javascript使用for循环批量注册的事件不能正确获取索引值的解决方法
2014/12/20 Javascript
jQuery实现瀑布流布局详解(PC和移动端)
2020/09/01 Javascript
Node.js操作Firebird数据库教程
2016/03/04 Javascript
bootstrap modal弹出框的垂直居中
2016/12/14 Javascript
原生js获取left值和top值的三种方法
2017/08/02 Javascript
js数组常用最重要的方法
2018/02/04 Javascript
深入理解Vue router的部分高级用法
2018/08/15 Javascript
vue template中slot-scope/scope的使用方法
2018/09/06 Javascript
Vue插件之滑动验证码用法详解
2020/04/05 Javascript
swiper自定义分页器的样式
2020/09/14 Javascript
Python爬虫将爬取的图片写入world文档的方法
2018/11/07 Python
Appium+Python实现简单的自动化登录测试的实现
2021/01/26 Python
ProBikeKit新西兰:自行车套件,跑步和铁人三项装备
2017/04/05 全球购物
荷兰最大的儿童服装店:The Kids Republic
2019/04/13 全球购物
DTD的含义以及作用
2014/01/26 面试题
护理助产毕业生的求职信
2014/03/02 职场文书
财务担保书范文
2014/04/02 职场文书
询价采购方案
2014/06/09 职场文书
学校社会实践活动总结
2014/07/03 职场文书
2014年小学美术工作总结
2014/12/20 职场文书
学习保证书怎么写
2015/02/26 职场文书
毕业设计致谢词
2015/05/14 职场文书
大学生实习证明
2015/06/16 职场文书
重阳节活动主持词
2015/07/04 职场文书
总经理2015中秋节致辞
2015/07/29 职场文书
LeetCode189轮转数组python示例
2022/08/05 Python