“裁剪”图像的脚本间歇性地运行。

时间:2013-01-11 17:10:56

标签: javascript css wordpress

我正在使用一些javascript来使图像看起来被裁剪。我基本上找到高度超过400像素的图像,找到超过400像素的像素数,将其分割,并在顶部和底部形成负边距。然后我将图像包装在一个div中,该div充当一个框架,图像位于框架后面

由于某种原因,脚本偶尔会运行。有时,它会正确裁剪高度超过400像素的所有.featured-image img图像(主页上只有一个特色图像,需要裁剪)。其他时候,脚本不会检测到任何此类图像,因此不会进行裁剪。

我在$(document).ready()调用中运行脚本,所以我不确定是什么原因造成了竞争条件。

链接

网站: http://new.technoheads.org/(刷新几次,看看我的意思)

脚本: http://new.technoheads.org/wp-content/themes/Technoheads-Theme/js/app.js (有问题的行是13-20)

不正确:http://technoheads.org/grabs/DK6.png

正确:http://technoheads.org/grabs/GQP.png

1 个答案:

答案 0 :(得分:2)

您正在检查图像的height属性,这些属性不一定存在于文档就绪状态(文档就绪并不意味着图像已加载)。在$(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"
    });
});