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 一个函数对同一元素的多个事件响应
Jul 25 Javascript
jQuery的Ajax时无响应数据的解决方法
May 25 Javascript
js 返回时间戳所对应的具体时间
Jul 20 Javascript
MyEclipse取消验证Js的两种方法
Nov 14 Javascript
js中判断对象是否为空的三种实现方法
Dec 23 Javascript
基于jPlayer三分屏的制作方法
Dec 21 Javascript
详解JavaScript树结构
Jan 09 Javascript
细说webpack源码之compile流程-入口函数run
Dec 26 Javascript
新版vue-cli模板下本地开发环境使用node服务器跨域的方法
Apr 03 Javascript
教你完全理解ReentrantLock重入锁
Jun 03 Javascript
javascript实现的图片预览和上传功能示例【兼容IE 9】
May 01 Javascript
详解CocosCreator消息分发机制
Apr 16 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操作xml代码
2010/06/17 PHP
php根据年月获取季度的方法
2014/03/31 PHP
php解决约瑟夫环示例
2014/04/09 PHP
PHP Reflection API详解
2015/05/12 PHP
php 流程控制switch的简单实例
2016/06/07 PHP
Yii2框架实现注册和登录教程
2016/09/30 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
2018/05/23 PHP
html读出文本文件内容
2007/01/22 Javascript
javascript 获取网页参数系统
2008/07/19 Javascript
js获取网页高度(详细整理)
2012/12/28 Javascript
js实现单行文本向上滚动效果实例代码
2013/11/28 Javascript
JQuery获取与设置HTML元素的内容或文本的实现代码
2014/06/20 Javascript
Javascript中this关键字的一些小知识
2015/03/15 Javascript
jQuery中的ready函数与window.onload谁先执行
2016/06/21 Javascript
jQuery实现全选、反选和不选功能
2017/08/16 jQuery
React实践之Tree组件的使用方法
2017/09/30 Javascript
vue-cli项目中使用echarts图表实例
2018/10/22 Javascript
JavaScript如何实现元素全排列实例代码
2019/05/14 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
2019/07/18 Javascript
Vue.js组件实现选项卡以及切换特效
2019/07/24 Javascript
layui前端时间戳转化实例
2019/11/15 Javascript
[00:12]DAC2018 no[o]ne亮相SOLO赛 他是否如他的id一样无人可挡?
2018/04/06 DOTA
Pycharm设置界面全黑的方法
2018/05/23 Python
Numpy之文件存取的示例代码
2018/08/03 Python
python如何给字典的键对应的值为字典项的字典赋值
2019/07/05 Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
2020/12/04 Python
CSS+jQuery实现的在线答题功能
2015/04/25 HTML / CSS
军人违纪检讨书
2014/02/04 职场文书
2014年社区学雷锋活动总结
2014/03/09 职场文书
国际贸易系求职信
2014/08/09 职场文书
传承焦裕禄精神思想汇报2014
2014/09/10 职场文书
合作协议书模板2014
2014/09/26 职场文书
反对四风自我剖析材料
2014/10/07 职场文书
刑事附带民事代理词
2015/05/25 职场文书
Nginx设置日志打印post请求参数的方法
2021/03/31 Servers
Python+Appium自动化测试的实战
2021/06/30 Python