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 相关文章推荐
几个常用的JavaScript字符串处理函数 - split()、join()、substring()和indexOf()
Jun 02 Javascript
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
Jan 22 Javascript
js不能跳转到上一页面的问题解决方法
Mar 01 Javascript
jquery图片放大镜功能的实例代码
Mar 26 Javascript
jquery bind(click)传参让列表中每行绑定一个事件
Aug 06 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
Jun 05 Javascript
深入学习jQuery Validate表单验证
Jan 18 Javascript
利用JS提交表单的几种方法和验证(必看篇)
Sep 17 Javascript
javascript设计模式之中介者模式学习笔记
Feb 15 Javascript
jquery实现图片轮播器
May 23 jQuery
Textarea输入字数限制实例(兼容iOS&安卓)
Jul 06 Javascript
使用vue制作滑动标签
Sep 21 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
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
2014/06/19 PHP
PHP多态代码实例
2015/06/26 PHP
Thinkphp微信公众号支付接口
2016/08/04 PHP
Yii核心验证器api详解
2016/11/23 PHP
PHP实现登录验证码校验功能
2018/05/17 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
nodejs实现HTTPS发起POST请求
2015/04/23 NodeJs
详解js跨域原理以及2种解决方案
2015/12/09 Javascript
Vue中UI组件库之Vuex与虚拟服务器初识
2019/05/07 Javascript
python模拟登陆Tom邮箱示例分享
2014/01/13 Python
深入解析Python中的WSGI接口
2015/05/11 Python
Python之Scrapy爬虫框架安装及简单使用详解
2017/12/22 Python
详解Python字典的操作
2019/03/04 Python
Python OpenCV实现视频分帧
2019/06/01 Python
解决Django Static内容不能加载显示的问题
2019/07/28 Python
python爬虫爬取监控教务系统的思路详解
2020/01/08 Python
Python实现密钥密码(加解密)实例详解
2020/04/26 Python
python调用API接口实现登陆短信验证
2020/05/10 Python
python 读取、写入txt文件的示例
2020/09/27 Python
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
生物化学研究助理员求职信
2013/10/09 职场文书
2014自主招生自荐信策略
2014/01/27 职场文书
主管竞聘书范文
2014/03/31 职场文书
取保候审保证书
2014/04/30 职场文书
校园环保标语
2014/06/13 职场文书
违反单位工作制度检讨书
2014/10/25 职场文书
2014年办公室文员工作总结
2014/11/12 职场文书
2015年幼儿园中班开学寄语
2015/05/27 职场文书
2016年11月份红领巾广播稿
2015/12/21 职场文书
医护人员继续教育学习心得体会
2016/01/19 职场文书
资深HR教你写好简历中的自我评价
2019/05/07 职场文书
python编写五子棋游戏
2021/05/25 Python
pandas中关于apply+lambda的应用
2022/02/28 Python
OpenStack虚拟机快照和增量备份实现方法
2022/04/04 Servers
MySQL详细讲解变量variables的用法
2022/06/21 MySQL