JavaScript中怎样做3D轮播图,思路及方法是什么
Admin 2022-06-29 群英技术资讯 856 次浏览
本文实例为大家分享了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如何实现元素延迟3秒再消失的效果?延迟消失的效果其实在很多场景下都能使用,例如弹窗广告。下文给大家分享是一个点击按钮,元素3秒后再消失的示例,代码有一定的参考价值,感兴趣的朋友就继续往下看吧。
在Node.js中使用在Typescript中使用在Deno中使用3.APIParamMap:具有字符串键的对象urlcat:构建完整的 URLquery:构建查询字符串subst:替换路径参数join:使用
目前Nodejs开发中有很多痛点,其中有一个是修改完代码以后需要我们重启服务才能看到效果。这样一次次的杀进程、重启,杀进程、重启很让人头大。程序员是最痛恨重复工作的物种,之前有了解过的同学可能知道 forever 。 forever 可以帮我们解决上面的问题,通过对资源变化的检测做到变化后自动重启。开发阶段我们使用 nodefile.js 来启动另外由于Nodejs的单线程,任何异常都会导致整个
在react中的三大属性有state、props、refs,这篇文章给大家分享的是有关react的state属性的内容,小编觉得挺实用的,因此分享给大家做个参考,接下来一起跟随小编看看吧。
在数组的使用中我们通常会有数组的过滤的需求,比如值在某个范围内的数字,用来组成一个新的数组,这就用到了数组的过滤,下面这篇文章主要给大家介绍了关于JS数组中filter方法使用的相关资料,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008