重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
使用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); }