【问题标题】:Bootstrap one carousel with two carousel-indicators引导一个带有两个轮播指示器的轮播
【发布时间】:2016-12-03 17:25:15
【问题描述】:

基本上我想做的是,我有一个 Bootstrap 轮播,里面有 8 张幻灯片。我正在使用 2 个轮播指示器。

这是我的第一个指标,它适用于 .active

<ol class="rightci carousel-indicators">
  <li data-target="#carousel-example-generic" data-slide-to="0" ></li>
</ol>

这是我的第二个指标,它工作正常。当我点击链接时,轮播幻灯片完美变化,但 .active 类不会自动变化,而是第一个指标 .active 变化正常。

<div class="left leftci carousel-indicators">
<a href=""><span class="leftindicators active" data-target="#carousel-example-generic" data-slide-to="0">slide1</span></a>
</div>

帮帮我

【问题讨论】:

  • 你有 8 张幻灯片,只有 2 个指标。你能清楚地解释你的问题是什么吗?
  • 第一个指标与.active 类一起工作正常。例如,当#first slide 滑到#second slide,并且在...上时...第一个指示器的“活动”类随之变化...问题在于第二个指示器.....它不会根据幻灯片
  • 指标在其图像处于活动状态时具有active 类!您需要 8 个指标和有效的引导程序标记
  • 是的,我想做的是使用 8X8,即两个单独的指标列表...有什么办法可以做到这一点
  • jsfiddle.net/Igor_Ivancha/a74hsven希望对你有帮助!

标签: javascript html css twitter-bootstrap twitter-bootstrap-3


【解决方案1】:

我觉得你需要写一些自定义的js Bootstrap默认没有这个功能所以你需要自己制作carousel-indicators

css

.carousel-indicators2 {
  position: absolute;
  top: 10px;
  left: 50%;
  z-index: 15;
  width: 60%;
  padding-left: 0;
  margin-left: -30%;
  text-align: center;
  list-style: none;
}

.carousel-indicators2 li {
  display: inline-block;
  width: 10px;
  height: 10px;
  margin: 1px;
  text-indent: -999px;
  cursor: pointer;
  background-color: #000\9;
  background-color: rgba(0, 0, 0, 0);
  border: 1px solid #fff;
  border-radius: 10px;
}
.carousel-indicators2 .active {
    width: 12px;
    height: 12px;
    margin: 0;
    background-color: #fff;
}

JS

$('.carousel').on('slid.bs.carousel', function() {
  $(".carousel-indicators2 li").removeClass("active");
  indicators = $(".carousel-indicators li.active").data("slide-to");
  a = $(".carousel-indicators2").find("[data-slide-to='" + indicators + "']").addClass("active");
  console.log(indicators);

})

Fiddle

【讨论】:

    【解决方案2】:

    我也遇到过类似的问题。所以我也使用了上面给出的解决方案。但点击时无法正常工作。 所以这就是我为 100% 解决此问题所做的工作。对上述解决方案几乎没有增强。

    问题:我想为一个轮播显示 2 个指标。使用上述解决方案后一切正常,但点击后失败。

    解决方案:所以我尝试了这个

    $('.carousel').on('slid.bs.carousel', function() {
      var indicatorsAct = $(".carousel-indicator-icons li.active").data("slide-to");
      $(".carousel-indicators-numbers li").removeClass("active");
      $(".carousel-indicators-numbers").find("[data-slide-to='" + indicatorsAct + "']")
        .addClass("active");
    });
    
    $('ol.carousel-indicator-icons li').on("click",function(){ 
      $('ol.carousel-indicator-icons li.active').removeClass("active");
      $("ol.carousel-indicators-numbers li.active").removeClass("active");
      $(this).addClass("active");   
      var indicators = $(this).data("slide-to");
      $(".carousel-indicators-numbers").find("[data-slide-to='" + indicators + "']")
        .addClass("active");
    });
    

    其中.carousel-indicator-icons 是第一个指标的容器类,.carousel-indicators-numbers 是第二个指标的类。

    我希望这对遇到类似问题的其他人有所帮助。

    【讨论】:

      【解决方案3】:

      这是另一个不使用 JQuery 的解决方案。

      我为第二个指示条指定了 ID #custom-carousel-indicators。

      let carouselIndicatorButtons = document.querySelectorAll('#custom-carousel-indicators button')
      document.querySelectorAll('.carousel').forEach((button) => {
          button.addEventListener('slid.bs.carousel', function () {
              let activeIndicator = document.querySelector('.carousel-indicators button.active')
      
              carouselIndicatorButtons.forEach((button2) => {
                  button2.classList.remove('active')
              })
      
              document.querySelector('#custom-carousel-indicators button[data-bs-slide-to="'
                  + activeIndicator.dataset.bsSlideTo + '"]').classList.add('active')
          });
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-22
        • 2017-04-08
        • 2017-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多