【问题标题】:Removing blank spaces between slides删除幻灯片之间的空格
【发布时间】:2015-06-19 17:38:33
【问题描述】:

我正在制作一个 jQuery 图像滑块。滑块工作得很好,但我不想要幻灯片之间的空白。我怎样才能摆脱它们?

window.onload = function slider() {
    $(".slider #1").show("fade", {
        direction: 'left'
    }, 500);
    $(".slider #1").delay(5000).hide("slide", {
        direction: 'left'
    }, 500);

    var sc = $(".slider img").size();
    var count = 2;
    var margin = $(".slider").width();

    setInterval(function() {
        $(".slider #" + count).show("slide", {
            direction: 'right'
        }, 500);
        $(".slider #" + count).delay(5000).hide("slide", {
            direction: 'left'
        }, 500);

        if (count == sc) {
            count = 1;
        } else {
            count = count + 1;
        }
    }, 6500);
}
.img-style {
    position: relative;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}
.slider {
    height: 400px;
    overflow: hidden;
}
.slider img {
    display: none;
}
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<div class="container">
    <div class="row " style="width:100%;margin-left:0px;" id="main">
        <div class="slider" id="slide-for">
            <img id="1" class="img-style" src="http://lorempixel.com/400/200/abstract/1/" />
            <img id="2" class="img-style" src="http://lorempixel.com/400/200/abstract/2/" />
            <img id="3" class="img-style" src="http://lorempixel.com/400/200/abstract/3/" />
            <img id="4" class="img-style" src="http://lorempixel.com/400/200/abstract/4/" />
            <img id="5" class="img-style" src="http://lorempixel.com/400/200/abstract/5/" />
            <img id="6" class="img-style" src="http://lorempixel.com/400/200/abstract/6/" />
        </div>
    </div>
</div>

查看JSFiddle

【问题讨论】:

    标签: javascript jquery html css image


    【解决方案1】:

    绝对定位可以解决问题。

    window.onload = function slider() {
      
      $(".slider #1").show("fade", {
        direction: 'left'
      }, 500);
    
      var sc = $(".slider img").size();
      var count = 1;
      var margin = $(".slider").width();
    
      setInterval(function() {
        $(".slider #" + count).toggle("slide", {
          direction: 'left'
        }, 500);
    
        if (count == sc) {
          count = 1;
        } else {
          count = count + 1;
        }
    
        $(".slider #" + count).toggle("slide",  {
          direction: 'right'
        }, 500);
      }, 6500);
    
    }
    .img-style {
      position: relative;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
    }
    .slider {
      height: 400px;
      overflow: hidden;
    }
    .slider img {
      display: none;
      position: absolute;
      top: 0;
      left: 0;
    }
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
    <div class="container">
      <div class="row " style="width:100%;margin-left:0px;" id="main">
        <div class="slider" id="slide-for">
          <img id="1" class="img-style" src="http://lorempixel.com/400/200/abstract/1/" />
          <img id="2" class="img-style" src="http://lorempixel.com/400/200/abstract/2/" />
          <img id="3" class="img-style" src="http://lorempixel.com/400/200/abstract/3/" />
          <img id="4" class="img-style" src="http://lorempixel.com/400/200/abstract/4/" />
          <img id="5" class="img-style" src="http://lorempixel.com/400/200/abstract/5/" />
          <img id="6" class="img-style" src="http://lorempixel.com/400/200/abstract/6/" />
        </div>
      </div>
    </div>

    【讨论】:

    • 感谢您的回复..做位置:绝对它设置在页面的背景上而不是在 div 中我想要它在 div 中..
    • 另外,如果我做绝对定位,我不能让它响应..你能帮我解决这个问题吗
    • 我认为没有绝对定位来将图像元素叠加在一起是不可能的。否则,第二张图像的动画将在屏幕外完成,并且在隐藏第一张图像之前不会显示。这就是为什么您在滑动时会看到图像之间的空白区域。