jQuery div 无限幻灯片放映(不间断,像星球大战)

jQuery div with Infinite slide show (non stop, Like StarWars)

我尝试在 div 的文本中进行无限自动滚动(有点像星球大战的通用方式)。 当前代码有效,但结果一点也不流畅。

我不明白为什么,我希望它是流畅的。

这是我的代码:

$(function(){
    setInterval(function(){
        $(".slideshow ul").animate({marginTop:-20}, 500, function(){
            $(this).css({marginTop:0}).find("li:last").after($(this).find("li:first"));
        })
    }, 500);
});

$(document).ready(function(){

 $(function(){
       setInterval(function(){
          $(".slideshow ul").animate({marginTop:-20}, 500, function(){
             $(this).css({marginTop:0}).find("li:last").after($(this).find("li:first"));
         })
       }, 500);
    });

    
    });
body { 
  background: url(img/1.jpg) no-repeat center center fixed; 
  -webkit-background-size: cover;
  -moz-background-size: cover;
  -o-background-size: cover;
  background-size: cover;
}

.head {
 width: 100%;
 height: 150px;
 text-align: center;
 background-color: rgba(255,255,255, 0.2);
}

.users {
 margin-top: 20px;
 padding-top: 20px; 
 height: 400px;

 text-align: center;
 background-color: rgba(255,255,255, 0.2);

}

#suscrib {
 height: 45px;
 font-size: 15px !important;
}


.slideshow {

   width: 200px;
   height: 370px;
   overflow: hidden;
   /*border: 3px solid #F2F2F2;*/
}

.slideshow ul {
    /* 4 images donc 4 x 100% */
   width: 100%;
   height: 200px;
   padding:0; margin:0;
   list-style: none;
}
.slideshow li {
   color: red;
   font-family: 'Satisfy';

   font-size: 15px;
}


.thanks {
 margin-top: 20px;
 text-align: center;
 font-family: 'Dancing Script';
 font-size: 40px;
 color: red;
}

#ombre {
 box-shadow: 3px 3px 43px #000 !important;
}

h1 {
 padding-top: 80px;
 opacity: 1 !important;
 z-index: 10;
}

#logo {
 height: 150px;
 width: 150px;
 margin-top: 0px;
}
<html>
  <head>
    <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
  </head>


  
 <body>
  


   <div class="row">
       <div class="users col-lg-2 col-lg-offset-5" id="ombre">
        <div class="slideshow col-lg-12 ">
         <ul id="pushme">
              <li> <div id='suscrib'> User user  </div>  </li>
              <li> <div id='suscrib'> User user2  </div>  </li>
              <li> <div id='suscrib'> User user3  </div>  </li>
                          <li> <div id='suscrib'> User user4  </div>  </li>
              <li> <div id='suscrib'> User user  </div>  </li>
              <li> <div id='suscrib'> User user  </div>  </li>
                          <li> <div id='suscrib'> User user  </div>  </li>
              <li> <div id='suscrib'> User user  </div>  </li>
              <li> <div id='suscrib'> User user  </div>  </li>
                          <li> <div id='suscrib'> User user10  </div>  </li>
              <li> <div id='suscrib'> User user  </div>  </li>
              <li> <div id='suscrib'> User user  </div>  </li>
         </ul>
        </div>

       </div>
   </div>
  </div>
 </body>
</html>

编辑:检查新片段 非常感谢!

所以,这里有几处错误。

  1. 动画不稳定的原因 #1 是因为您没有指定缓动,所以 jQuery 使用默认 "swing" 设置。你想要的是 "linear" 因为你根本不想缓动,你希望它像星球大战文本那样以稳定的速度连续向上滚动。
  2. 动画不稳定的原因 #2 是因为您将其动画化了 20 像素,而您的 "suscrib" 元素高了 45 像素。所以你只是在中途对其进行动画处理,然后将其跳回到 0。
  3. 您有多个 ID 为 "suscrib" 的 DIV。文档中具有给定 ID 的唯一元素不应超过一个,请改用 类。

$(document).ready(function(){

 $(function(){
       setInterval(function(){
          $(".slideshow ul").animate({marginTop:-45}, 2000, "linear", function(){
             $(this).css({marginTop:0}).find("li:last").after($(this).find("li:first"));
         })
       }, 2000);
    });

    
    });
body { 
  background: url(img/1.jpg) no-repeat center center fixed; 
  -webkit-background-size: cover;
  -moz-background-size: cover;
  -o-background-size: cover;
  background-size: cover;
}

.head {
 width: 100%;
 height: 150px;
 text-align: center;
 background-color: rgba(255,255,255, 0.2);
}

.users {
 margin-top: 20px;
 padding-top: 20px; 
 height: 400px;

 text-align: center;
 background-color: rgba(255,255,255, 0.2);

}

.suscrib {
 height: 45px;
 font-size: 15px !important;
}


.slideshow {

   width: 200px;
   height: 370px;
   overflow: hidden;
   /*border: 3px solid #F2F2F2;*/
}

.slideshow ul {
    /* 4 images donc 4 x 100% */
   width: 100%;
   height: 200px;
   padding:0; margin:0;
   list-style: none;
}
.slideshow li {
   color: red;
   font-family: 'Satisfy';

   font-size: 15px;
}


.thanks {
 margin-top: 20px;
 text-align: center;
 font-family: 'Dancing Script';
 font-size: 40px;
 color: red;
}

#ombre {
 box-shadow: 3px 3px 43px #000 !important;
}

h1 {
 padding-top: 80px;
 opacity: 1 !important;
 z-index: 10;
}

#logo {
 height: 150px;
 width: 150px;
 margin-top: 0px;
}
<html>
  <head>
    <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
  </head>


  
 <body>
  


   <div class="row">
       <div class="users col-lg-2 col-lg-offset-5" id="ombre">
        <div class="slideshow col-lg-12 ">
         <ul id="pushme">
              <li> <div class='suscrib'> User user  </div>  </li>
              <li> <div class='suscrib'> User user2  </div>  </li>
              <li> <div class='suscrib'> User user3  </div>  </li>
              <li> <div class='suscrib'> User user4  </div>  </li>
              <li> <div class='suscrib'> User user  </div>  </li>
              <li> <div class='suscrib'> User user  </div>  </li>
              <li> <div class='suscrib'> User user  </div>  </li>
              <li> <div class='suscrib'> User user  </div>  </li>
              <li> <div class='suscrib'> User user  </div>  </li>
              <li> <div class='suscrib'> User user10  </div>  </li>
              <li> <div class='suscrib'> User user  </div>  </li>
              <li> <div class='suscrib'> User user  </div>  </li>
         </ul>
        </div>

       </div>
   </div>
  </div>
 </body>
</html>