无缝滚动轮播图

178 阅读1分钟

common.js内容:

// 定义一个获取元素的函数
function my$(id) {
  return document.getElementById(id);
}

// DOM 2 级事件绑定方式
// 自己制作一个兼容所有浏览器的绑定事件的函数
// 参数:事件源,事件类型,事件函数
function addEvent(ele, type, fn) {
  // IE 9 及以上的浏览器和其他浏览器,使用 addEventListener 方法
  // IE 9 以下的浏览器,使用 attachEvent 方法
  // 浏览器能力检测
  if (ele.addEventListener) {
    ele.addEventListener(type, fn);
  } else if (ele.attachEvent) {
    ele.attachEvent("on" + type, fn);
  }
}

// 兼容所有浏览器的 解除绑定事件的函数
// 参数:事件源,事件类型,事件函数
function removeEvent(ele, type, fn) {
  // 浏览器能力检测
  if (ele.removeEventListener) {
    ele.removeEventListener(type, fn);
  } else if (ele.detachEvent) {
    ele.detachEvent("on" + type, fn);
  }
}
<!DOCTYPE html
	PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

<head>
	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
	<title>Document</title>
	<style>
		* {
			margin: 0;
			padding: 0;
		}

		.scroll {
			position: relative;
			width: 830px;
			height: 130px;
			border: 10px solid #000;
			margin: 100px auto;
			overflow: hidden;
		}

		.scroll .inner {
			position: relative;
			width: 5000px;
		}

		.scroll ul {
			position: absolute;
			top: 0;
			left: 0;
			height: 130px;
			list-style: none;
		}

		.scroll ul li {
			float: left;
			margin-right: 10px;
		}
	</style>
</head>

<body>
	<div class="scroll" id="scroll">
		<div class="inner">
			<ul id="munit">
				<li><img src="images/shuzi/0.png" alt="" /></li>
				<li><img src="images/shuzi/1.png" alt="" /></li>
				<li><img src="images/shuzi/2.png" alt="" /></li>
				<li><img src="images/shuzi/3.png" alt="" /></li>
				<li><img src="images/shuzi/4.png" alt="" /></li>
				<li><img src="images/shuzi/5.png" alt="" /></li>
				<li><img src="images/shuzi/6.png" alt="" /></li>
			</ul>
		</div>
	</div>
	<script src="common.js"></script>
	<script>
		
		// 获取元素
		var scroll = my$("scroll");
		var munit = my$("munit");
		// 2.折返点计算需要通过 js 自动计算
		var back = -munit.offsetWidth;
		console.log(back);
		// 1.自动生成另一组对应的图片结构 li
		munit.innerHTML = munit.innerHTML + munit.innerHTML;
		// 自己进行滚动播放
		var nowLeft = 0;
		var timer;
		timer = setInterval(run,5);
		// 3.鼠标移上 scroll 元素,让运动停止
		scroll.onmouseover = function () {
			clearInterval(timer);
		};
		// 4.鼠标离开 scroll 元素,让运动重新开始
		scroll.onmouseout = function () {
			timer = setInterval(run,5);
		};

		// 运动函数
		function run() {
			// nowLeft 进行自减
			nowLeft -= 1;
			// 每次都要判断,是否走到了折返点,如果走到了,让他瞬间切换到 0
			if (nowLeft <= back) {
				nowLeft = 0;
			}
			// 给ul 赋值
			munit.style.left = nowLeft + "px";
		}
	</script>
</body>

</html>