123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293 |
-
- Namespace.register("U.MD.UI.slider");
- U.MD.UI.slider = function (box, imgarr, attr) {
-
- var _speed = attr.speed;
- var _arrow = attr.arrow;
- var _dot = attr.dot;
- var _moveFun = attr.moveFun;
-
- var _sliderimgul = $$("ul", { className: 'U_MD_UI_slider_ImgList' }, box);
-
- imgarr.unshift(imgarr[imgarr.length - 1]);
-
- imgarr.push(imgarr[1]);
-
- for (i = 0; i < imgarr.length; i++) {
- var _sliderimgli = $$("li", { className: '' }, _sliderimgul),
- _sliderImg = $$("img", { className: '', src: imgarr[i] }, _sliderimgli);
- }
-
- var _sliderbtnul = $$("ul", { className: 'U_MD_UI_slider_Btn' }, box),
- _sliderbtnlil = $$("li", { className: 'U_MD_UI_slider_Left', innerHTML: '<' }, _sliderbtnul),
- _sliderbtnlir = $$("li", { className: 'U_MD_UI_slider_Right', innerHTML: '>' }, _sliderbtnul);
-
- var _sliderpointul = $$("ul", { className: 'U_MD_UI_slider_Point' }, box);
-
- for (i = 0; i < imgarr.length - 3; i++) {
-
- if (i == 0) {
- $$("li", { className: 'U_MD_UI_slider_On' }, _sliderpointul)[0];
- }
- $$("li", { className: '' }, _sliderpointul)[i];
- }
-
- var _boxidwidth = box.offsetWidth;
-
- var _boxidheight = box.offsetHeight;
-
- var _sliderimglist = box.getElementsByClassName("U_MD_UI_slider_ImgList")[0];
- var _sliderimgli = _sliderimglist.getElementsByTagName("li");
-
- var _sliderbtn = document.getElementsByClassName("U_MD_UI_slider_Btn")[0];
-
- var _sliderpoint = box.getElementsByClassName('U_MD_UI_slider_Point')[0];
-
- var _btnli = _sliderbtn.getElementsByTagName("li");
-
- var _listlen = _sliderimglist.getElementsByTagName("li").length;
-
- var _listindex = 1;
-
- var _pointdot = _sliderpoint.getElementsByTagName("li");
-
- var _dotlen = _pointdot.length;
-
- var _dotindex = 0;
-
- var timer = null;
-
- if (_dot) {
- _sliderpoint.style.display = "block";
- } else {
- _sliderpoint.style.display = "none";
- }
-
-
- var _sliderli = _sliderimglist.getElementsByTagName("li");
-
- for (var i = 0; i < _sliderli.length; i++) {
- _sliderli[i].style.width = _boxidwidth + "px";
- _sliderli[i].style.height = _boxidheight + "px";
- }
-
- _sliderimglist.style.width = (_boxidwidth * imgarr.length) + "px";
-
- _sliderimglist.style.left = -_boxidwidth + "px";
-
- _sliderbtn.style.width = _boxidwidth + "px";
-
-
- box.onmouseover = function () {
-
- if (_arrow) {
- _sliderbtn.style.display = "block";
- } else {
- _sliderbtn.style.display = "none";
- }
-
- clearInterval(timer);
- }
-
- box.onmouseout = function () {
- _sliderbtn.style.display = "none";
-
- timer = setInterval(auto, _speed);
- }
-
- var sTime = new Date();
-
- _btnli[0].onclick = function () {
-
- var nTime = new Date();
-
- if (nTime - sTime > 500) {
-
- _listindex--;
- _dotindex--;
- if (_listindex == 0) {
-
- move(_sliderimglist, { left: -_boxidwidth * _listindex }, function () {
- _listindex = _listlen - 2;
- this.style.left = -_listindex * _boxidwidth + "px";
- });
- } else {
- move(_sliderimglist, { left: -_boxidwidth * _listindex });
- }
-
- _dotindex = _dotindex == -1 ? _dotlen - 1 : _dotindex;
- moveBtn(_dotindex);
- _moveFun && _moveFun(_dotindex + 1);
- }
- sTime = new Date();
- }
-
- _btnli[1].onclick = function () {
-
- var nTime = new Date();
-
- if (nTime - sTime > 500) {
-
- _listindex++;
- _dotindex++;
-
- _dotindex = _dotindex % _dotlen;
-
- if (_listindex == _listlen - 1) {
- move(_sliderimglist, { left: -_boxidwidth * _listindex }, function () {
- _listindex = 1;
- this.style.left = -_listindex * _boxidwidth + "px";
- });
- } else {
- move(_sliderimglist, { left: -_boxidwidth * _listindex });
- }
-
- moveBtn(_dotindex);
- _moveFun && _moveFun(_dotindex + 1);
- }
- sTime = new Date();
- }
-
- timer = setInterval(auto, _speed);
- if (_dotindex == 0) {
- console.log(_dotindex + 1);
- }
-
- function auto() {
-
-
- _listindex = ++_listindex % _listlen;
- _dotindex++;
-
- _dotindex = _dotindex % _dotlen;
-
- if (_listindex == _listlen - 1) {
- move(_sliderimglist, { left: -_boxidwidth * _listindex }, function () {
- _listindex = 1;
- this.style.left = -_listindex * _boxidwidth + "px";
- });
- } else {
- move(_sliderimglist, { left: -_boxidwidth * _listindex });
- }
- moveBtn(_dotindex);
- _moveFun && _moveFun(_dotindex + 1);
- }
-
- for (var i = 0; i < _dotlen; i++) {
- _pointdot[i]._listindex = i;
-
- _pointdot[i].onclick = function () {
- _dotindex = this._listindex;
- _listindex = _dotindex + 1;
- move(_sliderimglist, { left: -_boxidwidth * _listindex });
- moveBtn(_dotindex);
-
- }
- }
-
- function moveBtn(_dotindex) {
- for (var j = 0; j < _dotlen; j++) {
- _pointdot[j].className = "";
- }
- _pointdot[_dotindex].className = "U_MD_UI_slider_On";
- }
- }
- function move(dom, json, callback) {
-
- clearInterval(dom.timer);
- dom.timer = setInterval(function () {
-
- var mark = true;
- for (var attr in json) {
- var cur = null;
- if (attr == "opacity") {
- cur = getStyle(dom, attr) * 100;
- } else {
- cur = parseInt(getStyle(dom, attr)) || 0;
- }
- var target = json[attr];
-
-
- var speed = (target - cur) * .2;
- speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
- if (cur != target) {
- if (attr == "opacity") {
- dom.style.filter = "alpha(opacity = " + (cur + speed) + ")";
- dom.style[attr] = (cur + speed) / 100;
- } else {
- dom.style[attr] = cur + speed + "px";
- }
-
- mark = false;
- }
-
-
- }
- if (mark) {
- clearInterval(dom.timer);
- callback && callback.call(dom);
- }
- }, 100 / 3);
- }
- function getStyle(dom, attr) {
- return dom.currentStyle ? dom.currentStyle[attr] : getComputedStyle(dom, null)[attr];
- }
|