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中实现命名空间
Nov 23 Javascript
javascript图像处理—仿射变换深度理解
Jan 16 Javascript
javascript使用appendChild追加节点实例
Jan 12 Javascript
jQuery中trigger()方法用法实例
Jan 19 Javascript
JavaScript使用Max函数返回两个数字中较大数的方法
Apr 06 Javascript
js实现鼠标滑过文字链接色彩变化的效果
May 06 Javascript
bootstrap组件之导航组件使用方法
Jan 19 Javascript
BootStrap CSS全局样式和表格样式源码解析
Jan 20 Javascript
vue、react等单页面项目应该这样子部署到服务器
Jan 03 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
Apr 17 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
Apr 24 Javascript
解决echarts中横坐标值显示不全(自动隐藏)问题
Jul 20 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.ini中文版(2)
2006/10/09 PHP
phpMyAdmin 链接表的附加功能尚未激活的问题
2010/08/01 PHP
PHP生成随机密码类分享
2014/06/25 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
PHP Ajax实现无刷新附件上传
2016/08/17 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
2019/10/04 PHP
超越Jquery_01_isPlainObject分析与重构
2010/10/20 Javascript
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
2012/01/15 Javascript
JavaScript中使用构造器创建对象无需new的情况说明
2012/03/01 Javascript
jquery在IE、FF浏览器的差别详细探讨
2013/04/28 Javascript
JavaScript:Div层拖动效果实例代码
2013/08/06 Javascript
在ASP.NET中使用JavaScript脚本的方法
2013/11/12 Javascript
适用于javascript开发者的Processing.js入门教程
2016/02/24 Javascript
node.js版本管理工具n无效的原理和解决方法
2016/11/24 Javascript
使用mint-ui开发项目的一些心得(分享)
2017/09/07 Javascript
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
vue.js指令v-for使用以及下标索引的获取
2019/01/31 Javascript
ES6 Symbol在对象中的作用实例分析
2020/06/06 Javascript
python实现多线程采集的2个代码例子
2014/07/07 Python
Python中的index()方法使用教程
2015/05/18 Python
使用PyCharm配合部署Python的Django框架的配置纪实
2015/11/19 Python
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
Python实现PS图像明亮度调整效果示例
2018/01/23 Python
django中SMTP发送邮件配置详解
2019/07/19 Python
通过实例简单了解Python中yield的作用
2019/12/11 Python
python re的findall和finditer的区别详解
2020/11/15 Python
Woods官网:加拿大最古老、最受尊敬的户外品牌之一
2020/09/12 全球购物
捐书活动总结
2014/05/04 职场文书
建筑工程质量通病防治方案
2014/06/08 职场文书
上课随便讲话检讨书
2014/09/12 职场文书
干部作风整顿自我剖析材料和整改措施
2014/09/18 职场文书
党的群众路线教育实践活动教师自我剖析材料
2014/10/09 职场文书
浪漫婚礼主持词开场白
2015/11/24 职场文书
Python实现文本文件拆分写入到多个文本文件的方法
2021/04/18 Python
使用Redis实现秒杀功能的简单方法
2021/05/08 Redis
MySql按时,天,周,月进行数据统计
2022/08/14 MySQL