//运动曲线 $.extend(jQuery.easing, { easeIn: function (x, t, b, c, d) { //加速曲线 return c * (t /= d) * t + b; }, easeOut: function (x, t, b, c, d) { //减速曲线 return -c * (t /= d) * (t - 2) + b; }, easeBoth: function (x, t, b, c, d) { //加速减速曲线 if ((t /= d / 2) < 1) { return c / 2 * t * t + b; } return -c / 2 * ((--t) * (t - 2) - 1) + b; }, easeInStrong: function (x, t, b, c, d) { //加加速曲线 return c * (t /= d) * t * t * t + b; }, easeOutStrong: function (x, t, b, c, d) { //减减速曲线 return -c * ((t = t / d - 1) * t * t * t - 1) + b; }, easeBothStrong: function (x, t, b, c, d) { //加加速减减速曲线 if ((t /= d / 2) < 1) { return c / 2 * t * t * t * t + b; } return -c / 2 * ((t -= 2) * t * t * t - 2) + b; }, elasticIn: function (x, t, b, c, d, a, p) { //正弦衰减曲线(弹动渐入) if (t === 0) { return b; } if ((t /= d) == 1) { return b + c; } if (!p) { p = d * 0.3; } if (!a || a < Math.abs(c)) { a = c; var s = p / 4; } else { var s = p / (2 * Math.PI) * Math.asin(c / a); } return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b; }, elasticOut: function (x, t, b, c, d, a, p) { //正弦增强曲线(弹动渐出) if (t === 0) { return b; } if ((t /= d) == 1) { return b + c; } if (!p) { p = d * 0.3; } if (!a || a < Math.abs(c)) { a = c; var s = p / 4; } else { var s = p / (2 * Math.PI) * Math.asin(c / a); } return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b; }, elasticBoth: function (x, t, b, c, d, a, p) { if (t === 0) { return b; } if ((t /= d / 2) == 2) { return b + c; } if (!p) { p = d * (0.3 * 1.5); } if (!a || a < Math.abs(c)) { a = c; var s = p / 4; } else { var s = p / (2 * Math.PI) * Math.asin(c / a); } if (t < 1) { return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b; } return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * 0.5 + c + b; }, backIn: function (x, t, b, c, d, s) { //回退加速(回退渐入) if (typeof s == 'undefined') { s = 1.70158; } return c * (t /= d) * t * ((s + 1) * t - s) + b; }, backOut: function (x, t, b, c, d, s) { if (typeof s == 'undefined') { s = 3.70158; //回缩的距离 } return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b; }, backBoth: function (x, t, b, c, d, s) { if (typeof s == 'undefined') { s = 1.70158; } if ((t /= d / 2) < 1) { return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b; } return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b; }, bounceIn: function (x, t, b, c, d) { //弹球减振(弹球渐出) return c - this['bounceOut'](x, d - t, 0, c, d) + b; }, bounceOut: function (x, t, b, c, d) { if ((t /= d) < (1 / 2.75)) { return c * (7.5625 * t * t) + b; } else if (t < (2 / 2.75)) { return c * (7.5625 * (t -= (1.5 / 2.75)) * t + 0.75) + b; } else if (t < (2.5 / 2.75)) { return c * (7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375) + b; } return c * (7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375) + b; }, bounceBoth: function (x, t, b, c, d) { if (t < d / 2) { return this['bounceIn'](x, t * 2, 0, c, d) * 0.5 + b; } return this['bounceOut'](x, t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b; } }); /* 向右循环 5,6,7,8,9->4, 5,6,7,8,9->4 */ /* 小白点 5,6,7,8,9->4,3,2,1,0,1,2,3,4, 5,6,7,8,9->4,3,2,1,0,1,2,3,4 */ function autoMoveVideo(json) { if (!json) { return; } var oUl = json.parent.find('.noticeList'); var oOl = json.parent.find('.dots'); var oPrev = json.parent.find('.prev'); var oNext = json.parent.find('.next'); var oLiWidth = json.ew;//每一张图片的宽度 var oLiLenstart = oUl.find('li').length;//起始li的length var timer = null; var bok = false;//开关,防止点击过快 //一张图片不运动 if (oLiLenstart == 1) { return; } //ul内容复制一份 oUl.get(0).innerHTML += oUl.get(0).innerHTML; var oConLiLen = oUl.find('li').length;//复制之后li的个数 oUl.css({width: oConLiLen * oLiWidth, left: -oLiLenstart * oLiWidth}); //ul的宽度 oUl.find('li').css({width: oLiWidth}); //li的宽度 var current = oLiLenstart;//当前的值-5 function tab(n) { oUl.stop().animate({left: -n * oLiWidth}, 400, "easeBothStrong", function () { if (n == oConLiLen - 1) {//9--4 current = oLiLenstart - 1; } else if (n == 0) {//0-5 current = oLiLenstart; } oUl.css({left: -current * oLiWidth}); bok = false; }); oOl.find('li').eq(n % oLiLenstart).addClass('active').siblings('li').removeClass('active'); }; //自动播放 function auto() { clearInterval(timer); timer = setInterval(function () { current++; tab(current); }, 4000); }; auto(); //向右 oNext.on('click', function () { if (bok) { return; } bok = true; current++; tab(current); }); //向左 oPrev.on('click', function () { if (bok) { return; } bok = true; current--; tab(current); }); //整个区域鼠标移入停止自动播放,移出继续 json.parent.on({ mouseenter: function () { clearInterval(timer); }, mouseleave: function () { auto(); } }); //小白点运动 //oOl.css({marginLeft:-(oOl.width() / 2)}); oOl.find('li').each(function (index, ele) { if (index == 0) { $(ele).addClass('active'); } }) oOl.find('li').on('click', function () { if (current >= oLiLenstart) {//开始current为5,非点击最后一个运动 current = $(this).index() + oLiLenstart; tab(current); } else {//点击最后一个之后,9--4,小于oLiLenstart,再点击其他的小白点,就为0,1,2,3,4 current = $(this).index(); tab(current); } }); };