当前位置: 首页 > 面试题库 >

使用砌体并加载图像

葛深
2023-03-14
问题内容

我是JS新手,希望这个问题看起来不太愚蠢。

我在我的网站上使用砖石结构-
效果很好。我想让我的盒子在砌筑完成时出现。在互联网上搜索时,我发现了几则建议使用图像加载的插件来解决此问题的帖子。它只是什么都没有改变。这意味着:我的布局和内容框一直被弄乱,直到砌筑完成加载为止,然后框突然跳到了正确的位置。

我的代码:

$(document).ready(function() {

    var $container = $('#post-area');
    $container.imagesLoaded( function() {
        $container.masonry({
            itemSelector : '.box',
            columnwidth: 300,
            gutter: 20,
            isFitWidth: true,
            isAnimated: !Modernizr.csstransitions
        });    
    });
});

我也收到此萤火虫错误:

TypeError: EventEmitter is not a constructor
ImagesLoaded.prototype = new EventEmitter();

我在网站结尾处像这样加载了imagesloaded js(如果砌筑中已经包含了imageloaded图像,我找不到任何信息,有些人写道它不再包含在内-
令人困惑):

<script src="http://www.domainname.com/js/imagesloaded.js"></script>

如果有人可以帮助我,我将非常高兴。并告诉我imagesloaded是否是解决此问题的正确插件!


问题答案:

imagesLoaded不包含在Masonry中,因此您应该使用单独的plugin。我建议使用编译的.min版本。

关于堆叠图像的问题:问题不在imagesLoaded或Masonry中。在您的代码中,imagesLoaded等待所有图像加载完毕,然后发射砖石。加载所有图像后,Masonry插件可以正确定义其大小并放在网格上。在此之前,浏览器照常加载图像并根据定义的CSS显示’em,这就是为什么它们被弄乱了的原因。

一种可能的解决方案是默认情况下隐藏元素,然后在imagesLoaded确认图像已加载时淡入:

$(document).ready(function() {

  var $boxes = $('.box');
  $boxes.hide();

  var $container = $('#post-area');
  $container.imagesLoaded( function() {
    $boxes.fadeIn();

    $container.masonry({
        itemSelector : '.box',
        columnwidth: 300,
        gutter: 20,
        isFitWidth: true,
        isAnimated: !Modernizr.csstransitions
    });    
  });
});


 类似资料:
  • 问题内容: 我正在尝试仅使用CSS和flexbox创建水平砌体布局。我遇到的问题是元素之间存在垂直间隙,而没有使用它可以缩小间隙吗? 问题答案: 这是一个使用换行列的选项,但它需要固定的高度。

  • 问题内容: 有没有办法利用Bootstrap 4随附的flexbox网格来创建砌体柱布局?在我看来,所有的列都是相等的高度。 问题答案: 这对于标准的Bootstrap 4类几乎是可行的。文档中甚至有一整节关于“证件栏”功能。 从文档中: 只需将CSS包裹在中,就可以使用CSS将 卡片组织成类似于砌体的列。卡是使用列属性而不是flexbox构建的,以便于对齐。卡的排列顺序是从上到下,从左到右。 小

  • 问题内容: 当有人通过我的应用程序工作时,我正在尝试在后台加载图像。我写的逻辑是这样的: 但是,当我尝试启动这样的新线程时: 但是在程序中我得到错误Looper.prepare必须被调用,随后是逻辑looper.quit() 但是,当我添加Looper.prepare()时,似乎中断了程序,并且没有要调用的looper.quit()。 我是否正确创建任务? 编辑: 这是我尝试运行时的错误日志: 我

  • 问题内容: 我想在CSS中使用大小均相同但高度不相同的元素来实现网格效果。我希望下面的元素始终位于底部元素的50px处,无论接下来是什么。 我尝试使用浮点数,但该错误。因此,我尝试使用Flex,但是它仍然无法满足我的要求。 问题答案: Try the new CSS Grid Layout 建立一个块级网格容器。该grid-auto-rows属性设置自动生成的行的高度。在此网格中,每行高度为50p

  • 问题内容: 我在下面编写的功能是否足以在当今大多数(如果不是全部)浏览器中预加载图像? 我有一个图像URL数组,可以循环访问这些URL,并为每个URL 调用该函数。 问题答案: 是。这应该适用于所有主要的浏览器。

  • 当我启动应用程序时,我没有看到任何错误,但是是一个空数组。组件本身位于。我试着直接加载图像: 但无论我指定的路径是什么,如果出现错误,它就不能正常工作了。但是,我需要从文件夹加载所有图像,而不是静态加载,因为我事先不知道图像的名称。如有任何建议,将不胜感激。