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 相关文章推荐
使用TextRange获取输入框中光标的位
Oct 14 Javascript
jQuery插件开发基础简单介绍
Jan 07 Javascript
JQuery判断子iframe何时加载完成解决方案
Aug 20 Javascript
使用base64对图片的二进制进行编码并用ajax进行显示
Jan 03 Javascript
JS实现的表头列头固定页面功能示例
Jan 10 Javascript
Web 开发中Ajax的Session 超时处理方法
Jan 19 Javascript
Vue中CSS动画原理的实现
Feb 13 Javascript
详解JavaScript中的函数、对象
Apr 01 Javascript
vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show
Apr 12 Javascript
TypeScript开发Node.js程序的方法
Apr 30 Javascript
Element ui 下拉多选时新增一个选择所有的选项
Aug 21 Javascript
使用xampp将angular项目运行在web服务器的教程
Sep 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读取的相关函数的介绍一
2008/06/05 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
2014/02/18 PHP
php实例分享之二维数组排序
2014/05/15 PHP
浅析PHP的静态成员函数效率更高的原因
2014/06/13 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
Yii框架中sphinx索引配置方法解析
2016/10/18 PHP
自制PHP框架之设计模式
2017/05/07 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
PHP耦合设计模式实例分析
2018/08/08 PHP
js模拟实现Array的sort方法
2007/12/11 Javascript
5款Javascript颜色选择器
2009/10/25 Javascript
基于JQuery实现CheckBox全选全不选
2011/06/27 Javascript
用jquery存取照片的具体实现方法
2013/06/30 Javascript
多种方法实现360浏览器下禁止自动填写用户名密码
2014/06/16 Javascript
jQuery表格插件datatables用法总结
2014/09/05 Javascript
jquery控制表单输入框显示默认值的方法
2015/05/22 Javascript
jquery SweetAlert插件实现响应式提示框
2015/08/18 Javascript
理解javascript正则表达式
2016/03/08 Javascript
Bootstrap CSS布局之表格
2016/12/17 Javascript
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
详解vue-cli 2.0配置文件(小结)
2019/01/14 Javascript
推荐15个最好用的JavaScript代码压缩工具
2019/02/13 Javascript
Vue 使用formData方式向后台发送数据的实现
2019/04/14 Javascript
vue接入腾讯防水墙代码
2019/05/07 Javascript
JavaScript实现星级评价效果
2019/05/17 Javascript
layer设置maxWidth及maxHeight解决方案
2019/07/26 Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
2019/11/15 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
详解如何使用React Hooks请求数据并渲染
2020/10/18 Javascript
利用CSS3实现开门效果实例源码
2016/08/22 HTML / CSS
布鲁明戴尔百货店:Bloomingdale’s
2016/12/21 全球购物
美国优质宠物用品购买网站:Muttropolis
2020/02/17 全球购物
品质管理部岗位职责范文
2014/03/01 职场文书
乡镇干部党的群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
活动费用申请报告
2015/05/15 职场文书
MySql存储过程之逻辑判断和条件控制
2021/05/26 MySQL