js realizes the carousel effect suitable for news pictures

  • 2021-07-16 01:24:35
  • OfStack

Without saying much, please look at the code:


<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Picture carousel</title>
<style>
*
{
 margin: 0;
 padding: 0;
}
.carousel-container
{
 overflow: hidden;
 width: 405px;/* 130*3+5*3 = 405 */
 height: 150px;
 margin: 50px auto;
 background-color: #2c2c2c;
}
.carousel-area
{
 width: 1350px;/* 675*2 = 1350 */
 height: 150px;
}
.carousel-ul
{
 float: left;
 overflow: hidden;
 width: 675px;/* 130*5+5*5 = 675 */
 height: 150px;
}
.carousel-ul li
{
 float: left;
 overflow: hidden;
 width: 130px;
 height: 130px;
 margin: 10px 5px 10px 0;
 list-style-type: none;
}
 </style>
</head>
<body>
 <div class="carousel-container">
 <div class="carousel-area">
 <ul class="carousel-ul" id="carousel-ul-1">
 <li><img src="img/1.gif" alt=""></li>
 <li><img src="img/2.jpg" alt=""></li>
 <li><img src="img/3.jpg" alt=""></li>
 <li><img src="img/4.jpg" alt=""></li>
 <li><img src="img/5.gif" alt=""></li>
 </ul>
 </div>
 </div>
<script src="//cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>
<script>
 $(document).ready(function() {
 var carousel_interval_id, //interval ID
 start_carousel_flag = false, // Whether to start interval
 carousel_speed = 50, // Rolling speed ( px/s ) ,carousel_speed=1000/interval Time interval. 
 start_interval = function() { // Execute interval
  start_carousel_flag = true;
  carousel_interval_id = setInterval(function() {
  var margin_left = $('.carousel-area').css('margin-left');
  $('.carousel-area').css('margin-left', (parseInt(margin_left) - 1) + 'px'); // Keep moving to the left 1px
  if (parseInt($('.carousel-area').css('margin-left')) <= -($('.carousel-ul').width())) { // Reset the carousel part after it exceeds the container 
   $('.carousel-area').css('margin-left', 0);
  }
  }, 1000 / carousel_speed)
 },
 end_interval = function() { // Stop interval
  start_carousel_flag = false;
  carousel_interval_id = clearInterval(carousel_interval_id);
 }
 $('.carousel-area').append('<ul class="carousel-ul">' + $('.carousel-ul').html() + '</ul>'); // Duplicate carousel-ul Complete the loop by filling the no-content area that appears after moving left 
 start_interval();
 $('.carousel-area').hover(
 function() { // Mouse hover event 
  if (start_carousel_flag) { // Has begun interval
  end_interval();
  }
 },
 function() { // Mouse departure event 
  if (!start_carousel_flag) { // There is no beginning interval
  start_interval();
  }
 }
 )
})
</script>
</body>
</html>

Related articles: