溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

javascript中Zepto模塊和swiper框架的使用

發布時間:2020-05-22 15:51:11 來源:億速云 閱讀:399 作者:鴿子 欄目:web開發

Zepto

github地址: https://github.com/madrobby/zepto

官方地址: http://zeptojs.com/

中文版地址: http://www.css88.com/doc/zeptojs_api/

Zepto就是jQuery的移動端版本, 可以看做是一個輕量級的jQuery

注意點

Zepto的設計目的是提供 jQuery 的類似的API,但并不是100%覆蓋 jQuery

jQuery的底層是通過DOM來實現效果的, zepto.js 是用css3 來實現的;

官網下載的zepto,就已經包含了官網所述的默認模塊了

github上下載的zepto模塊需要自己導入

<!--&lt;!&ndash;引入核心模塊;包含許多jQuery中常見方法&ndash;&gt;-->
<script src="js/zepto.js"></script>
<!--&lt;!&ndash;引入zepto事件模塊, 包含了常見的事件方法on/off/click ...&ndash;&gt;-->
<script src="js/event.js"></script>
<!--&lt;!&ndash;引入zepto動畫模塊,&ndash;&gt;-->
<script src="js/fx.js"></script>
<!--&lt;!&ndash;引入zepto動畫模塊的常用方法,&ndash;&gt;-->
<script src="js/fx_methods.js"></script>

Zepto點擊事件

由于移動端的手勢多而且分單擊雙擊,所以移動端的click事件有300ms左右的延遲,所以移動端的點擊事件用tab

$("div").tap(function(){
        ......
})

zepto中touch相關事件

touchstart

touchstart是手指剛觸摸到元素時觸發的事件

touchmove

touchmove是手指移動時觸發的事件

touchend

當手指離開指定元素時觸發

注意點

添加以上三個事件的時候用addEventListener

以上三個事件對pc端無效

zepto中touch事件的對象

touches:

保存了屏幕上所有手指的列表

targetTouches

保存了元素上所有手指的列表

changedTouches

包含了剛剛與屏幕接觸的手指或者剛剛離開屏幕的手指

TouchEvent {isTrusted: true, touches: TouchList, targetTouches: TouchList, changedTouches: TouchList}

zepto中touch事件的XY

client: 可視區域

page: 內容

var oDiv = document.querySelector("div");
    /*
    1.注意點:
    無論是event對象中的touches/targetTouches/changedTouches都是一個偽數組
    所以我們想要獲取手指位置的時候, 需要從偽數組中取出需要獲取的那個手指對象
     */
    oDiv.addEventListener("touchstart", function (event) {
        // 獲取手指距離屏幕左上角的位置
        // console.log(event.targetTouches[0].screenX);
        // console.log(event.targetTouches[0].screenY);
        // 獲取相對于當前視口的距離
        console.log("clientX", event.targetTouches[0].clientX);
        console.log("clientY", event.targetTouches[0].clientY);
        /*
        clientX 10
        clientY 8
        pageX 1156
        pageY 8
         */
        // 獲取相對于當前頁面內容的距離
        console.log("pageX", event.targetTouches[0].pageX);
        console.log("pageY", event.targetTouches[0].pageY);
    });

簡單案例: 物塊拖拽

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>08-touch事件練習</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        div{
            width: 100px;
            height: 100px;
            background: red;
        }
    </style>
</head>
<body>
<div></div>
<script>
    var oDiv = document.querySelector("div");
    var startX, startY, moveX, moveY;
    // 1.監聽手指按下事件
    oDiv.addEventListener("touchstart", function (event) {
        // 記錄手指按下的位置
        startX = event.targetTouches[0].clientX;
        startY = event.targetTouches[0].clientY;
    });
    // 2.監聽手指一動事件
    oDiv.addEventListener("touchmove", function (event) {
        // 記錄手指移動之后的位置
        moveX = event.targetTouches[0].clientX;
        moveY = event.targetTouches[0].clientY;
        // 計算兩個位置之間相差的距離, 相差的距離就是需要移動的距離
        var offsetX = moveX - startX;
        var offsetY = moveY- startY;
        // 讓div移動起來
        oDiv.style.transform = "translate("+offsetX+"px,"+offsetY+"px)";
    });
</script>
</body>
</html>

zepto中touch事件的點透問題

如果兩個元素是重疊的(一個在另一個上面), 并且上面一個監聽了touchstart事件, 下面一個監聽了click事件,那么如果上面一個元素觸發touchstart事件之后消失了, 那么就會出現點透問題

解決方案: fastclick框架

注: 框架必須在前面調用, 并且所有的元素都被注冊了fastclick中的事件, 以后所有的click事件都是fastclick的click事件

zepto中的swipe事件

手指在元素上滑動觸發的事件

$("div").swipeLeft(function () {
        // console.log("左滑動");
        $(this).animate({left: "0px"}, 1000);
    });
    $("div").swipeRight(function () {
        // console.log("右滑動");
        $(this).animate({left: "100px"}, 1000);
    });
    $("div").swipeUp(function () {
        // console.log("上滑動");
        $(this).animate({top: "0px"}, 1000);
    });
    $("div").swipeDown(function () {
        // console.log("下滑動");
        $(this).animate({top: "100px"}, 1000);

移動端hover事件

移動端只能使用mouseenter和mouseleave來監聽移入和移出

iscroll框架

當我們做移動端側邊欄的時候, 自己實現可能會出現bug也可能比較麻煩,這時候可以用iscroll框架

github地址: https://github.com/cubiq/iscroll

實現步驟

按照框架的需要搭建一個三層的結構

引入iscroll.js框架

創建一個IScroll對象, 把需要滾動的容器給它

var myScroll = new IScroll('.test', {
        mouseWheel: true, // 開啟鼠標滾動滾動
        scrollbars: true // 開啟滾動條, 但是容器必須是定位的, 否則滾動條的位置不對
    });
    // 相關常用的回調函數
    myScroll.on("beforeScrollStart", function () {
        console.log("手指觸摸, 還沒有開始滾動");
    });
    myScroll.on("scrollStart", function () {
        console.log("開始滾動");
    });
    myScroll.on("scrollEnd", function () {
        console.log("結束滾動");
    });

swiper框架

Swiper是純javascript打造的滑動特效插件,面向手機、平板電腦等移動終端。

Swiper能實現觸屏焦點圖、觸屏Tab切換、觸屏多圖切換等常用效果。

Swiper開源、免費、穩定、使用簡單、功能強大,是架構移動終端網站的重要選擇!

如何使用:

引入對應的css和js文件

按照框架的需求搭建三層結構

創建一個Swiper對象, 將容器元素傳遞給它,第二個參數接收一個對象

<div>
    <ul>
        <li>slider1</li>
        <li>slider2</li>
        <li>slider3</li>
    </ul>
</div>
<script>
    var mySwiper = new Swiper('.test',{
        loop: true,
        autoplay: true,
        // 如果需要分頁器
        pagination: {
            el: '.swiper-pagination',
        },
        // 如果需要前進后退按鈕
        navigation: {
            nextEl: '.swiper-button-next',
            prevEl: '.swiper-button-prev',
        },
        // 如果需要滾動條
        scrollbar: {
            el: '.swiper-scrollbar',
        },);
</script>

以上就是JS  Zepto 移動端的 jQuery的詳細內容,更多請關注億速云其它相關文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女