【问题标题】:How to randomize fadeTo?如何随机化fadeTo?
【发布时间】:2014-08-04 17:17:20
【问题描述】:

这是一个很小的 ​​js 文件,从某个地方抓取,在 wordpress 中用于使缩略图在页面加载时淡入淡出。

(function($) {
    $('.featured-thumbnail').each(function(i) {
        $(this).delay((i++) * 380).fadeTo(1000, 1); })
})(jQuery);

我想为 i 添加随机性。

问题是: 在哪里使用 Math.random? 我也应该使用 Math.floor 吗? 我需要总 i 吗?似乎没有必要。

jQuery 新手学习缓慢。

【问题讨论】:

  • 你想要随机化什么?不透明度、持续时间、延迟......?
  • 我猜,但如果你想给它添加一些随机性,你可以使用 Math.floor( (i++) + (Math.random() * 380))
  • 对不起,他们开火的顺序。所以,这就是我认为的延迟。
  • 是的,所以这可行,但淡入淡出都是同时开始的。我确实希望他们的起点能够迭代(如果我正确使用了该术语)。并且很抱歉没有格式化。 $(this).delay(Math.floor(i++) + Math.random() * 380).fadeTo(1000, 1); })

标签: jquery random fadeto


【解决方案1】:

听起来您希望缩略图以随机顺序淡入。如果你对这些淡入淡出重叠没意见,你可以说:

(function($) {
    var len = $('.featured-thumbnail').length;

    $('.featured-thumbnail').each(function(i) {
    $(this).delay(Math.floor( Math.random() * 380 * len)).fadeTo(1000, 1); })
})(jQuery);

否则,您可以从列表中选择随机元素,并按照与原始元素相同的时间表将它们淡入:

(function($) {
  // jQuery selectors return array-LIKE objects,
  // but not actual arrays. We need a real array.
  //
  var items = $.makeArray( $('.featured-thumbnail') );
  var i = 0;

  while (items.length > 0)
  {
    // pick a random index within our array
    //
    var idx = Math.floor( Math.random() * items.length );

    // grab that item, remove it from the array.
    // splice() returns an array, so grab the first (only)
    // element from that array. splice() removes the
    // selected element(s) from the original array
    //
    var selected = items.splice(idx, 1)[0]; 

    // delay and fade in as before
    //
    $(selected).delay(i++ * 380).fadeTo(1000, 1);
  }
})(jQuery);

【讨论】:

  • 谢谢!是的,订单。我会在今天下午把它们都试一下,然后让我知道。
  • 我在第二个版本中修正了一些错别字 - 请务必使用编辑后的代码。
  • 你为什么用$.makeArray()而不是.get()
  • 如果您要一次将它们全部淡化,为什么还要选择随机图像?为什么不直接遍历数组并为每个图像选择一个随机时间?
  • 第一个版本一次性将它们全部淡入。第二个没有,这是唯一一个选择随机图像的。至于makeArray()get(),这只是我想到的方法。 get() 当然也可以。
猜你喜欢
  • 1970-01-01
  • 2019-07-05
  • 1970-01-01
  • 2011-01-27
  • 2011-06-23
  • 1970-01-01
相关资源
最近更新 更多