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 滚轮事件使用说明
Mar 07 Javascript
浅析JQuery获取和设置Select选项的常用方法总结
Jul 04 Javascript
jQuery学习总结之jQuery事件
Jun 30 Javascript
jquery mobile页面跳转后样式丢失js失效的解决方法
Sep 06 Javascript
jQuery实现两款有动画功能的导航菜单代码
Sep 16 Javascript
jquery实现下拉框功能效果【实例代码】
May 06 Javascript
Node.js连接mongodb实例代码
Jun 06 Javascript
通过webpack引入第三方库的方法
Jul 20 Javascript
ES6 Object属性新的写法实例小结
Jun 25 Javascript
bootstrap table.js动态填充单元格数据的多种方法
Jul 18 Javascript
ES5新增数组的实现方法
May 12 Javascript
vue 页面跳转的实现方式
Jan 12 Vue.js
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仿ZOL分页类代码
2008/10/02 PHP
php写入mysql中文乱码的实例解决方法
2019/09/17 PHP
JavaScript中获取未知对象属性的代码
2011/04/27 Javascript
动态加载script文件的两种方法
2013/08/15 Javascript
Javascript中查找不以XX字符结尾的单词示例代码
2013/10/15 Javascript
javascript计时器详解
2015/02/28 Javascript
原生js结合html5制作小飞龙的简易跳球
2015/03/30 Javascript
使用HTML+CSS+JS制作简单的网页菜单界面
2015/07/27 Javascript
JavaScript类型系统之正则表达式
2016/01/05 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
2016/04/29 Javascript
javascript Promise简单学习使用方法小结
2016/05/17 Javascript
原生JS实现图片翻书效果
2017/02/16 Javascript
简单谈谈axios中的get,post方法
2017/06/25 Javascript
Vue2 配置 Axios api 接口调用文件的方法
2017/11/13 Javascript
微信小程序实现倒计时调用相机自动拍照功能
2018/06/10 Javascript
js如何获取图片url的Blob值并预览示例代码
2019/03/07 Javascript
vue+mock.js实现前后端分离
2019/07/24 Javascript
解决echarts echarts数据动态更新和dataZoom被重置问题
2020/07/20 Javascript
Vue生命周期activated之返回上一页不重新请求数据操作
2020/07/26 Javascript
python 自动提交和抓取网页
2009/07/13 Python
python学习之面向对象【入门初级篇】
2017/01/21 Python
Python 逐行分割大txt文件的方法
2017/10/10 Python
Django 2.0版本的新特性抢先看!
2018/01/05 Python
Python使用flask框架操作sqlite3的两种方式
2018/01/31 Python
python 初始化一个定长的数组实例
2019/12/02 Python
ITK 实现多张图像转成单个nii.gz或mha文件案例
2020/07/01 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
2020/09/29 Python
六年级学生评语
2014/04/22 职场文书
银行求职自荐书
2014/06/25 职场文书
培训科主任岗位职责
2014/08/08 职场文书
小学生十佳少年事迹材料
2014/08/20 职场文书
乡党委干部党的群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
学校机关党总支领导班子整改工作方案
2014/10/26 职场文书
教师党的群众路线学习心得体会
2014/11/04 职场文书
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫
MySQL学习之基础操作总结
2022/03/19 MySQL