【问题标题】:Randomise Bootstrap Carousel Slides except 1st slide随机引导引导轮播幻灯片,除了第一张幻灯片
【发布时间】:2016-02-16 15:20:38
【问题描述】:

我有一个带有 5 张幻灯片的引导轮播,我希望将它们随机化,但始终将同一张幻灯片放在前面。

因此它可以加载并成为这些订单中的任何一个。

1 3 2 5 4 // 1 2 5 4 3 // 1 5 2 4 3

我可以在数学地板上使用 javascript,但这将适用于所有人,而不仅仅是幻灯片 2、3、4、5

有没有办法做到这一点?它显然不需要是原生的引导程序。每张幻灯片都是一个<div> 元素而不是<li>,我使用数据属性而不是javascript 来初始化滑块,如果需要我可以更改它。

轮播:

<div id="carousel-example-generic" class="carousel slide" data-ride="carousel" data-interval="5000" data-pause="hover">

 <!-- Indicators -->
  <ol class="carousel-indicators hidden-xs hidden-sm">
    <li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>
    <li data-target="#carousel-example-generic" data-slide-to="1"></li>
    <li data-target="#carousel-example-generic" data-slide-to="2"></li>
    <li data-target="#carousel-example-generic" data-slide-to="3"></li>
    <li data-target="#carousel-example-generic" data-slide-to="4"></li>
  </ol>

  <!-- Wrapper for slides -->
   <div class="carousel-inner left-bottom-corner right-bottom-corner" role="listbox">
    <div class="item active">
      <img class="hidden-xs" src="<?php the_field('home_slide_home'); ?>" alt="...">
      <img class="visible-xs" src="<?php the_field('home_slide_home_mobile'); ?>" alt="...">
      <div class="carousel-caption">
        <img style="margin-left:auto;margin-right:auto;" src="<?php the_field('home_slide_icon'); ?>" alt="...">
        <?php the_field('slide_home_text'); ?>
        </div>
    </div>

    <div class="item randomslide">
            <img class="hidden-xs" src="<?php the_field('home_slide_1'); ?>" alt="...">
            <img class="visible-xs" src="<?php the_field('home_slide_1_mobile'); ?>" alt="...">
      <div class="carousel-caption">
        <img style="margin-left:auto;margin-right:auto;" src="<?php the_field('home_slide_icon'); ?>" alt="...">
         <?php the_field('slide_1_text'); ?>
         </div></div>

  <div class="item randomslide">
      <img class="hidden-xs" src="<?php the_field('home_slide_2'); ?>" alt="...">
      <img class="visible-xs" src="<?php the_field('home_slide_2_mobile'); ?>" alt="...">
      <div class="carousel-caption">
        <img style="margin-left:auto;margin-right:auto;" src="<?php the_field('home_slide_icon'); ?>" alt="...">
         <?php the_field('slide_2_text'); ?>
         </div>
         </div>

        <div class="item randomslide">
         <img class="hidden-xs" src="<?php the_field('home_slide_3'); ?>" alt="...">
         <img class="visible-xs" src="<?php the_field('home_slide_3_mobile'); ?>" alt="...">
      <div class="carousel-caption">
        <img style="margin-left:auto;margin-right:auto;" src="<?php the_field('home_slide_icon'); ?>" alt="...">
         <?php the_field('slide_3_text'); ?>

         </div>
    </div>

    <div class="item randomslide">
      <img class="hidden-xs" src="<?php the_field('home_slide_4'); ?>" alt="...">
      <img class="visible-xs" src="<?php the_field('home_slide_4_mobile'); ?>" alt="...">
      <div class="carousel-caption">
        <img style="margin-left:auto;margin-right:auto;" src="<?php the_field('home_slide_icon'); ?>" alt="...">
         <?php the_field('slide_4_text'); ?>
         </div> 
    </div>


    </div>
  </div>

解决方案

我在@CBroe 的提示下完成了这项工作

Below 选择除第一个滑块外的所有滑块,该滑块具有预定义的活动类,然后将它们打乱。

jQuery(function ($) {
    var parent = $(".carousel-inner");
    var divs = $(".item").not(".item.active");
    while (divs.length) {
        parent.append(divs.splice(Math.floor(Math.random() * divs.length), 1)[0]);
    }
});

【问题讨论】:

  • “我可以将 javascript 与数学地板一起使用,但这将适用于所有人” - 只有当 将其应用于“所有人”。
  • 要将问题标记为已解决,请接受下面的答案,即使这是您自己的答案
  • @ChrisBier 我必须等到明天才能做到这一点。当我有能力的时候,我会这样做。不过谢谢。

标签: javascript jquery html css twitter-bootstrap


【解决方案1】:

我在@CBroe 的提示下完成了这项工作

Below 选择除第一个滑块外的所有滑块,该滑块具有预定义的活动类,然后将它们打乱。

jQuery(function ($) {
    var parent = $(".carousel-inner");
    var divs = $(".item").not(".item.active");
    while (divs.length) {
        parent.append(divs.splice(Math.floor(Math.random() * divs.length), 1)[0]);
    }
});

【讨论】:

    【解决方案2】:

    您可以使用相关元素创建一个 jQuery 对象。

    var $carouselLi = $('.carousel > ol > li').slice(1);
    

    还有一个包含允许数字的数组。

    var numbers = [1,2,3,4];
    

    然后遍历$carouselLi 并将array 中的一个数字设置为元素data-slide-to 属性(应该确定幻灯片中的位置)。

    $.each($carouselLi, function ( key, value ) {
        var index = Math.floor(Math.random() * numbers.length);
        this.dataset.slideTo = numbers[index];
        numbers.splice(index,1);
    });
    

    我不确定bootstrap plugin 是如何工作的。我假设您不应该在分配 data-slide-to 属性之前对其进行初始化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-19
      • 1970-01-01
      • 1970-01-01
      • 2021-01-17
      • 1970-01-01
      • 1970-01-01
      • 2021-01-15
      • 2016-10-27
      相关资源
      最近更新 更多