javascript 动态调整图片尺寸实现代码


Posted in Javascript onDecember 28, 2009

我前段时间写的一篇文章就遇到过这种事情,后来用CSS的overflow和max-width属性暂时解决了页面变形的问题。这种方法好处是简单,但坏处是会破坏某些细节的效果。

如overflow:hidden,意思是当内部元素宽度大于父框架时隐藏超出宽度的部分。这样做可能会是一些内容突然截断,被隐藏了,很对不起观众。

通过max-width属性限制文章插图最大宽度的话,需要考虑各浏览器的兼容性。IE6是不支持这个属性的,在我印象中,一些浏览器虽然支持这个属性,但图片不是等比缩放的(好像是Safari和Opera,记不清了),这样做的话对这些浏览器的用户很不公平。

因此,我最终选择的是通过JavaScript动态改变图片尺寸。这种方法对各种浏览器兼容性良好(现在应该很少人会禁用JavaScript吧?),如果换主题的话,也可以灵活地改变文章插图的最大尺寸。

方案有两个,由于我使用的主题是加载了jQuery库的,因此可以用以下代码实现:

$(document).ready(function() { 
$('.post img').each(function() { 
var maxWidth = 100; // 图片最大宽度 
var maxHeight = 100; // 图片最大高度 
var ratio = 0; // 缩放比例 
var width = $(this).width(); // 图片实际宽度 
var height = $(this).height(); // 图片实际高度 
// 检查图片是否超宽 
if(width > maxWidth){ 
ratio = maxWidth / width; // 计算缩放比例 
$(this).css("width", maxWidth); // 设定实际显示宽度 
height = height * ratio; // 计算等比例缩放后的高度 
$(this).css("height", height * ratio); // 设定等比例缩放后的高度 
} 
// 检查图片是否超高 
if(height > maxHeight){ 
ratio = maxHeight / height; // 计算缩放比例 
$(this).css("height", maxHeight); // 设定实际显示高度 
width = width * ratio; // 计算等比例缩放后的高度 
$(this).css("width", width * ratio); // 设定等比例缩放后的高度 
} 
}); 
});

如果不想加载jQuery库,可以用以下代码:
function ResizeImage(image, 插图最大宽度, 插图最大高度) 
{ 
if (image.className == "Thumbnail") 
{ 
w = image.width; 
h = image.height; 
if( w == 0 || h == 0 ) 
{ 
image.width = maxwidth; 
image.height = maxheight; 
} 
else if (w > h) 
{ 
if (w > maxwidth) image.width = maxwidth; 
} 
else 
{ 
if (h > maxheight) image.height = maxheight; 
} 
image.className = "ScaledThumbnail"; 
} 
}

采用纯JavaScript的话,麻烦点,需要手动为图片加上class=”Thumbnail”,但最终效果是一样的。
Javascript 相关文章推荐
js计算精度问题小结
Apr 22 Javascript
JS+CSS 制作的超级简单的下拉菜单附图
Nov 22 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
May 02 Javascript
深入了解Node.js中的一些特性
Sep 25 Javascript
20个实用的JavaScript技巧分享
Nov 28 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
Apr 14 Javascript
jquery ui dialog替代confirm实例分析
Jan 25 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
Nov 28 Javascript
Javascript之图片的延迟加载的实例详解
Jul 24 Javascript
JS的函数调用栈stack size的计算方法
Jun 24 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
Jul 19 Javascript
详解javascript void(0)
Jul 13 Javascript
jquery $(document).ready() 与window.onload的区别
Dec 28 #Javascript
jQuery的强大选择器小结
Dec 27 #Javascript
IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
Dec 27 #Javascript
JavaScript 拾漏补遗
Dec 27 #Javascript
js 实现无干扰阴影效果 简单好用(附文件下载)
Dec 27 #Javascript
向大师们学习Javascript(视频与PPT)
Dec 27 #Javascript
javascript+css 网页每次加载不同样式的实现方法
Dec 27 #Javascript
You might like
使用PHP实现微信摇一摇周边红包
2016/01/04 PHP
php实现跨域提交form表单的方法【2种方法】
2016/10/17 PHP
php微信公众号开发之翻页查询
2018/10/20 PHP
关于Javascript 的 prototype问题。
2007/01/03 Javascript
javascript offsetX与layerX区别
2010/03/12 Javascript
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
javascript实现在线客服效果
2015/07/15 Javascript
JavaScript SHA512&SHA256加密算法详解
2015/08/11 Javascript
浅谈javascript函数式编程
2015/09/06 Javascript
详解JS模块导入导出
2017/12/20 Javascript
axios中cookie跨域及相关配置示例详解
2017/12/20 Javascript
express 项目分层实践详解
2018/12/10 Javascript
微信小程序日历/日期选择插件使用方法详解
2018/12/28 Javascript
nodejs实现聊天机器人功能
2019/09/19 NodeJs
Vue-cli4 配置 element-ui 按需引入操作
2020/09/11 Javascript
vue swipeCell滑动单元格(仿微信)的实现示例
2020/09/14 Javascript
通过源码分析Python中的切片赋值
2017/05/08 Python
Python中循环引用(import)失败的解决方法
2018/04/22 Python
详解用python自制微信机器人,定时发送天气预报
2019/03/25 Python
python程序控制NAO机器人行走
2019/04/29 Python
python3检查字典传入函数键是否齐全的实例
2020/06/05 Python
python中常见错误及解决方法
2020/06/21 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
深入了解Python装饰器的高级用法
2020/08/13 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
BrandAlley英国:法国折扣奢侈品网上零售商
2017/07/03 全球购物
法人授权委托书公证范本
2014/09/14 职场文书
大学生第一学年自我鉴定2015
2014/09/28 职场文书
创先争优宣传标语
2014/10/08 职场文书
委托公证书样本
2015/01/23 职场文书
大专护理专业自荐信
2015/03/25 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书
2016学习医德医风心得体会
2016/01/25 职场文书
使用Ajax实现进度条的绘制
2022/04/07 Javascript
vue+elementUI实现表格列的显示与隐藏
2022/04/13 Vue.js