【问题标题】:How to shuffle collage images using jquery-collagePlus?如何使用 jquery-collagePlus 随机播放拼贴图像?
【发布时间】:2013-12-06 01:39:12
【问题描述】:

我正在开发一个网站,我在其中使用 jquery-collagePlus 插件来制作图像拼贴。单击随机播放按钮时,我想动态地制作随机播放图像。 任何人对此有解决方案(或任何其他方法)然后请告诉我?

这是我的演示Collage Test

这是我的代码:

$(window).load(function () {
     $('.Collage').collagePlus({
        'targetHeight'    : 300,
        'fadeSpeed'       : "slow", 
        'effect'          : 'default',
        'direction'       : 'vertical',
        'allowPartialLastRow'       : false
     });
    $('.Collage').removeWhitespace().collagePlus(); 
});

//HTML

<input name="shuffl" value="shuffle" type="button">
<section style="width:700px; " class="Collage effect-parent">
    <img src="../support/images/ed-lea-dribbble-2.png">
    <img src="../support/images/ed-lea-dribbble-3.png">
    <img src="../support/images/ed-lea-dribbble-4.png">
    <img src="../support/images/ed-lea-dribbble-6.png">
    <img src="../support/images/ed-lea-dribbble-1.png">
</section>

【问题讨论】:

    标签: jquery css image image-processing plugins


    【解决方案1】:

    看到这个Demo jsFiddle

    您可以使用 this little pluggin 打乱 DOM 元素:

    (function($){
        $.fn.shuffle = function() {
            var allElems = this.get(),
                getRandom = function(max) {
                    return Math.floor(Math.random() * max);
                },
                shuffled = $.map(allElems, function(){
                    var random = getRandom(allElems.length),
                        randEl = $(allElems[random]).clone(true)[0];
                    allElems.splice(random, 1);
                    return randEl;
               });
            this.each(function(i){
                $(this).replaceWith($(shuffled[i]));
            });
            return $(shuffled);
        };
    })(jQuery);
    

    然后将您的collagePluscode 放入一个函数中:

    function refreshCollagePlus() {
        $('.Collage').collagePlus({
            'targetHeight'    : 300,
            'fadeSpeed'       : "slow", 
            'effect'          : 'default',
            'direction'       : 'vertical',
            'allowPartialLastRow'       : false
        });
    }
    

    只需在准备好的 DOM 上执行此操作:

    $(document).ready(function () {
        $('#shuffle').on('click', function(){
            $('.Collage img').shuffle();
            refreshCollagePlus();
        });
        refreshCollagePlus();
    });
    

    这里的想法是初始化一次collagePlus 插件,然后shuffle 图像并在#shuffle 按钮click 事件上“刷新”collagePlus 插件。

    编辑:防止图像移动

    实现这一目标的最简洁和最简单的方法是给图像一个特定的类:

    <img class="dontMove" src="http://placehold.it/800x600" />
    

    并改变这一行:

    $('.Collage img').shuffle();
    

    到这里:

    $('.Collage img:not(.dontMove)').shuffle();
    

    在这种情况下,所有具有dontMove 类的图像将始终保持在原处,而其他图像将随机移动。

    【讨论】:

    • 太棒了!但是这个洗牌是随机的,实际上我正在寻找一个自定义的随机洗牌,这意味着我想将 1 个特定的图像放在称为英雄图像的吸引力中心。当用户点击洗牌时,英雄图像总是在吸引力的中心。你能在这段代码中添加这个功能吗?
    • 您应该在您的问题中说过,我会尝试在插件中进行一些更改。
    • 好!当我这样做时,我的英雄形象看起来很小,而其他形象看起来很大,我怎么能把这个英雄形象最后放在队列中意味着如果有人选择英雄形象,那么它就站在 位置,以便此图像始终看起来很大。
    • 我认为这是另一个问题。但如果我理解得很好,您可以将图片.clone()appendTo() 发送给您的section。然后删除它。
    • 太棒了! Brewal 你太棒了,你的回答解决了我的问题,非常感谢你的帮助。
    猜你喜欢
    • 2013-03-06
    • 2017-04-18
    • 2022-07-10
    • 1970-01-01
    • 2013-11-21
    • 2011-09-28
    • 1970-01-01
    • 2014-09-09
    • 2014-10-10
    相关资源
    最近更新 更多