All in Mobile前端

JavaScript移动端框架一 --- zepto

2018-11-24  本文已影响0人  AuglyXu

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点击事件

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

zepto中touch相关事件

touchstart
touchmove
touchend
注意点

zepto中touch事件的对象

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

zepto中touch事件的XY

 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 lang="en">
<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事件的点透问题

解决方案: fastclick框架


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事件


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框架

<div class="test">
    <ul class="swiper-wrapper">
        <li class="swiper-slide">slider1</li>
        <li class="swiper-slide">slider2</li>
        <li class="swiper-slide">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>
上一篇下一篇

猜你喜欢

热点阅读