Javascript 脚本改为;作物“;图像间歇性运行。
我正在使用一些javascript使图像看起来被裁剪。我基本上是找到高度超过400px的图像,找到它们有多少像素超过400px,将其拆分,并在顶部和底部制作负边距。然后,我将图像包装在一个div中,作为一个框架,图像位于该框架后面 由于某些原因,脚本偶尔会运行。有时,它会正确裁剪高度超过400px的所有Javascript 脚本改为;作物“;图像间歇性运行。,javascript,css,wordpress,Javascript,Css,Wordpress,我正在使用一些javascript使图像看起来被裁剪。我基本上是找到高度超过400px的图像,找到它们有多少像素超过400px,将其拆分,并在顶部和底部制作负边距。然后,我将图像包装在一个div中,作为一个框架,图像位于该框架后面 由于某些原因,脚本偶尔会运行。有时,它会正确裁剪高度超过400px的所有。特色图像img图像(主页上只有一个特色图像,需要裁剪)。其他时候,脚本不会检测到任何此类图像,因此不会进行裁剪 我在一个$(document).ready()调用中运行脚本,所以我不确定是什么导
。特色图像img
图像(主页上只有一个特色图像,需要裁剪)。其他时候,脚本不会检测到任何此类图像,因此不会进行裁剪
我在一个$(document).ready()
调用中运行脚本,所以我不确定是什么导致了一个竞争条件
链接
网站:
(刷新几次以了解我的意思)
剧本:
(有问题的行是13-20)
不正确:
正确:您正在检查图像的
高度
属性,这些属性在document ready上不一定存在(document ready并不意味着图像已加载)。在$(window).load()中绑定该函数,或者在$('img').load()函数中绑定该函数
例如:
$(".featured-image img").load(function() {
var $e = $(this);
if ( $e.height < 400 ) return;
var overflow = featuredHeight - $e.height();
var top = overflow / 2;
var bottom = overflow / 2;
if ( overflow % 2 == 1 ) top++;
$e.css({
"margin-top": top + "px",
"margin-bottom": bottom + "px"
});
});
$(“.featured image img”).load(函数(){
var$e=$(本);
如果($e.高度<400)返回;
var overflow=featuredHeight-$e.height();
var top=溢出/2;
var底部=溢出/2;
if(溢出%2==1)top++;
$e.css({
“页边距顶部”:顶部+像素,
“页边距底部”:底部+像素
});
});
我假设不应该在document ready块中调用$('img').load()
对吗?我觉得如果图像被缓存或类似的东西,这不会触发。