利用javascript解决图片缩放及其优化的代码


Posted in Javascript onMay 23, 2012

一个客户跟我联系说,刚给他做的网站,显示不正常,我顿时一紧张,这是我独立完成的第一个项目,于是赶紧打开他的网站看了看,没看出什么不正常来。我又问他怎么不正常,他说和交接项目时的效果不一样,晕,交接时要是不正常,项目肯定交接不了啊,干脆让他截个图过来。果然不正常,是他刚上传的一张图片把显示内容的窗口撑开了。查看代码,明明写好了max-width,怎么还会出现这种情况。突然发现他发来的图上,那个浏览器看着不顺眼,像是古老的而神圣的IE6!经过确认,果然是它,又是它!我真是疏忽,没给他在IE6下测试就交工了。

说起IE6,真是让我们这些做前端的人又恨又无奈,许多属性都不支持。可不少用户还在用它,我们也不能无视。为了兼容,我只好跟同事请教了一下,然后针对IE6用js缩放来显示图片并进行了一些细节上的优化。

尽管今天的这个客户网站比较小,对网站性能的要求也不高,但考虑以后可能还会用到这些东西,做优化是个长期学习的过程,我查阅了一些文章,说是如果利用img标签的onload方法来调用函数进行尺寸的修改,对性能的影响比较大,另外,利用 -expression 行为似乎也不可取(以后继续求证吧),所以,最后是采用页面加载时触发。

function resizeImage(img,width){ 
var image=new Image(); 
image.src=img.src; 
var temp = image.width; 
img.width = temp = (temp>width)?width:temp; 
img.style.display = "inline"; 
} 
function doResize(){ 
if($.browser.version==6&&$.browser.msie) $("img").each(function(){resizeImage(this,100)}); 
} 
window.onload = doResize;

这段代码利用resizeImage函数判断,并且修改img.width属性,原理比较简单,在这段代码前面我还加了一个对IE6浏览器的判定,除了它以外,我还是让CSS搞定图片的尺寸。我在代码中没有定义图片的高和宽的数值,这样在缩放时,只要修改其中的一个数值,让另一个数值去自适应,而不是让js去执行等比缩放,这也算是一点点优化吧。我在代码中引用了Jquery(因为习惯了),你没必要这样做,我之所以这么写,是在DOM元素返回以后可以统一进行函数处理。考虑到客户经常会使用外链的图片,这时,网页的显示速度就受到图片源的影响,所以在页面加载时我先利用CSS把需要显示的图片隐藏,直到图片缩放后再利用js的方法显示图片,因此,又对IE6做了个hack:
img{ 
display:inline !important; 
display:none; 
max-width:180px; 
}
Javascript 相关文章推荐
jQuery select的操作实现代码
May 06 Javascript
javascript instanceof 内部机制探析
Oct 15 Javascript
jQuery对html元素取值与赋值的方法
Nov 20 Javascript
判断JS对象是否拥有某种属性的两种方式
Dec 02 Javascript
js实现文件上传表单域美化特效
Nov 02 Javascript
jQuery实现贪吃蛇小游戏(附源码下载)
Mar 04 Javascript
jQuery简单绑定单个事件的方法示例
Jun 10 jQuery
基于JavaScript实现微信抢红包功能
Jul 20 Javascript
详解微信小程序审核不通过的解决方法
Jan 17 Javascript
js实现搜索提示框效果
Sep 05 Javascript
微信小程序实现页面左右滑动
Nov 16 Javascript
微信小程序scroll-view不能左右滑动问题的解决方法
Jul 09 Javascript
JavaScript 图像动画的小demo
May 23 #Javascript
JavaScript学习笔记记录我的旅程
May 23 #Javascript
JS中处理与当前时间间隔的函数代码
May 23 #Javascript
自己做的模拟模态对话框实现代码
May 23 #Javascript
解决jquery的datepicker的本地化以及Today问题
May 23 #Javascript
{}与function(){}选用空对象{}来存放keyValue
May 23 #Javascript
JavaScript基本编码模式小结
May 23 #Javascript
You might like
神族 PROTOSS 概述
2020/03/14 星际争霸
php cookie的操作实现代码(登录)
2010/12/29 PHP
php之可变变量的实例详解
2017/09/12 PHP
用JS剩余字数计算的代码
2008/07/03 Javascript
jquery 中多条件选择器,相对选择器,层次选择器的区别
2012/07/03 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
js解决弹窗问题实现班级跳转DIV示例
2014/01/06 Javascript
JS如何将数字类型转化为没3个一个逗号的金钱格式
2014/01/27 Javascript
javascript巧用eval函数组装表单输入项为json对象的方法
2015/11/25 Javascript
JavaScrip常见的一些算法总结
2015/12/28 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
2016/09/17 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
js与jQuery实现获取table中的数据并拼成json字符串操作示例
2018/07/12 jQuery
python遍历文件夹并删除特定格式文件的示例
2014/03/05 Python
详解Python的Django框架中的通用视图
2015/05/04 Python
5款非常棒的Python工具
2018/01/05 Python
使用python实现BLAST
2018/02/12 Python
对Python发送带header的http请求方法详解
2019/01/02 Python
Python3将数据保存为txt文件的方法
2019/09/12 Python
python查看数据类型的方法
2019/10/12 Python
Python Web静态服务器非堵塞模式实现方法示例
2019/11/21 Python
关于Tensorflow分布式并行策略
2020/02/03 Python
matplotlib图例legend语法及设置的方法
2020/07/28 Python
美国庭院家具购物网站:AlphaMarts
2019/04/10 全球购物
口腔医学技术应届生求职信
2013/11/09 职场文书
护理专科毕业推荐信
2013/11/10 职场文书
四年大学生活的个人自我评价
2013/12/11 职场文书
发展部经理职责规定
2014/02/22 职场文书
2014国培学习感言
2014/03/05 职场文书
代领毕业证委托书
2014/08/02 职场文书
学校党的群众路线教育实践活动对照检查材料
2014/09/24 职场文书
运动会开幕词
2015/01/28 职场文书
二审答辩状格式
2015/05/22 职场文书
导游词之镇江西津古渡
2019/11/06 职场文书
Python anaconda安装库命令详解
2021/10/16 Python