当我们要显示后台传过来若干个尺寸不一的图片时,为了保证图片大小的一致性及比例的协调,需要动态改变图片显示尺寸。通过搜索,我们可以从网上找到实现此功能的jQuery代码如下。这段代码可以使图片的大小保持在一定范围内,如果图片的原始尺寸都大于max*值,则显示出来的图片宽度都相等。

原始代码:

$(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);  // 设定等比例缩放后的高度}// 检查图片是否超高if(height > maxHeight){ratio = maxHeight / height; // 计算缩放比例$(this).css("height", maxHeight);   // 设定实际显示高度width = width * ratio;    // 计算等比例缩放后的高度$(this).css("width", width * ratio);    // 设定等比例缩放后的高度}});});

  

在我的js代码中,也采取了这种写法。然而在不同的浏览器测试效果时,发现此种写法不能适应chrome浏览器(chrome版本号为10.0.648.204),会产生图片以原有尺寸显示出来的bug。后来把$('.post img').each()的代码用$(window).load()方法包装起来,就解决了chrome浏览器显示不正确的问题。那么在chrome浏览器中为什么会产生bug,并且$(document).ready和$(window).load有什么区别呢?

原来document ready事件是在HTML文档载入即DOM准备好就开始执行了,即使图片资源还没有加载进来。而window load事件执行的稍晚一些,它是在整个页面包括frames, objects和images都加载完成后才开始执行的。从这种区别可以分析出chrome浏览器在对于图片不采用$(window).load()方法处理时,图片载入与动态改变图片的js代码执行顺序不确定。

----------------------------------------------------

上面是文章的全部类容,关于上面的代码,放到我的页面中时获取图片高度时会报错,提示没有提供width方法

var width = $(this).width();    // 图片实际宽度
var height = $(this).height();  // 图片实际高度

故修改代码如下:

jQuery(window).load(function () {jQuery("div.product_info img").each(function () {DrawImage(this, 680, 1000);});});function DrawImage(ImgD, FitWidth, FitHeight) {var image = new Image();image.src = ImgD.src;if (image.width > 0 && image.height > 0) {if (image.width / image.height >= FitWidth / FitHeight) {if (image.width > FitWidth) {ImgD.width = FitWidth;ImgD.height = (image.height * FitWidth) / image.width;} else {ImgD.width = image.width;ImgD.height = image.height;}} else {if (image.height > FitHeight) {ImgD.height = FitHeight;ImgD.width = (image.width * FitHeight) / image.height;} else {ImgD.width = image.width;ImgD.height = image.height;}}}}

  原文链接:http://blog.csdn.net/roman_yu/article/details/6641911

转载于:https://www.cnblogs.com/zyzlywq/archive/2012/02/23/2364292.html

jQuery动态改变图片显示大小(修改)相关推荐

  1. img超出div width时, jQuery动态改变图片显示大小

    参考: 1. http://blog.csdn.net/roman_yu/article/details/6641911 2. http://www.cnblogs.com/zyzlywq/archi ...

  2. jquery动态改变图片

    动态改变图片: var bb = 1; var aa=4; $("div[page='" + bb + "'] dd").eq(aa).children(&qu ...

  3. uniapp社区动态实战:根据图片数量动态改变图片大小

    动态列表是各种社交属性软件中最常见的场景,其中用户在发布动态时一般会添加1-9张图片,不同的数量图片显示大小也会不同,下面就聊一下如何根据不同的图片数量动态改变图片大小.以下案例中最多支持9张图显示, ...

  4. 如何动态改变框架的大小[转]

    如何动态改变框架的大小 解决思路: 在框架所加载页中用parent.frames["框架名"].cols="值1,值2..." 或者parent.frames[ ...

  5. jquery动态改变onclick属性导致失效的问题解决方法

    onclick属性失效的问题,相信很多的朋友都有遇到过吧,jquery动态改变onclick属性就会导致此问题的发生,解决方法如下,希望对大家有所帮助 代码如下: <li id="&q ...

  6. 如何用OpenCV改变图片的大小?

    前言 改变图片的大小(resize)是一项很有用的基本技能,它能让图片拥有我们想要的大小.比如在初学阶段,我们在实践时所用的图片的太大,屏幕上显示时观感不好,可以利用这一项技能把图片变小. 具体操作 ...

  7. 怎样改变图片尺寸大小不变形?如何设置图片尺寸?

    怎样改变图片尺寸大小不变形?想要快速完成图片尺寸大小修改,给大家分享一下在线快速图片改大小的操作技巧,使用图片在线编辑工具,即可调整图片大小. 1.上传图片. 2.选择尺寸或自定义宽高,压缩等级输入参 ...

  8. 如何动态改变框架的大小

    如何动态改变框架的大小 解决思路: 在框架所加载页中用parent.frames["框架名"].cols="值1,值2..." 或者parent.frames[ ...

  9. jquery动态改变div宽度和高度

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

最新文章

  1. 2021年大数据Flink(十八):Flink Window操作
  2. DS18B20 理解与操作源码
  3. 【Linux高频命令专题(24)】grep
  4. Leetcode 130. 被围绕的区域 解题思路及C++实现
  5. 【AutoML】激活函数如何进行自动学习和配置
  6. pip在安装模块时提示Read timed out
  7. 题解 CF682C 【Alyona and the Tree】
  8. 四川省中职计算机考试题,(四川省计算机等级考试题库.doc
  9. 双系统重装win7/Xp后如何恢复ubuntu引导--转载
  10. 【Flink】CSV 文件写入 追加写入 CsvWriter 的使用
  11. 技术支持和研发哪个好_考拉海购技术支持的前世今生,聊聊家常“黑历史”
  12. LeetCode 234 Palindrome Linked List
  13. addEventListener事件监听传递参数
  14. Linux bash介绍
  15. docker安装redis提示没有日记写入权限_Docker 从入门到掉坑
  16. [lammps安装教程]lammps并行版安装教程
  17. wps如何只让他显示3级标题_WPS如何三级标题
  18. 我在华为度过的 “两辈子”(学习那些在大厂表现优秀的人)
  19. CPU使用率查看方法
  20. 坚果云和亿方云哪个更适合学校?

热门文章

  1. C#微信开发小白成长教程二(新手接入指南,附视频)
  2. 深入浅出学习Struts框架(九):分析Struts框架实例4
  3. 基于P2P协议通信模式的选型(一)
  4. linux 安装 python3
  5. 不擅演讲的马化腾在 08 年讲了什么?
  6. PAT乙级-1070. 结绳(25)
  7. 《Python数据科学实践指南》——0.2节如何成为数据科学家
  8. 快速建立自己的个人网站!五款建站程序
  9. 通过错误的sql来测试推理sql的解析过程
  10. Android的Intent Action 大全