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 attachEvent传递参数的办法
Dec 14 Javascript
JavaScript写的一个自定义弹出式对话框代码
Jan 17 Javascript
使用js判断数组中是否包含某一元素(类似于php中的in_array())
Dec 12 Javascript
浅谈类似于(function(){}).call()的js语句
Mar 30 Javascript
JS实现黑客帝国文字下落效果
Sep 01 Javascript
javascript的正则匹配方法学习
Feb 24 Javascript
Centos7 中 Node.js安装简单方法
Nov 02 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
Jan 23 Javascript
详解vuex 中的 state 在组件中如何监听
May 23 Javascript
angularjs实现柱状图动态加载的示例
Dec 11 Javascript
微信小程序 image组件遇到的问题
May 28 Javascript
ES6 Object方法扩展的应用实例分析
Jun 25 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数组的一些常见操作汇总
2011/07/17 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
2016/10/14 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
2016/12/25 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
在JQuery dialog里的服务器控件 事件失效问题
2010/12/08 Javascript
关于event.cancelBubble和event.stopPropagation()的区别介绍
2011/12/11 Javascript
Moment.js 不容错过的超棒Javascript日期处理类库
2012/04/15 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
JS实用的动画弹出层效果实例
2015/05/05 Javascript
使用AngularJS对路由进行安全性处理的方法
2015/06/18 Javascript
学习JavaScript设计模式之策略模式
2016/01/12 Javascript
封装属于自己的JS组件
2016/01/27 Javascript
Vue 过渡(动画)transition组件案例详解
2017/01/22 Javascript
vue实现动态数据绑定
2017/04/28 Javascript
jquery append与appendTo方法比较
2017/05/24 jQuery
react+ant design实现Table的增、删、改的示例代码
2018/12/27 Javascript
Vue实现表格批量审核功能实例代码
2019/05/28 Javascript
vue-cli 3 全局过滤器的实例代码详解
2019/06/03 Javascript
[01:50]《我与DAC》之玩家:iG夺冠时的那面红旗
2018/03/29 DOTA
使用graphics.py实现2048小游戏
2015/03/10 Python
举例详解Python中threading模块的几个常用方法
2015/06/18 Python
python之array赋值技巧分享
2019/11/28 Python
Python timeit模块的使用实践
2020/01/13 Python
django列表筛选功能的实现代码
2020/03/27 Python
蒂芙尼澳大利亚官方网站:Tiffany&Co. Australia
2017/08/27 全球购物
西班牙语在线票务市场:SuperBoletería
2019/06/10 全球购物
Myprotein荷兰官网:欧洲第一运动营养品牌
2020/07/11 全球购物
PHP开发工程师面试问题集锦
2012/11/01 面试题
安全检查验收制度
2014/01/12 职场文书
大家检讨书5000字
2014/02/03 职场文书
应届电子商务毕业自荐书范文
2014/02/11 职场文书
创建文明城市标语
2014/06/16 职场文书
预备党员自我评价范文
2015/03/04 职场文书
大学团日活动总结书
2015/05/11 职场文书
Nginx服务器如何设置url链接
2021/03/31 Servers
Ubuntu Server 安装Tomcat并配置systemctl
2022/04/28 Servers