成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

移動(dòng)端橫向滑屏之輪播圖

Hydrogen / 3037人閱讀

摘要:圖片描述移動(dòng)端的輪播圖可以有很多方式實(shí)現(xiàn),最常見的可以使用定位手指事件。四手指移入移出開關(guān)定時(shí)器

圖片描述

移動(dòng)端的輪播圖可以有很多方式實(shí)現(xiàn),最常見的可以使用定位 + 手指事件。但是我這里介紹的是 CSS3 中的 2d 變換和手指事件,因?yàn)樽儞Q屬性的代碼更加簡潔優(yōu)雅

一. 移動(dòng)端的準(zhǔn)備工作
* {
    padding: 0;
    margin: 0;
}
img {
    display: block;
}
li {
    list-style: none;
}
input {
    outline: none;
}
a {
  text-decoration: none;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
html,body {
    height: 100%;
    overflow: hidden;
}

CSS 中的初始化

       // 阻止瀏覽器的默認(rèn)行為
        document.addEventListener("touchstart", function(event) {
            event.preventDefault()
        });
        
        // rem 適配
        (function() {
            var styleNode = document.createElement("style")
            var width = document.documentElement.clientWidth
            styleNode.innerHTML = "html {font-size: "+ width/16 +"px;}"
            document.head.appendChild(styleNode)
        })();
        
        // 點(diǎn)透
        (function() {
            var aNodes = document.querySelectorAll("a")
            for (var i = 0; i < aNodes.length; i++) {
                aNodes[i].addEventListener("touchstart", function() {
                    window.location.href = this.href
                })
            }
        })();

這里移動(dòng)端寫頁面之前跟 PC 端有些不同,設(shè)計(jì)師給我們的像素值可能與移動(dòng)設(shè)備不匹配,首先要進(jìn)行rem 適配,還有阻止瀏覽器的默認(rèn)行為,通常情況下,還有處理點(diǎn)透。

二. 基本手指事件
        
        
var list = document.querySelector(".list") var li = document list.innerHTML += list.innerHTML var startX = 0 var eleX = 0 var translateX = 0 var now = 0 list.addEventListener("touchstart", function(event) { list.style.transition = "none" if (now == 0){ now = 5 } else if (now == 9) { now = 4 } transformCss(list,"translateX",-now*document.documentElement.clientWidth) var touch = event.changedTouches[0] startX = touch.clientX eleX = transformCss(list, "translateX") }) list.addEventListener("touchmove", function(event) { var touch = event.changedTouches[0] var endX = touch.clientX var disX = endX - startX translateX = disX + eleX // 清除過渡 list.style.transition = "none" list.style.transform = transformCss(list,"translateX",translateX) }) list.addEventListener("touchend", function() { var left = transformCss(list, "translateX") now = Math.round(-left / document.documentElement.clientWidth) translateX = -now * document.documentElement.clientWidth list.style.transition = "0.5s" transformCss(list,"translateX",translateX) })

這里設(shè)計(jì)的無縫輪播很巧妙,把圖片的 li 標(biāo)簽復(fù)制了一份,也就是總共 10 張圖,當(dāng)滑到 1 圖時(shí),我們在點(diǎn)擊后迅速切到第 6 張,當(dāng)滑到最后一張圖時(shí),切換到第 5 張。

三. 自動(dòng)輪播 + 小圓點(diǎn)邏輯
    var autoSlide = function() {
        setInterval(function() {
            if(now == 9) {
                now = 4
            }
            list.style.transition = "none"
            transformCss(list, "translateX", -now * document.documentElement.clientWidth)

            // 設(shè)置一個(gè)延時(shí),讓過渡生效
            setTimeout(function() {
                now++
                list.style.transition = "0.5s"
                transformCss(list, "translateX", -now * document.documentElement.clientWidth)
                for(var i = 0; i < spans.length; i++) {
                    spans[i].classList.remove("active")
                }
                spans[now % 5].classList.add("active")
            }, 20)

        }, 1000)
    }

這里自動(dòng)輪播有幾個(gè)邏輯

輪播的同時(shí),小圓點(diǎn)跟著動(dòng),排他思想,先移走所有小圓點(diǎn)的類名,再多帶帶添加

輪播到 10 張時(shí),快速切換到第 5 張圖,由于所有的滑動(dòng)都是采用過渡,快速切換采用的清除過渡,所以要設(shè)置一個(gè)短暫的延時(shí),讓清除過渡不被覆蓋。

四. 手指移入移出開關(guān)定時(shí)器

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/99587.html

相關(guān)文章

  • vue組件之輪播圖實(shí)現(xiàn)

    摘要:預(yù)覽地址圖片的輪播假設(shè)需要輪播三張圖片,以前的思路就如圖所示,添加兩個(gè)節(jié)點(diǎn)。通過索引的切換實(shí)現(xiàn)組件的無縫輪播。這樣子父組件就可以通過鉤子和來實(shí)時(shí)通知子組件,從而控制內(nèi)容的展示。這個(gè)判斷只需讓子組件來做就行了。 預(yù)覽地址 圖片的輪播 showImg(https://segmentfault.com/img/remote/1460000018606875?w=1440&h=900); 假設(shè)...

    xuweijian 評論0 收藏0
  • Transition 實(shí)現(xiàn)輪播圖

    摘要:關(guān)于輪播圖的實(shí)現(xiàn)算是前端的一個(gè)基礎(chǔ),其實(shí)實(shí)現(xiàn)起來是很簡單,這里把實(shí)現(xiàn)的基本思路總結(jié)一下。推薦使用,它是一款開源的移動(dòng)端腳本框架,它可以完美的實(shí)現(xiàn)在移端開發(fā)的大多數(shù)事件,如點(diǎn)擊滑動(dòng)拖動(dòng)多點(diǎn)觸控等事件。 關(guān)于輪播圖的實(shí)現(xiàn)算是前端的一個(gè)基礎(chǔ),其實(shí)實(shí)現(xiàn)起來是很簡單,這里把實(shí)現(xiàn)的基本思路總結(jié)一下。輪播圖的實(shí)現(xiàn)方案有很多種方式,可以用純js來實(shí)現(xiàn),也可用css來實(shí)現(xiàn),我們這里主要用到了css3的過...

    pf_miles 評論0 收藏0
  • 面試官(6): 寫過『通用前組件』嗎?

    摘要:很久沒上掘金發(fā)現(xiàn)草稿箱里存了好幾篇沒發(fā)的文章最近梳理下發(fā)出來往期面試官系列如何實(shí)現(xiàn)深克隆面試官系列的實(shí)現(xiàn)面試官系列前端路由的實(shí)現(xiàn)面試官系列基于數(shù)據(jù)劫持的雙向綁定優(yōu)勢所在面試官系列你為什么使用前端框架前言設(shè)計(jì)前端組件是最能考驗(yàn)開發(fā)者基本功的測 很久沒上掘金,發(fā)現(xiàn)草稿箱里存了好幾篇沒發(fā)的文章,最近梳理下發(fā)出來 往期 面試官系列(1): 如何實(shí)現(xiàn)深克隆 面試官系列(2): Event Bus...

    waltr 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<