本文实例为大家分享了js轮播图之旋转木马效果的具体代码,供大家参考,具体内容如下
思路:给定一个数组,储存每张图片的位置,旋转将位置进行替换
左旋转:将数组第一个数据删除,然后添加到数组的最后
右旋转:将数组最后一个数据删除,然后添加到数组的开头
先附上效果图,再来实现
接下来就是最主要的,封装原生js动画函数
//封装函数获取任意一个元素的任意属性的值(兼容ie8)
function getStyle(element, attr) {
return window.getComputedStyle ? window.getComputedStyle(element, null)[attr] : element.currentStyle[attr];
}
//封装js变速动画
function animate(element, json, fn) {
//每次启动定时器之前先停止
clearInterval(element.tmId);
element.tmId = setInterval(function () {
var flag = true;
//遍历对象中的每个属性
for (var attr in json) {
//执行透明度动画
if (attr == "opacity") {
//获取当前元素的属性值
var current = parseInt(getStyle(element, attr)*100);
//获取目标值
var target = json[attr]*100;
//移动的步数
var step = (target - current) / 10;
step = step > 0 ? Math.ceil(step) : Math.floor(step);
//移动后的值
current += step;
element.style[attr] = current / 100;
} else if (attr == "zIndex") {
//改变层级属性
element.style[attr] = json[attr];
} else {
//获取当前元素的属性值
var current = parseInt(getStyle(element, attr));
//获取目标值
var target = json[attr];
//移动的步数
var step = (target - current) / 10;
step = step > 0 ? Math.ceil(step) : Math.floor(step);
//移动后的值
current += step;
element.style[attr] = current + "px";
if (current != target) {
flag = false;
}
}
}
if (flag) {
clearInterval(element.tmId);
//如果有回调函数就调用
if (fn) fn();
}
// 测试
// console.log("目标:" + target + "/当前:" + current + "/步数:" + step);
}, 20);
}
封装完函数,剩下的直接调用就可以了,最后附上旋转木马完整代码?
旋转木马轮播图
精彩专题分享:jQuery图片轮播 Javascript图片轮播 Bootstrap图片轮播
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。



