【问题标题】:Bootstrap carousel: carousel-indicators not changing size/classBootstrap carousel:carousel-indicators 不改变大小/类
【发布时间】:2016-03-11 10:11:05
【问题描述】:

我想要图片下方的轮播指示器。这需要一些样式更改才能仍然使用 Bootstrap 进行此轮播(请参阅下面的完整代码)。我将border-color 添加到指标中,并为carousel-indicators 类添加了一些样式:position:static; padding-top:10px; width: 100%; margin-left:0;

问题在于指标的大小。如果访问者单击其中一个指示器,则轮播将正确转到该图像。 但是,指标并没有改变:也就是说,以active 开头的指标仍然比其他两个指标大(您现在希望点击的指标更大)。第一个指标继续保持activeclass。什么可能导致此问题?

<div id="carouselvideo" class="carousel slide" data-ride="carousel">
  <div class="carousel-inner" role="listbox">
    <div class="item active">
      <iframe width="250" height="250" src="https://www.youtube-nocookie.com/embed/xxx></iframe>
    </div>
    <div class="item">
      <iframe width="250" height="250" src="https://www.youtube-nocookie.com/embed/xxx></iframe>
    </div>
    <div class="item">
      <iframe width="250" height="250" src="https://www.youtube-nocookie.com/embed/xxx></iframe>
    </div>
  </div>
</div>

<script>       //The problem persists also if I remove this script line.
  $("#carouselvideo").carousel({interval: false});
</script>

<ol class="carousel-indicators" style="position:static; padding-top:10px; width: 100%; margin-left:0;">
  <li data-target="#carouselvideo" data-slide-to="0" style="border-color: #333;" class="active"></li>
  <li data-target="#carouselvideo" data-slide-to="1" style="border-color: #333;"></li>
  <li data-target="#carouselvideo" data-slide-to="2" style="border-color: #333;"></li>
</ol>

更新:如果我在carouselvideo div 内移动最后五行,那么问题就消失了。但是,我不想在那里,因为我想要轮播下方的指示器(请参阅How to create this bootstrap carousel of iframes?)。为什么将指标代码放在轮播外面会出现这个问题?

【问题讨论】:

  • 能否请您在 sn-p/fiddle 中重现您的问题?

标签: javascript html css twitter-bootstrap


【解决方案1】:

这是一个引导轮播的工作示例,指标工作正常。您在 iframe src 末尾缺少一些引号,这可能会导致一些问题,但您可以在此小提琴 http://jsfiddle.net/wamosjk/auotu240/ 找到一个工作示例,这是代码

 <div id="myCarousel" class="carousel slide" data-ride="carousel" data-interval="false">
      <!-- Indicators -->
      <ol class="carousel-indicators">
        <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
        <li data-target="#myCarousel" data-slide-to="1"></li>
        <li data-target="#myCarousel" data-slide-to="2"></li>
      </ol>

      <!-- Wrapper for slides -->
      <div class="carousel-inner" role="listbox">

        <div class="item active">
          <iframe width="100%" height="250" src="https://www.youtube-nocookie.com/embed/xxx"></iframe>

        </div><!-- End Item -->

         <div class="item">
         <iframe width="100%" height="250" src="https://www.youtube-nocookie.com/embed/xxx"></iframe>

        </div><!-- End Item -->

        <div class="item">
          <iframe width="100%" height="250" src="https://www.youtube-nocookie.com/embed/xxx"></iframe>

        </div><!-- End Item -->
      </div><!-- End Carousel Inner -->
      <!-- Controls -->
      <a class="left carousel-control" href="#myCarousel" data-slide="prev">
        <span class="glyphicon glyphicon-chevron-left"></span>
      </a>
      <a class="right carousel-control" href="#myCarousel" data-slide="next">
        <span class="glyphicon glyphicon-chevron-right"></span>
      </a>
    </div><!-- End Carousel -->

您可以取出脚本并将 data-interval="false" 也放入您的轮播中,但如果您仍然遇到问题,则由您自己决定,那么很可能是之前提到的一些 css 或 javascript 问题.如果您不想要这些控件,您可以将它们取出并保留指标。

我发现如果你想要轮播之外的指示器,活动类不再切换,所以你需要添加以下脚本

<script>
$(".carousel-indicators li").on('click', function(){
    $(this).siblings().removeClass('active')
    $(this).addClass('active');
})
</script>

【讨论】:

  • 谢谢,我添加了缺少的引号并将data-interval="false" 放在轮播中。不幸的是,同样的问题仍然存在。与工作示例(我确实将其用作代码的基础)相比,我将指标移到了轮播之外(请参阅stackoverflow.com/a/34121898)。
  • 当我将指标代码放在轮播 div 的底部时,它可以工作,谢谢
  • 我已经在答案中添加了一些代码,以防您想将控件保留在轮播之外,因为它们不会在轮播之外切换活动类
  • 我看到您更新了您的问题,因此您需要添加我添加到答案中的代码以更改活动类引导程序 javascript 将所有内容都绑定到#Carousel div。您可以使用我添加的代码,也可以使用绝对位置作为指标并使用 bottom:-20px 或其他东西来获取 iframe 下方的指标
猜你喜欢
  • 2012-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多