JavaScript中怎样做3D轮播图,思路及方法是什么
Admin 2022-06-29 群英技术资讯 644 次浏览
本文实例为大家分享了js实现3D轮播图效果的具体代码,供大家参考,具体内容如下
主要有平移和旋转构成3d效果的轮播图,小白一只,不足之处还请大家多多指教,代码如下
css代码:
*{ padding: 0; margin: 0; } .box{ position: relative; width: 100%; height: 100%; top: 200px; margin: auto; } .warpper{ position: absolute; width: 100%; height: 100%; perspective: 800px; transform-style:preserve-3d; } .box .warpper img{ width: 300px; height: 200px; float: left; position: absolute; top: 0; left: 0; bottom: 0; right: 0; margin: auto; border-radius: 8px; transition: all 1s ease-in-out; } .btn{ position: relative; top: 50%; left: 50%; width: 1200px; transform: translate(-50%,-20px); } .btn .left,.btn .right{ height: 50px; width: 50px; font-size: 30px; text-align: center; line-height: 50px; background-color: black; color: white; border-radius: 15%; position: absolute; } .btn .left{ left: 0; } .btn .right{ right: 0; } .btn span:hover{ background-color: rgba(0,0,0,0.8); } .points{ position: absolute; left: 50%; bottom: 10px; transform: translate(-50%,200px); height: 14px; } .points li{ display: inline-block; list-style: none; width: 14px; height: 14px; border: 1px solid #000; border-radius: 50%; background-color: white; margin: 0 5px; } .points .current{ background-color: red; }
HTML代码:
<div class="box"> <div class="warpper"> <img src="./励志3.jpg" alt=""> <img src="./励志2.jpg" alt=""> <img src="./2f1d.jpg" alt=""> <img src="./aimg.jpg" alt=""> <img src="./peg.jpg" alt=""> </div> <div class="btn" id="btn"> <span class="left"> < </span> <span class="right"> > </span> </div> <ul class="points"> </ul> </div> <script src="swarp.js"></script>
JS代码:
var imgs = document.querySelectorAll("img") var btns = document.querySelectorAll("span") var ul = document.querySelector(".points") var lis = document.getElementsByTagName("li") var timer var current = 0 // 当前播放图片的索引 var flag = true //点击防抖节流 var len = imgs.length //图片长度 function loadFirst() { imgMove() bind() btnClick() getDot() showDot() autoPlay() } loadFirst() function imgMove() { var mlen = Math.floor(len / 2) for (var i = 0; i < mlen; i++) { // 当前播放图片索引值 var rimg = current + 1 + i var limg = len + current - 1 - i if (rimg >= len) { rimg -= len } if (limg >= len) { limg -= len } imgs[limg].style.transform = `translateX(${150 * (i + 1)}px) translateZ(${200 - i * 100}px) rotateY(-30deg)` imgs[rimg].style.transform = `translateX(${-150 * (i + 1)}px) translateZ(${200 - i * 100}px) rotateY(30deg)` } imgs[current].style.transform = `translateZ(300px)` } // 自动播放的函数 function autoPlay() { timer = setInterval(function () { if (current >= len - 1) { current = 0 } else { current++ } imgMove() autoLi() }, 3000) } // 点击图片进行播放 function bind() { for (let i = 0; i < imgs.length; i++) { imgs[i].onclick = function () { current = i imgMove() autoLi() } imgs[i].onmouseover = function () { clearInterval(timer) } imgs[i].onmouseout = function () { autoPlay() } } } // 点击左右按钮 function btnClick() { for (let i = 0; i < btns.length; i++) { btns[i].onclick = function () { // 防止狂点击 if (!flag) { return } flag = false if (i == 0) { // 上一张 if (current <= 0) { current = len - 1 } else { current-- } } else { //下一张 if (current >= len - 1) { current = 0 } else { current++ } } setTimeout(function () { flag = true }, 1000) imgMove() autoLi() } btns[i].onmouseenter = function () { clearInterval(timer) } btns[i].onmouseout = function () { autoPlay() } } } // 点 function getDot() { for (var i = 0; i < len; i++) { ul.innerHTML += `<li></li>` } lis[0].classList.add("current") } function showDot() { for (let i = 0; i < len; i++) { lis[i].onclick = function () { for (var j = 0; j < len; j++) { lis[j].classList.remove("current") } this.classList.add("current") current = i imgMove() } } } function autoLi() { for (var i = 0; i < len; i++) { if (i == current) { lis[i].classList.add("current") } else { lis[i].classList.remove("current") } } }
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要给大家分享jQuery链式调用的内容,下文有对jQuery链式调用的介绍以及实例,对新手学习和理解jQuery链式调用有一定的帮助,感兴趣的朋友就跟随小编来一起学习吧。
这篇文章主要为大家详细介绍了vue实现登录类型切换,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
目录写在前面javscript 中函数和对象的关系面向对象编程(OOP)继承多态封装函数编程编程(FP)闭包和高阶函数柯里化偏函数组合和管道函子写在最后写在前面浏览下文我觉得还是要有些基础的!下文涉及的知识点太多,基本上每一个拿出来都能写几篇文章,我在写文章的过程中只是做了简单的实现,我只是提供了一个思路,更多的细节还
这篇文章主要介绍了VUE的tab页面切换的四种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
1.使用fs复制文件使用fs对象的readFileSync,writeFileSync方法进行读写操作复制cp.jsfunctioncopyIt(from,to){fs.writeFileSync(to,fs.readFileSync(from));//fs.createReadStream(src).pipe(fs.createWriteStream(dst));
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008