每天学一个jquery插件-无缝的轮播

Posted 阿飞超努力

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每天学一个jquery插件-无缝的轮播相关的知识,希望对你有一定的参考价值。

每天一个jquery插件-无缝的轮播

无缝的轮播

无缝轮播是一个很常见的效果,理解逻辑之后就很简单了

效果如下
在这里插入图片描述

代码部分

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>做无缝轮播</title>
		<script src="js/jquery-3.4.1.min.js"></script>
		<style>
			* {
				margin: 0;
				padding: 0;
				user-select: none;
			}

			#div {
				border: 1px solid lightgray;
				width: 600px;
				height: 300px;
				margin: 20px;
				overflow: hidden;
			}
			.item {
				border: 1px solid lightgray;
				width: 96%;
				height: 50px;
				margin: 10px auto;
			}
		</style>
	</head>
	<body>
		<div id="div">
			<div class="rollbox"></div>
		</div>
	</body>
</html>
<script>
	$(document).ready(function() {
		for (var i = 0; i < 7; i++) {
			var $item = $("<div class='item'>" + i+ "</div>");
			$item.appendTo($("#div .rollbox"));
		}
	})
	//轮播动作

	$(function() {
		$("#div").roll(1);
	})

	$.prototype.roll = function(span) {
		span = span == undefined ? 20 : span; //滚动速率
		var $that = $(this).find('.rollbox');
		var index = 0;
		var t = setInterval(function() {
			$that.css('margin-top', index + 'px');
			index--;
			check();
		}, span)
		//
		$that.mouseenter(function() {
			clearInterval(t);
		})
		$that.mouseleave(function() {
			t = setInterval(function() {
				$that.css('margin-top', index + 'px');
				index--;
				check();
			}, span)
		})
		function check(){
			var first = $that.children().first();
			var top = parseInt(first.css('margin-top').replace('px',''));
			var bottom = parseInt(first.css('margin-bottom').replace('px',''));
			var height  =first.height();
			bw = parseInt(first.css('border-width').replace('px',''));
			var temp = index+top+height+bottom;
			if(temp==top-2*bw){
				var last = $that.children().last();
				last.after(first);
				$that.css('margin-top','0px');
				index=0;
			}
		}
	}
</script>

思路解释

  • 一开始我是打算直接在元素上面进行动画效果的,不过中间弯弯绕绕还是有点烦,所以直接给一个辅助容器,包住所有子元素,我们让这个辅助容器上下运动就行
  • 就是你缓慢移动辅助容器往上的时候,就已经有滚动效果了,然后我们判断最上面的那个容器是否已经完全隐去,然后再把辅助容器复位,把最上面额元素放到最下面就行了
  • 具体看代码
  • 完事,休息

以上是关于每天学一个jquery插件-无缝的轮播的主要内容,如果未能解决你的问题,请参考以下文章

记一个jquery 无缝轮播的制作方法

JS 轮播图(无缝连接的轮播图实现,含代码供参考)

手机的轮播图可以用jquery来做吗

jQuery插件版无缝轮播,重写了之前的代码,显得更高大上一点

用jquery实现带左右按键的轮播图

基于jquery的轮播插件