jQuery动态改变图片显示大小(修改)
当我们要显示后台传过来若干个尺寸不一的图片时,为了保证图片大小的一致性及比例的协调,需要动态改变图片显示尺寸。通过搜索,我们可以从网上找到实现此功能的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动态改变图片显示大小(修改)相关推荐
- img超出div width时, jQuery动态改变图片显示大小
参考: 1. http://blog.csdn.net/roman_yu/article/details/6641911 2. http://www.cnblogs.com/zyzlywq/archi ...
- jquery动态改变图片
动态改变图片: var bb = 1; var aa=4; $("div[page='" + bb + "'] dd").eq(aa).children(&qu ...
- uniapp社区动态实战:根据图片数量动态改变图片大小
动态列表是各种社交属性软件中最常见的场景,其中用户在发布动态时一般会添加1-9张图片,不同的数量图片显示大小也会不同,下面就聊一下如何根据不同的图片数量动态改变图片大小.以下案例中最多支持9张图显示, ...
- 如何动态改变框架的大小[转]
如何动态改变框架的大小 解决思路: 在框架所加载页中用parent.frames["框架名"].cols="值1,值2..." 或者parent.frames[ ...
- jquery动态改变onclick属性导致失效的问题解决方法
onclick属性失效的问题,相信很多的朋友都有遇到过吧,jquery动态改变onclick属性就会导致此问题的发生,解决方法如下,希望对大家有所帮助 代码如下: <li id="&q ...
- 如何用OpenCV改变图片的大小?
前言 改变图片的大小(resize)是一项很有用的基本技能,它能让图片拥有我们想要的大小.比如在初学阶段,我们在实践时所用的图片的太大,屏幕上显示时观感不好,可以利用这一项技能把图片变小. 具体操作 ...
- 怎样改变图片尺寸大小不变形?如何设置图片尺寸?
怎样改变图片尺寸大小不变形?想要快速完成图片尺寸大小修改,给大家分享一下在线快速图片改大小的操作技巧,使用图片在线编辑工具,即可调整图片大小. 1.上传图片. 2.选择尺寸或自定义宽高,压缩等级输入参 ...
- 如何动态改变框架的大小
如何动态改变框架的大小 解决思路: 在框架所加载页中用parent.frames["框架名"].cols="值1,值2..." 或者parent.frames[ ...
- jquery动态改变div宽度和高度
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
最新文章
- 2021年大数据Flink(十八):Flink Window操作
- DS18B20 理解与操作源码
- 【Linux高频命令专题(24)】grep
- Leetcode 130. 被围绕的区域 解题思路及C++实现
- 【AutoML】激活函数如何进行自动学习和配置
- pip在安装模块时提示Read timed out
- 题解 CF682C 【Alyona and the Tree】
- 四川省中职计算机考试题,(四川省计算机等级考试题库.doc
- 双系统重装win7/Xp后如何恢复ubuntu引导--转载
- 【Flink】CSV 文件写入 追加写入 CsvWriter 的使用
- 技术支持和研发哪个好_考拉海购技术支持的前世今生,聊聊家常“黑历史”
- LeetCode 234 Palindrome Linked List
- addEventListener事件监听传递参数
- Linux bash介绍
- docker安装redis提示没有日记写入权限_Docker 从入门到掉坑
- [lammps安装教程]lammps并行版安装教程
- wps如何只让他显示3级标题_WPS如何三级标题
- 我在华为度过的 “两辈子”(学习那些在大厂表现优秀的人)
- CPU使用率查看方法
- 坚果云和亿方云哪个更适合学校?