【问题标题】:Issue with first slide of bootstrap carousel引导轮播的第一张幻灯片的问题
【发布时间】:2017-06-20 03:16:37
【问题描述】:

我的网站上有一个引导轮播。
这是缩短的 HTML:

<div id="myCarousel" class="hp-top carousel fade" data-ride="carousel" data-interval="6000">
  <ol class="carousel-indicators">
    <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
    <li data-target="#myCarousel" data-slide-to="1"></li>
  </ol>
  <div class="carousel-inner">
    <div id="first-slide" class="item active">

      <img src="" alt="Chicago" />
      <div class="carousel-caption">
        <div class="carousel-caption-inner">
          <p class="slider-text small"><span class="slider-padding">What makes</span> us <span class="slider-green">specialists?</span></p>
        </div>
      </div>
    </div>
    <div class="item">

      <img src="" alt="Chicago" />
      <div class="carousel-caption">
        <div class="carousel-caption-inner">
          <p class="slider-text small"><span class="slider-padding">What makes</span> us <span class="slider-green">distinctive?</span></p>
        </div>
      </div>
    </div>
  </div>

我创建了一个函数,可以在幻灯片移动后几秒钟内使文本滑动。
这是代码:

<script type="text/javascript">
var carouselContainer = jQuery('.carousel');
var slideInterval = 6000;

jQuery( document ).ready(function() {
  if (jQuery(window).width() > 480) {
    function toggleCaption() {
      jQuery('.carousel-caption').hide();
      var caption = carouselContainer.find('.active').find('.carousel-caption');
      caption.delay(1000).toggle("slide", {direction:'right'});
    }

    jQuery('#myCarousel').bind('slide.bs.carousel', function() {
      jQuery('.carousel-caption').hide();
    });

    carouselContainer.on('slid.bs.carousel', function() {
      toggleCaption();
    });
  }
});
</script>

现在一切正常,但是当您第一次加载页面时,最后一个横幅会在第一个横幅显示之前显示一秒钟。
我想知道这是否与我上面的功能有关。
有什么想法可能导致这种情况吗?

【问题讨论】:

    标签: javascript jquery twitter-bootstrap


    【解决方案1】:

    看起来您已经在准备好的文档中的条件内定义了一个函数。不要那样做。将其移到准备好的文档范围之外,如下所示:

    <script type="text/javascript">
        var carouselContainer = jQuery('.carousel');
        var slideInterval = 6000;            
    
        jQuery(document).ready(function () {
            if (jQuery(window).width() > 480) {                    
    
                toggleCaption(); //replace function definition with call to function instead
    
                jQuery('#myCarousel').bind('slide.bs.carousel', function () {
                    jQuery('.carousel-caption').hide();
                });
    
                carouselContainer.on('slid.bs.carousel', function () {
                    toggleCaption();
                });
            }
        });
    
        //MOVED function outside of document.ready:
        function toggleCaption() {
            jQuery('.carousel-caption').hide();
            var caption = carouselContainer.find('.active').find('.carousel-caption');
            caption.delay(1000).toggle("slide", { direction: 'right' });
        }
    </script>
    

    【讨论】:

    • 如果您希望加快幻灯片的首次加载速度,您应该在此处查看此位:caption.delay(1000) 并将 1000 减少到 200-300 以加快加载,或者,将延迟持续时间作为传递给 toggleCaption(delayLength) 的参数,并在第一次加载时将其作为较低的值传递(在上面准备好的文档中的第一次调用),在第二次调用 .on('slid.bs.carousel 时将其传递为 1000 ') 处理程序。灵活。
    猜你喜欢
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多