¡¡¡¡<!doctype html>
¡¡¡¡<html lang="en">
¡¡¡¡<head>
¡¡¡¡<meta charset="UTF-8">
¡¡¡¡<title>Document</title>
¡¡¡¡<style type="text/css">
¡¡¡¡body,div,ul,li {
¡¡¡¡margin: 0;
¡¡¡¡padding: 0;
¡¡¡¡}
¡¡¡¡ul,li {
¡¡¡¡list-style: none;
¡¡¡¡}
¡¡¡¡a img {
¡¡¡¡border: none;
¡¡¡¡}
¡¡¡¡.wrap {
¡¡¡¡width: 100%;
¡¡¡¡overflow: hidden;
¡¡¡¡position: relative;
¡¡¡¡}
¡¡¡¡.wrap .prev,
¡¡¡¡.wrap .next {
¡¡¡¡height: 320px;
¡¡¡¡position: absolute;
¡¡¡¡left: -50%;
¡¡¡¡top: 0;
¡¡¡¡background-color: #999;
¡¡¡¡opacity: 0.7;
¡¡¡¡width: 100%;
¡¡¡¡}
¡¡¡¡.wrap .next {
¡¡¡¡left: auto;
¡¡¡¡right: -50%;
¡¡¡¡}
¡¡¡¡.wrap .prev:hover,
¡¡¡¡.wrap .next:hover {
¡¡¡¡opacity: 0.5;
¡¡¡¡}
¡¡¡¡.container {
¡¡¡¡width: 100%;
¡¡¡¡height: 320px;
¡¡¡¡}
¡¡¡¡.container ul {
¡¡¡¡height: 100%;
¡¡¡¡}
¡¡¡¡.container li {
¡¡¡¡width: 1000px;
¡¡¡¡height: 100%;
¡¡¡¡float: left;
¡¡¡¡}
¡¡¡¡.container li a,
¡¡¡¡.container li img {
¡¡¡¡display: block;
¡¡¡¡width: 100%;
¡¡¡¡height: 100%;
¡¡¡¡}
¡¡¡¡.page {
¡¡¡¡position: absolute;
¡¡¡¡left: 50%;
¡¡¡¡bottom: 10px;
¡¡¡¡display:none;
¡¡¡¡}
¡¡¡¡.page span {
¡¡¡¡float: left;
¡¡¡¡margin-right: 10px;
¡¡¡¡width: 20px;
¡¡¡¡height: 20px;
¡¡¡¡display: block;
¡¡¡¡cursor: pointer;
¡¡¡¡background: #999;
¡¡¡¡border-radius: 50%;
¡¡¡¡text-align: center;
¡¡¡¡color: #fff;
¡¡¡¡}
¡¡¡¡.page .select {
¡¡¡¡background: #f00;
¡¡¡¡}
¡¡¡¡</style>
¡¡¡¡</head>
¡¡¡¡<body>
¡¡¡¡<div class="wrap">
¡¡¡¡<div class="container" id="container">
¡¡¡¡<ul>
¡¡¡¡<li><a href="1"><img src="http://www.hengqijy.com/uploadfile/2013/1031/20131031084228263.jpg"></a> </li>
¡¡¡¡<li><a href="2"><img src="http://www.hengqijy.com/uploadfile/2014/0315/20140315023711196.jpg"></a></li>
¡¡¡¡<li><a href="3"><img src="http://www.hengqijy.com/uploadfile/2014/0228/20140228091207797.jpg"></a></li>
¡¡¡¡<li><a href="4"><img src="http://www.hengqijy.com/statics/images/new_img/ksss.jpg"></a></li>
¡¡¡¡</ul>
¡¡¡¡</div>
¡¡¡¡<div class="prev" id="prev"></div>
¡¡¡¡<div class="next" id="next"></div>
¡¡¡¡<div id="page" class="page"></div>
¡¡¡¡</div>
¡¡¡¡<script type="text/javascript">
¡¡¡¡/*
¡¡¡¡* Slider constructor
¡¡¡¡* @param {Node} ele ÈÝÆ÷½Úµã
¡¡¡¡* @param {Int} index ĬÈÏÏÔʾµÚ¼¸ÕÅ
¡¡¡¡*/
¡¡¡¡var Slider = function(ele){
¡¡¡¡this.ele = ele;
¡¡¡¡this.oList = ele.children[0];
¡¡¡¡this.items = this.oList.getElementsByTagName("li");
¡¡¡¡this.itemWidth = parseInt(this.items[0].offsetWidth, 10);
¡¡¡¡this.page = document.getElementById("page");
¡¡¡¡this.prevBtn = document.getElementById("prev");
¡¡¡¡this.nextBtn = document.getElementById("next");
¡¡¡¡this.init();
¡¡¡¡}
¡¡¡¡Slider.prototype = {
¡¡¡¡constructor: Slider,
¡¡¡¡init: function(){
¡¡¡¡this.oList.style.position = 'absolute';
¡¡¡¡this.oList.style.top = 0;
¡¡¡¡this.oList.style.left = 0;
¡¡¡¡this.going = 0;
¡¡¡¡this.current = 1;
¡¡¡¡this.speed = 100;
¡¡¡¡this.timer = null;
¡¡¡¡this.wrapWidth = parseInt(this.ele.offsetWidth, 10);
¡¡¡¡this.pageCircles = null;
¡¡¡¡this.prevBtn.style.marginLeft = -this.itemWidth/2 + 'px';
¡¡¡¡this.nextBtn.style.marginRight = -this.itemWidth/2 + 'px';
¡¡¡¡if(this.items.length > 2) {
¡¡¡¡this.setUp();
¡¡¡¡} else {
¡¡¡¡this.oList.style.left = (this.wrapWidth - this.itemWidth * this.items.length)/2 + 'px';
¡¡¡¡this.prevBtn.style.display = "none";
¡¡¡¡this.nextBtn.style.display = "none";
¡¡¡¡}
¡¡¡¡this.oList.style.width = this.itemWidth * this.items.length + 'px';
¡¡¡¡},
¡¡¡¡setUp:function(){
¡¡¡¡var first1 = this.items[0].cloneNode();
¡¡¡¡first1.innerHTML = this.items[0].innerHTML;
¡¡¡¡first2 = this.items[1].cloneNode();
¡¡¡¡first2.innerHTML = this.items[1].innerHTML;
¡¡¡¡last1 = this.items[this.items.length-1].cloneNode();
¡¡¡¡last1.innerHTML = this.items[this.items.length-1].innerHTML;
¡¡¡¡last2 = this.items[this.items.length-2].cloneNode();
¡¡¡¡last2.innerHTML = this.items[this.items.length-2].innerHTML;
¡¡¡¡this.oList.appendChild(first1);
¡¡¡¡this.oList.appendChild(first2);
¡¡¡¡this.oList.insertBefore(last1, this.items[0]);
¡¡¡¡this.oList.insertBefore(last2, this.items[0]);
¡¡¡¡this.buildPage();
¡¡¡¡this.bindEvent();
¡¡¡¡this.slientGoTo();
¡¡¡¡},
¡¡¡¡buildPage:function(){
¡¡¡¡for(var i = 0,len = this.items.length - 4; i<len; i++) {
¡¡¡¡var circle = document.createElement('span');
¡¡¡¡circle.innerHTML = i + 1;
¡¡¡¡this.page.appendChild(circle);
¡¡¡¡}
¡¡¡¡this.pageCircles = this.page.getElementsByTagName('span');
¡¡¡¡this.addEvent(this.page, 'click', 'gotoIndex');
¡¡¡¡this.page.style.display = 'block';
¡¡¡¡},
¡¡¡¡bindEvent:function(){
¡¡¡¡this.addEvent(this.prevBtn, 'click', 'prev');
¡¡¡¡this.addEvent(this.nextBtn, 'click', 'next');
¡¡¡¡},
¡¡¡¡addEvent:function(ele, type, fn, context) {
¡¡¡¡context = context || this;
¡¡¡¡var innerFun = function(event) {
¡¡¡¡var evt = event || window.event;
¡¡¡¡if(typeof fn === 'string'){
¡¡¡¡context[fn].call(context, this, evt);
¡¡¡¡} else {
¡¡¡¡fn.call(context, this, evt);
¡¡¡¡}
¡¡¡¡}
¡¡¡¡if(window.addEventListener) {
¡¡¡¡ele.addEventListener(type, innerFun, false);
¡¡¡¡} else {
¡¡¡¡ele.attachEvent('on'+type, innerFun);
¡¡¡¡}
¡¡¡¡},
¡¡¡¡index:function(ele){
¡¡¡¡var parentNode = ele.parentNode;
¡¡¡¡var eles = parentNode.getElementsByTagName(ele.tagName);
¡¡¡¡for(var i = 0, len = eles.length; i<len; i++){
¡¡¡¡if(eles[i] == ele) {
¡¡¡¡return i;
¡¡¡¡}
¡¡¡¡}
¡¡¡¡},
¡¡¡¡hasClass: function(obj, cls) {
¡¡¡¡return !!obj.className && obj.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
¡¡¡¡},
¡¡¡¡addClass: function(obj, cls) {
¡¡¡¡if (!this.hasClass(obj, cls)) obj.className += " " + cls;
¡¡¡¡},
¡¡¡¡removeClass:function (obj, cls) {
¡¡¡¡if (this.hasClass(obj, cls)) {
¡¡¡¡var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');
¡¡¡¡obj.className = obj.className.replace(reg, ' ');
¡¡¡¡}
¡¡¡¡},
¡¡¡¡gotoIndex:function(eleContext, evt){
¡¡¡¡var ele = evt.target || evt.srcElement;
¡¡¡¡var index = this.index(ele);
¡¡¡¡if(this.current === this.items.length-4 && index === 0) {
¡¡¡¡this.current = 0;
¡¡¡¡this.slientGoTo();
¡¡¡¡} else if(this.current === 1 && index ===this.items.length-5) {
¡¡¡¡this.current = this.items.length-3;
¡¡¡¡this.slientGoTo();
¡¡¡¡}
¡¡¡¡this.current = index + 1;
¡¡¡¡this.doAnimate();
¡¡¡¡},
¡¡¡¡prev:function(eleContext, evt){
¡¡¡¡this.current--;
¡¡¡¡this.doAnimate();
¡¡¡¡},
¡¡¡¡next:function(eleContext, evt){
¡¡¡¡this.current++;
¡¡¡¡this.doAnimate();
¡¡¡¡},
¡¡¡¡doAnimate:function(){
¡¡¡¡this.distance = (this.wrapWidth-this.itemWidth*(2*this.current + 3))/2 - parseInt(this.oList.style.left, 10);
¡¡¡¡if(this.distance < 0){
¡¡¡¡this.speed = -Math.abs(this.speed);
¡¡¡¡} else {
¡¡¡¡this.speed = Math.abs(this.speed);
¡¡¡¡}
¡¡¡¡this.distance = Math.abs(this.distance);
¡¡¡¡this.animate();
¡¡¡¡},
¡¡¡¡animate:function(){
¡¡¡¡var that = this;
¡¡¡¡this.timer = setTimeout(function() {
¡¡¡¡var left = parseInt(that.oList.style.left, 10) || 0;
¡¡¡¡if (that.going+Math.abs(that.speed) >= that.distance) {
¡¡¡¡if (that.speed > 0) {
¡¡¡¡that.oList.style.left = left + that.distance - that.going + 'px';
¡¡¡¡} else {
¡¡¡¡that.oList.style.left = left - that.distance + that.going + 'px';
¡¡¡¡}
¡¡¡¡clearTimeout(that.timer);
¡¡¡¡that.going = 0;
¡¡¡¡that.onceEnd();
¡¡¡¡} else {
¡¡¡¡that.going += Math.abs(that.speed);
¡¡¡¡that.oList.style.left = left + that.speed + 'px';
¡¡¡¡that.animate();
¡¡¡¡}
¡¡¡¡}, 25);
¡¡¡¡},
¡¡¡¡slientGoTo:function(){
¡¡¡¡console.log(this.current);
¡¡¡¡this.oList.style.left = (this.wrapWidth-this.itemWidth*(2*this.current + 3))/2 + 'px';
¡¡¡¡},
¡¡¡¡setCircleSelect:function(){
¡¡¡¡for(var i=0,len = this.pageCircles.length; i<len; i++) {
¡¡¡¡var ele= this.pageCircles[i];
¡¡¡¡if(this.hasClass(ele, 'select')) {
¡¡¡¡this.removeClass(ele, 'select');
¡¡¡¡}
¡¡¡¡}
¡¡¡¡this.addClass(this.pageCircles[this.current-1], 'select');
¡¡¡¡},
¡¡¡¡correctCurrent:function(){
¡¡¡¡if(this.current === 0) {
¡¡¡¡this.current = this.items.length - 4;
¡¡¡¡} else if(this.current === this.items.length - 3) {
¡¡¡¡this.current = 1;
¡¡¡¡} else {
¡¡¡¡return false;
¡¡¡¡}
¡¡¡¡this.slientGoTo();
¡¡¡¡},
¡¡¡¡onceEnd:function(){
¡¡¡¡this.correctCurrent();
¡¡¡¡this.setCircleSelect();
¡¡¡¡}
¡¡¡¡}
¡¡¡¡var con = document.getElementById("container");
¡¡¡¡var s = new Slider(con);
¡¡¡¡</script>
¡¡¡¡</body>
¡¡¡¡</html>