検索

モバイル用 JS Zepto jQuery

May 22, 2020 am 10:25 AM
jszepto

モバイル用 JS Zepto jQuery

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模块需要自己导入

<!--<!&ndash;引入核心模块;包含许多jQuery中常见方法&ndash;>-->
<script src="js/zepto.js"></script>
<!--<!&ndash;引入zepto事件模块, 包含了常见的事件方法on/off/click ...&ndash;>-->
<script src="js/event.js"></script>
<!--<!&ndash;引入zepto动画模块,&ndash;>-->
<script src="js/fx.js"></script>
<!--<!&ndash;引入zepto动画模块的常用方法,&ndash;>-->
<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(&#39;.test&#39;, {
        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(&#39;.test&#39;,{
        loop: true,
        autoplay: true,
        // 如果需要分页器
        pagination: {
            el: &#39;.swiper-pagination&#39;,
        },
        // 如果需要前进后退按钮
        navigation: {
            nextEl: &#39;.swiper-button-next&#39;,
            prevEl: &#39;.swiper-button-prev&#39;,
        },
        // 如果需要滚动条
        scrollbar: {
            el: &#39;.swiper-scrollbar&#39;,
        },);
</script>

推荐教程:《JS教程

以上がモバイル用 JS Zepto jQueryの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はjianshuで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
JavaScriptエンジン:実装の比較JavaScriptエンジン:実装の比較Apr 13, 2025 am 12:05 AM

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

ブラウザを超えて:現実世界のJavaScriptブラウザを超えて:現実世界のJavaScriptApr 12, 2025 am 12:06 AM

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)Apr 11, 2025 am 08:23 AM

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合)Apr 11, 2025 am 08:22 AM

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScript:Web言語の汎用性の調査JavaScript:Web言語の汎用性の調査Apr 11, 2025 am 12:01 AM

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの進化:現在の傾向と将来の見通しJavaScriptの進化:現在の傾向と将来の見通しApr 10, 2025 am 09:33 AM

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

javascriptの分解:それが何をするのか、なぜそれが重要なのかjavascriptの分解:それが何をするのか、なぜそれが重要なのかApr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

pythonまたはjavascriptの方がいいですか?pythonまたはjavascriptの方がいいですか?Apr 06, 2025 am 12:14 AM

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。