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函数实现动态添加CSS样式表文件
Dec 15 Javascript
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
Jul 02 Javascript
JavaScript运行时库属性一览表
Mar 14 Javascript
DEDECMS如何为文章添加HOT NEW标志图片
Aug 14 Javascript
js实现根据身份证号自动生成出生日期
Dec 15 Javascript
使用jQuery处理AJAX请求的基础学习教程
May 10 Javascript
jquery模拟多级复选框效果的简单实例
Jun 08 Javascript
jQuery EasyUI结合zTree树形结构制作web页面
Sep 01 jQuery
微信小程序时间戳转日期的详解
Apr 30 Javascript
Vue+ElementUI table实现表格分页
Dec 14 Javascript
Openlayers学习之地图比例尺控件
Sep 28 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
Nov 02 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
无线电广播与收音机发展的历史回眸
2021/03/02 无线电
PHP图片上传代码
2013/11/04 PHP
ThinkPHP的L方法使用简介
2014/06/18 PHP
thinkPHP5框架路由常用知识点汇总
2019/09/15 PHP
javascript中String类的subString()方法和slice()方法
2011/05/24 Javascript
addEventListener和attachEvent二者绑定的执行函数中的this不相同
2012/12/09 Javascript
JS版的date函数(和PHP的date函数一样)
2014/05/12 Javascript
在myeclipse中如何加入jquery代码提示功能
2014/06/03 Javascript
浅谈JS闭包中的循环绑定处理程序
2014/11/09 Javascript
javascript中in运算符用法分析
2015/04/28 Javascript
js流动式效果显示当前系统时间
2016/05/16 Javascript
vuejs父子组件通信的问题
2017/01/11 Javascript
jquery中封装函数传递当前元素的方法示例
2017/05/05 jQuery
关于定制FileField中的上传文件名称问题
2017/08/22 Javascript
jQuery中extend函数简单用法示例
2017/10/11 jQuery
vue组件中使用iframe元素的示例代码
2017/12/13 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
2017/12/13 Javascript
浅析vue中的provide / inject 有什么用处
2019/11/10 Javascript
jQuery带控制按钮轮播图插件
2020/07/31 jQuery
python计算最小优先级队列代码分享
2013/12/18 Python
给Python初学者的一些编程技巧
2015/04/03 Python
快速排序的算法思想及Python版快速排序的实现示例
2016/07/02 Python
Python3实现发送QQ邮件功能(附件)
2020/12/23 Python
Python3.5模块的定义、导入、优化操作图文详解
2019/04/27 Python
python字典一键多值实例代码分享
2019/06/14 Python
Django实现文件上传下载
2019/10/06 Python
使用python切片实现二维数组复制示例
2019/11/26 Python
Tensorflow实现部分参数梯度更新操作
2020/01/23 Python
html5模拟平抛运动(模拟小球平抛运动过程)
2013/07/25 HTML / CSS
联想印度官方网上商店:Lenovo India
2019/08/24 全球购物
考试作弊被抓检讨书
2014/01/10 职场文书
聊城大学毕业生自荐书
2014/02/01 职场文书
《翻越远方的大山》教学反思
2014/04/13 职场文书
未婚证明书模板
2014/10/08 职场文书
护士岗位竞聘书
2015/09/15 职场文书
教你使用vscode 搭建react-native开发环境
2021/07/07 Javascript