最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js實現(xiàn)3D輪播圖效果

 更新時間:2021年10月29日 09:47:45   作者:Q青N年  
這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)3D輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了js實現(xiàn)3D輪播圖效果的具體代碼,供大家參考,具體內(nèi)容如下

主要有平移和旋轉(zhuǎn)構(gòu)成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 // 當(dāng)前播放圖片的索引
var flag = true //點擊防抖節(jié)流
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++) {
        // 當(dāng)前播放圖片索引值
        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)`
}
// 自動播放的函數(shù)
function autoPlay() {
    timer = setInterval(function () {
        if (current >= len - 1) {
            current = 0
        } else {
            current++
        }
        imgMove()
        autoLi()
    }, 3000)
}
// 點擊圖片進(jìn)行播放
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")
        }
    }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaScript中判斷函數(shù)、變量是否存在

    JavaScript中判斷函數(shù)、變量是否存在

    這篇文章主要介紹了JavaScript中判斷函數(shù)、變量是否存在,本文給出了多個判斷函數(shù)是否存在的方法,并分別給出代碼實例,需要的朋友可以參考下
    2015-06-06
  • BootStrap與validator 使用筆記(JAVA SpringMVC實現(xiàn))

    BootStrap與validator 使用筆記(JAVA SpringMVC實現(xiàn))

    這篇文章主要介紹了BootStrap與validator 使用筆記(JAVA SpringMVC實現(xiàn))的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • jQuery $.data()方法使用注意細(xì)節(jié)

    jQuery $.data()方法使用注意細(xì)節(jié)

    前段時間同事在群里對jQuery里的.data()方法接下來介紹jQuery $.data()方法使用注意細(xì)節(jié),需要了解的朋友可以參考下
    2012-12-12
  • EditPlus注冊碼生成器(js代碼實現(xiàn))

    EditPlus注冊碼生成器(js代碼實現(xiàn))

    在線的EditPlus注冊碼生成器,看了看還真是,在這里exe的注冊機(jī)病毒太多,純js的在線注冊機(jī)可就放心了,感興趣的各位可以參考下哈,希望可以幫助到你
    2013-03-03
  • 動態(tài)JavaScript所造成一些你不知道的危害

    動態(tài)JavaScript所造成一些你不知道的危害

    這篇文章給大家整理了動態(tài)JavaScript所造成的一些大家可能不知道的危害,文章介紹的很詳細(xì),有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-09-09
  • webpack 最佳配置指北(推薦)

    webpack 最佳配置指北(推薦)

    這篇文章主要介紹了webpack 最佳配置指北的相關(guān)資料,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2020-01-01
  • 詳解基于原生JS驗證表單組件xy-form

    詳解基于原生JS驗證表單組件xy-form

    這篇文章主要介紹了詳解基于原生JS驗證表單組件xy-form,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • JavaScript中的數(shù)組遍歷forEach()與map()方法以及兼容寫法介紹

    JavaScript中的數(shù)組遍歷forEach()與map()方法以及兼容寫法介紹

    下面小編就為大家?guī)硪黄狫avaScript中的數(shù)組遍歷forEach()與map()方法以及兼容寫法介紹。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • layui 監(jiān)聽表格復(fù)選框選中值的方法

    layui 監(jiān)聽表格復(fù)選框選中值的方法

    今天小編就為大家分享一篇layui 監(jiān)聽表格復(fù)選框選中值的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • 使用js獲取url中的參數(shù)并返回一個對象方式

    使用js獲取url中的參數(shù)并返回一個對象方式

    這篇文章主要介紹了使用js獲取url中的參數(shù)并返回一個對象方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01

最新評論

天气| 师宗县| 宜阳县| 东方市| 建阳市| 海丰县| 房产| 二连浩特市| 普兰店市| 怀宁县| 曲麻莱县| 西昌市| 吉水县| 嘉鱼县| 财经| 渝中区| 阿拉善右旗| 手游| 温州市| 旅游| 章丘市| 阜平县| 那坡县| 宁强县| 漳州市| 广饶县| 武宁县| 鹰潭市| 田阳县| 陆良县| 龙胜| 莒南县| 五莲县| 永定县| 郓城县| 哈巴河县| 苍溪县| 临湘市| 青田县| 轮台县| 阳春市|