文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么用js实现3D轮播图效果

2023-06-25 11:55

关注

本篇内容主要讲解“怎么用js实现3D轮播图效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用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 timervar 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")        }    }}

到此,相信大家对“怎么用js实现3D轮播图效果”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯