Jquery - 获取图像的真实尺寸或在没有 js 的情况下兼容的方法
Jquery - get the real dimension of the image or a way to be compliant if no js
Hello上下文是一个库和一个缩略图页面该脚本的目标是最小化缩略图,并在悬停时以原始大小显示它们。脚本做得很好:- 获取缩略图的最小大小- 为所有缩略图定义此最小大小-悬停时增加z索引并将大小定义为此缩略图的原始大小
但是如果禁用JavaScript,那就一团糟了,因为每个缩略图都有自己的大小
如果我通过 CSS 或 html 为所有缩略图定义相同的大小 - 以便在没有 js 的情况下合规 - 脚本会将其作为缩略图的原始大小,而不是图片的实际大小。
代码是:
<script type="text/javascript">
jQuery(window).load(function(){
var min_dim_width = 10000;
var min_dim_height = 10000;
$("ul.thumbnails img").each(function() {
$.data(this, 'size', { width: $(this).width(), height: $(this).height() });
if ($.data(this,'size').height < min_dim_height)
min_dim_height = $.data(this,'size').height;
if ($.data(this,'size').width < min_dim_width)
min_dim_width = $.data(this,'size').width;
});
$(".thumbnails img").each(function () {
$(this)
.css('width', min_dim_width+'px')
.css('height', min_dim_height+'px')
$(this).parents('li')
.css('width', min_dim_width+5+'px')
.css('height', min_dim_height+5+'px');
}).hover(function() {
if ($.data(this,'size').height == min_dim_height)
{
new_dim_height = min_dim_height*1.2;
}
else
{
new_dim_height = $.data(this,'size').height;
}
if ($.data(this,'size').width == min_dim_width)
{
new_dim_width = min_dim_width*1.2;
}
else
{
new_dim_width = $.data(this,'size').width;
}
$(this).parents('li').css({'z-index' : '10'}); /*Add a higher z-index value so this image stays on top*/
$(this).addClass("hover").stop() /* Add class of "hover", then stop animation queue buildup*/
.animate({
marginTop: '-'+new_dim_height/2+'px',
marginLeft: '-'+new_dim_width/2+'px',
top: '50%',
left: '50%',
width: new_dim_width, /* Set new width */
height: new_dim_height, /* Set new height */
padding: '10px'
}, 200); /* this value of "200" is the speed of how fast/slow this hover animates */
}, function() {
$(this).parents('li').css({'z-index' : '0'}); /* Set z-index back to 0 */
$(this).removeClass("hover").stop() /* Remove the "hover" class , then stop animation queue buildup*/
.animate({
marginTop: '0', /* Set alignment back to default */
marginLeft: '0',
top: '0',
left: '0',
width: min_dim_width, /* Set width back to default */
height: min_dim_height, /* Set height back to default */
padding: '5px'
}, 400);
});
});
</script>
感谢您阅读本文以及我的所有考虑,如果您成功了!我们可以在那里看到它的实际效果:http://www.planete-flop.fr/gallerie/index.php?/category/12
PS:重新表述我的"问题"
嗯...我不知道这是否是你要找的,但是...通常,最好在 HTML 标记本身中设置图像的尺寸......如:
<img src="cheese.jpg" alt="an image" title="whee!" height="100" width="200" />
如果支持,您可以使用 JS 覆盖它。否则,至少您可以获得布局的一些可预测性(即使拇指看起来歪斜)。
希望对您有所帮助!
只需在服务器上找到正确的大小
http://php.net/manual/en/function.getimagesize.php
相关文章:
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- 如何在没有单词的情况下从命令行运行Node.js程序'节点'
- node.js测试事件是否是在不使用超时的情况下使用sinon.js发出的
- 如何在不使用JS发出新请求的情况下读取当前标头
- 如何在不重新加载URL的情况下查询Node.Js的后端并更新页面
- vue-js-单选按钮won't默认情况下使用v-model属性进行检查
- 在知道对象值的情况下,确定数组中JS对象的索引
- 如何通过JS在不干扰其标记的情况下更改HTML文档中字符串的所有实例
- 如何在没有表单提交、没有js、没有jquery和没有ajax的情况下将输入的文本框值存储到php变量中
- 在 JS 中使 for 循环在没有库的情况下等待
- 如何在不刷新 node.js 和 ejs 的情况下提交表单
- 如何在不停止的情况下永远运行node-js
- Rails/JS-在不刷新页面的情况下获取变量
- 如何在启用ES6功能的情况下运行Node.js应用程序
- 如何在没有bundler的情况下使用react.js
- 如何在没有类属性的情况下使用Rangy.js创建标记
- 在这种情况下,我可以使用 JS 变量吗以及如何使用
- Node.JS在没有停止Node.JS脚本的情况下再次运行NodeMsql查询
- knightlab timeline js-如何在不重叠的情况下显示事件
- 在没有html文件的情况下使用dart:js库