【问题标题】:Script to "crop" images runs intermittently.“裁剪”图像的脚本间歇性地运行。
【发布时间】:2013-01-12 01:19:41
【问题描述】:

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

由于某种原因,脚本偶尔会运行。有时,它会正确裁剪所有高度超过 400px 的 .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

【问题讨论】:

    标签: javascript css wordpress


    【解决方案1】:

    您正在检查图像的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"
        });
    });
    

    【讨论】:

    • 我是否正确假设我不应该在文档就绪块内调用$('img').load()?如果图像被缓存或类似的东西,我觉得这不会触发。
    猜你喜欢
    • 2010-11-24
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多