jQuery图像大小调整-在一个变量上,并直接给出不同的结果
jQuery image resizing - over a variable and directly gives different results
我有几行JavaScript使用jQuery将图像调整为缩略图。
var thumb = $(this);
thumb.load(function() {
var ratio = thumb.height() / config.maxHeight;
var newWidth = Math.ceil(thumb.width() / ratio);
thumb.height(config.maxHeight);
// this line matters
thumb.width(newWidth);
});
幸运的是,这很管用。但如果我把最后一行替换为:
thumb.width(Math.ceil(thumb.width() / ratio));
它严重改变了没有明确定义尺寸的图像的宽度(太窄)。对我来说,这似乎是完全等效的方式——通过变量或直接——但显然不是。
我尝试将ceil()结果强制转换为Number或Integer,但它的行为相反——具有未定义维度的图像可以,但其余部分太宽(原始图像的宽度)。
虽然我的第一个解决方案是有效的,但我想我缺少一些基本的东西。所以我想在未来避免它。
谢谢!
我猜您正在操作的<img>
元素没有声明height
或width
属性。如果是这样的话,那么问题是浏览器如何在只给定一个约束的情况下智能地调整图像大小。
如果你有一个1000像素宽、1000像素高的图像,并且你写了一个IMG标签,如下所示:
<img src="big_image.gif" width="10" />
现代浏览器将渲染大小缩小到10 x 10的巨大图像。
所以,在你改变高度的那一行:
thumb.height(config.maxHeight);
浏览器继续运行,也更改宽度。如果你随后读取宽度(即thumb.width(Math.ceil(thumb.width() / ratio))
),你将读取新的宽度,而不是在被赋予新高度之前的宽度。
var someImg = new Image();
someImg.src = <theURLofDesiredImage>
alert(someImg.width + " : " + someImg.height);
这不是Jquery,而是它的普通JS,它是确定"未加载"(未缓存!)图像的真正方法。将查询字符串添加到URL url + "?asdasdasdadads"
将允许您绕过浏览器缓存图像。这将导致更长的"图像加载时间",但您将始终且更重要的是,PREDICTABLY解析动态加载的图像。
相关文章:
- 将地理编码结果转换为php变量以发布到mysql数据库
- 存储区向变量返回了结果
- 如何将解析云代码的query.count结果保存在变量中
- 设置为负数的变量计算结果为true
- 向模板实例变量传递调用方法调用的结果时出现异常
- 将函数结果传递给Javascript中的另一个函数变量
- MongoDB MonkAPI根据数据库请求之外可用的查找结果设置变量
- 将ajax请求结果分配给jquery函数中的变量
- 如何在javascript变量中获取php文件的结果
- 使用动态变量名更新JSON中的结果
- 将结果从javascript发布到变量
- Javascript我可以't达到函数中的结果变量
- 在不使用200行var的情况下,在结果字段中添加顺序命名的变量?[PDF表格]
- 使用passthrough将ajax结果中的变量发送到php
- 如何从批处理文件调用一个带有2个参数的java脚本函数,并将结果返回到环境变量
- 调用函数而不将其结果分配给变量
- 2个SQL查询.两者独立工作.当我把它们放在一起时,第一个查询的结果变量是空的.为什么?
- 将结果变量保留在for循环之外(Javascript)的区别是什么?
- 有没有办法传递结果变量而不显示
标记在文本区域 - 写控制台.时间结果变量