查看: 8560|回复: 0
打印 上一主题 下一主题

JavaScript动态调整图片尺寸

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-23 11:10:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
台州网址导航
在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

我前段时间写的一篇文章就遇到过这种事情,后来用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”,但最终效果是一样的。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州朗动科技(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:政企网站,系统平台,微信公众号,各类小程序,手机APP客户端,浙里办微应用,浙政钉微应用、主机域名、虚拟空间、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2026 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表