www.gusucode.com > SiteEngine(建站引擎) 7.0 个人免费版源码程序 > data/js/jquery/ImgSlider.js
function Slider(container) { //* Member variables var _container = document.getElementById(container); var _sliders = GetElementsByClass(_container,'div','slide'); var _width = 0; var _instance = this; var _activeSlide = null; var _activeWidth = 0; //* Settings var _overlap = 10; var _stepSize = 5; //* Static methods function GetElementsByClass(object, tag, className) { var elements = object.getElementsByTagName(tag); var result = new Array(); for (var i = 0; i < elements.length; i++) { if (elements[i].className == className) result.push(elements[i]); } return result; } function GetElementByClass(object, tag, className) { var elements = object.getElementsByTagName(tag); for (var i = 0; i < elements.length; i++) { if (elements[i].className == className) return elements[i]; } return null; } function AttachEvent(object,evt,fnc,useCapture) { if (!useCapture) useCapture=false; if (object.addEventListener) { object.addEventListener(evt,fnc,useCapture); return true; } else { return object.attachEvent("on" + evt,fnc); } } //* Methods this.Init = function() { _width = _container.clientWidth /_sliders.length; AttachEvent(_container,'mouseout',this.ContainerMouseOut,true); for(var i = 0;i < _sliders.length; i++) { var mouseOverFunction = (function(element){return function() { _instance.SlideMouseOver(element); }})(_sliders[i]); //* ie hax AttachEvent(_sliders[i],'mouseover',mouseOverFunction,true); _sliders[i].style.left = (_width * i) + 'px'; } this.Loop(); } this.Loop = function() { setTimeout(_instance.Loop,16); var left = 0; for(var i = 0;i < _sliders.length; i++) { var slideLeft = parseInt(_sliders[i].style.left); /* if(Math.abs(slideLeft - left) > _stepSize) { slideLeft += (slideLeft > left)?-_stepSize:_stepSize; _sliders[i].style.left = slideLeft + 'px'; } */ var moveBy = Math.abs(slideLeft - left) / _stepSize; if(Math.abs(slideLeft - left) > 1) { if(moveBy < 1) moveBy = 1; slideLeft += (slideLeft > left)?-moveBy:moveBy; _sliders[i].style.left = slideLeft + 'px'; } if(_sliders[i] == _activeSlide) left = left + _activeWidth; else left = left + _width; } } this.SlideMouseOver = function(element) { var image = GetElementByClass(element,'img','diapo'); _activeWidth = image.clientWidth - _overlap; _width = (_container.clientWidth - _activeWidth) / (_sliders.length - 1); _activeSlide = element; } this.ContainerMouseOut = function() { _activeSlide = null; _width = _container.clientWidth /_sliders.length; //_instance.ResetSlides(); } }