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 判断undefined的实现代码
Nov 26 Javascript
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
Sep 20 Javascript
jQuery.extend 函数详解
Feb 03 Javascript
JavaScript模块随意拖动示例代码
May 27 Javascript
jquery判断输入密码两次是否相等
Apr 22 Javascript
Js与Jq获取浏览器和对象值的方法
Mar 18 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
May 12 Javascript
基于javascript实现最简单选项卡切换
Feb 01 Javascript
javascript 开发之百度地图使用到的js函数整理
May 19 Javascript
微信小程序自定义模态对话框实例详解
Aug 16 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
Feb 05 Javascript
详解如何创建并发布一个 vue 组件
Nov 08 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实现计数器方法小结
2015/01/05 PHP
javascript获取当前日期时间及其它操作函数
2011/01/11 Javascript
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
2011/05/24 Javascript
JavaScript单元测试ABC
2012/04/12 Javascript
在Javascript中 声明时用"var"与不用"var"的区别
2013/04/15 Javascript
js实现同一页面可多次调用的图片幻灯切换效果
2015/02/28 Javascript
jQuery插件实现静态HTML验证码校验
2015/11/06 Javascript
javascript简单实现等比例缩小图片的方法
2016/07/27 Javascript
JS图片等比例缩放方法完整示例
2016/08/03 Javascript
js在ie下打开对话窗口的方法小结
2016/10/24 Javascript
canvas实现刮刮卡效果
2017/03/14 Javascript
详解使用vscode+es6写nodejs服务端调试配置
2017/09/21 NodeJs
微信小程序实现聊天对话(文本、图片)功能
2018/07/06 Javascript
Angular中的ng-template及angular 使用ngTemplateOutlet 指令的方法
2018/08/08 Javascript
Vue实现移动端页面切换效果【推荐】
2018/11/13 Javascript
webpack 动态批量加载文件的实现方法
2020/03/19 Javascript
[43:24]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.12
2020/12/17 DOTA
Python re模块介绍
2014/11/30 Python
python利用装饰器进行运算的实例分析
2015/08/04 Python
Swift 3.0在集合类数据结构上的一些新变化总结
2016/07/11 Python
python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
2017/10/20 Python
Python实现判断一个字符串是否包含子串的方法总结
2017/11/21 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
2018/02/21 Python
python scp 批量同步文件的实现方法
2019/01/03 Python
pytorch::Dataloader中的迭代器和生成器应用详解
2020/01/03 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2020/02/11 Python
python和php哪个容易学
2020/06/19 Python
Python如何使用ElementTree解析xml
2020/10/12 Python
纯CSS实现聊天框小尖角、气泡效果
2014/04/04 HTML / CSS
英国最大的汽车配件在线商店:Euro Car Parts
2019/09/30 全球购物
如何理解委托
2012/01/06 面试题
一分钟演讲稿
2014/04/30 职场文书
小学数学教研活动总结
2014/07/01 职场文书
暑期家教宣传单
2015/07/14 职场文书
Python读取文件夹下的所有文件实例代码
2021/04/02 Python
利用Python多线程实现图片下载器
2022/03/25 Python