検索
ホームページウェブフロントエンドH5 チュートリアルH5 はカルーセルのタッチ スクリーン バージョンを実装します

今回は H5 のカルーセルのタッチ スクリーン バージョンをお届けします。 H5 のカルーセルのタッチ スクリーン バージョンを実装するための 注意事項 は何ですか。実際のケースを見てみましょう。

私はフロントエンドの初心者ですが、携帯電話でのタッチスクリーンカルーセルの実装プロセスを共有したいと思います。一般的な機能は次のとおりです:

1. 円形スライドをサポートします

2.任意に設定でき、画面と同じ幅である必要はありません

3. ページは垂直にスクロールできます

4. 要素の切り替えを監視するためにコールバックを設定できます

5.サードパーティ ライブラリ

原則

1. サブ要素 .item の幅が 375px であると仮定し、

絶対配置すべての子要素を親要素内に配置します

2 の幅を設定します。親要素.carousel を子要素.item の幅と同じ 375px に設定します

3. 親要素.carousel にタッチイベントを追加します: touchstart、touchmove、touchend

4. 指が押されると、初期位置 (clientX) が保存されます。

5. 指がスライドするとき、スライドの方向はスライド距離によって判断されます:

① 指が左にスライドすると、現在の要素と現在の要素が移動します。右側の要素も同時に移動します

② 指を右にスライドすると、現在の要素とその左側の要素が同時に移動します

6. 指を離すと、スライド距離を使用して次のページに切り替えるかどうかを決定します

① 移動距離が子要素の幅の50%を超えない場合、現在の要素を切り替えることなく、現在のページを元の位置にスクロールします。

②移動距離が子要素の幅の50%を超えた場合、現在の要素を次の要素に切り替えます。

③現在の要素のtransform属性をtranslate3d(0px, 0px, 0px)に設定し、z-index属性を+1に設定します

④次の子要素のtransform属性をtranslate3d(375px, 0px, 0px)に設定します。そして、z-index属性を+1に設定します

⑤前の子要素のtransform属性をtranslate3d(-375px, 0px, 0px)に設定し、z-index属性を+1に設定します

⑥他のすべての子要素のz-を設定します要素のインデックス属性はデフォルト値に設定されます

7。最初の子要素の前の要素が最後の要素であり、最後の要素の次の要素が最初の要素です。このステップは循環リンク リストによって実装されます。

移動時には親要素.carouselではなく、子要素.itemのtransform属性が設定されます

実装手順

html&css

//html
<p>  
  </p><p>    
    </p><h3 id="item">item-1</h3>  
    
  <p>    
    </p><h3 id="item">item-2</h3>  
    
  <p>    
    </p><h3 id="item">item-3</h3>
   
  <p>  
    </p><h3 id="item">item-4</h3>  
    
  <p>    
    </p><h3 id="item">item-5</h3>  
  
//css
.carousel{
  height: 50%;
  position: relative;
  overflow: hidden;
}
.item {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
}
js

初期状態を設定します

まず2つ実装します-way リンク リスト。カルーセル コンポーネント内の要素を維持するために使用します。

function Node(data) {
    this.data = data;
    this.prev = null;
    this.next = null;
    this.index = -1;
}
//双向循环列表
function LinkList() {
    var _nodes = [];
    this.head = null;
    this.last = null;
    if (typeof this.append !== "function") {
        LinkList.prototype.append = function (node) {
            if (this.head == null) {
                this.head = node;
                this.last = this.head;
            }
            else {
                this.head.prev = node;
                this.last.next = node;
                node.prev = this.last;
                node.next = this.head;
                this.last = node;
            }
            node.index = _nodes.length; //务必在push前设置node.index
            _nodes.push(node);
        }
    }
}
リンク リストを取得したら、リンク リストのインスタンスを作成し、リンク リストに子要素を追加し、いくつかの初期状態を設定します

var _container = document.querySelector("." + containerClass);
var _items = document.querySelectorAll("." + itemClass);
var list = loop ? new LinkList() : new SingleList();
for(var i = 0; i <p style="text-align: left;">タッチ イベントをバインドします<strong></strong></p><p style="text-align: left;">touchstart イベント<strong></strong></p>指が押して初期状態を保存 Position<p style="text-align: left;"></p><pre class="brush:php;toolbar:false">_container.addEventListener("touchstart", function(e) {
  // e.preventDefault();//取消此行代码的注释会在该元素内阻止页面纵向滚动
  var touch = e.touches[0];
  startX = touch.clientX;   //保存手指按下时的位置
  startY = touch.clientY;
  _container.style.webkitTransition = ""; //取消动画效果
  startT = new Date().getTime();          //记录手指按下的开始时间
  isMove = false;
  transitionItems(_prev, false);             //取消之前元素的过渡
  transitionItems(_current, false);          //取消当前元素的过渡
}, false);

touchmoveイベント

画面上を指がスライドし、指と一緒にページが移動

_container.addEventListener("touchmove", function(e) {
    // e.preventDefault();//取消此行代码的注释会在该元素内阻止页面纵向滚动
    var touch = e.touches[0];
    var deltaX = touch.clientX - startX;  //计算手指在X方向滑动的距离
    var deltaY = touch.clientY - startY;  //计算手指在Y方向滑动的距离
    //如果X方向上的位移大于Y方向,则认为是左右滑动
    if (Math.abs(deltaX) > Math.abs(deltaY)){
        translate = deltaX > _itemWidth ? _itemWidth : deltaX;
        translate = deltaX <p style="text-align: left;">touchendイベント<strong></strong></p>指が画面から離れたときに、どのページに移動したかを計算最終的には<p style="text-align: left;"></p><pre class="brush:php;toolbar:false">_container.addEventListener("touchend",function(e) {
    // e.preventDefault();//取消此行代码的注释会在该元素内阻止页面纵向滚动
    //是否会滚
    var isRollback = false;
    //计算手指在屏幕上停留的时间
    var deltaT = new Date().getTime() - startT;
    if (isMove) { //发生了左右滑动
        //如果停留时间小于300ms,则认为是快速滑动,无论滑动距离是多少,都停留到下一页
        if(deltaT <p style="text-align: left;">カルーセルライブラリ<strong></strong>になる必要があります。 </p>使いやすいように、実装プロセス全体をライブラリにカプセル化し、prev()、next()メソッドを追加しました。使い方は非常に簡単です。 <pre class="brush:php;toolbar:false"><script></script>
CreateCarousel("carousel", "item", true)
  .bindTouchEvent()
  .setItemChangedHandler(onPageChanged);
//参数"carousel"为容器的类名
//参数"item"为子元素的类名
//第三个参数设置是否需要循环播放,true为循环播放

この記事の事例を読んだ後は、その方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事にも注目してください。

推奨読書:

zeptoはモバイルでのシームレスな上下スクロールを実現


H5フォーム検証の方法とは何ですか

以上がH5 はカルーセルのタッチ スクリーン バージョンを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
H5はHTML5の速記ですか?詳細の調査H5はHTML5の速記ですか?詳細の調査Apr 14, 2025 am 12:05 AM

H5はHTML5の略語だけでなく、より広い最新のWeb開発テクノロジーエコシステムを表しています。1。H5にはHTML5、CSS3、JavaScript、および関連するAPIおよびテクノロジーが含まれます。 2.より豊かでインタラクティブでスムーズなユーザーエクスペリエンスを提供し、複数のデバイスでシームレスに実行できます。 3. H5テクノロジースタックを使用して、レスポンシブWebページと複雑なインタラクティブ機能を作成できます。

H5およびHTML5:Web開発で一般的に使用される用語H5およびHTML5:Web開発で一般的に使用される用語Apr 13, 2025 am 12:01 AM

H5とHTML5は、同じこと、つまりHTML5を参照します。 HTML5はHTMLの5番目のバージョンであり、セマンティックタグ、マルチメディアサポート、キャンバスとグラフィックス、オフラインストレージ、ローカルストレージなどの新しい機能をもたらし、Webページの表現力と互換性を向上させます。

H5は何を参照していますか?コンテキストの探索H5は何を参照していますか?コンテキストの探索Apr 12, 2025 am 12:03 AM

H5ReferStoHtml5、apivotaltechnologyinwebdevelopment.1)html5introduceSnewelementsandapisforrich、dynamicwebapplications.2)Itupp ortsmultimediawithoutplugins、endancingurexperiencecrossdevices.3)semanticelementsimprovecontentstructurendseo.4)H5'srespo

H5:ツール、フレームワーク、およびベストプラクティスH5:ツール、フレームワーク、およびベストプラクティスApr 11, 2025 am 12:11 AM

H5開発で習得する必要があるツールとフレームワークには、Vue.JS、React、Webpackが含まれます。 1.Vue.jsは、ユーザーインターフェイスの構築に適しており、コンポーネント開発をサポートします。 2.複雑なアプリケーションに適した仮想DOMを介したページレンダリングを最適化します。 3.Webpackは、モジュールのパッケージングに使用され、リソースの読み込みを最適化します。

HTML5の遺産:現在のH5の理解HTML5の遺産:現在のH5の理解Apr 10, 2025 am 09:28 AM

html5hassificlytransformdedwebdeveverment byintroducingsingingelements、endincemultimediasupport、およびrequrovingperformance.1)itmadewebsitesmoreaccessibleandseo-frendlywithsemantelementslike、and.2)

H5コード:アクセシビリティとセマンティックHTMLH5コード:アクセシビリティとセマンティックHTMLApr 09, 2025 am 12:05 AM

H5は、セマンティック要素とARIA属性を介して、WebページのアクセシビリティとSEO効果を改善します。 1.使用などを使用して、コンテンツ構造を整理し、SEOを改善します。 2。ARIA-LabelなどのARIA属性はアクセシビリティを強化し、支援技術ユーザーはWebページをスムーズに使用できます。

H5はHTML5と同じですか?H5はHTML5と同じですか?Apr 08, 2025 am 12:16 AM

「H5」と「HTML5」はほとんどの場合同じですが、特定の特定のシナリオでは異なる意味を持つ可能性があります。 1。「HTML5」は、新しいタグとAPIを含むW3C定義標準です。 2。 "H5"は通常、HTML5の略語ですが、モバイル開発では、HTML5に基づくフレームワークを参照する場合があります。これらの違いを理解することは、プロジェクトでこれらの用語を正確に使用するのに役立ちます。

H5の機能は何ですか?H5の機能は何ですか?Apr 07, 2025 am 12:10 AM

H5、またはHTML5は、HTMLの5番目のバージョンです。開発者により強力なツールセットを提供し、複雑なWebアプリケーションを簡単に作成できるようにします。 H5のコア関数には、次のものが含まれます。1)Webページにグラフィックとアニメーションを描画できる要素。 2)Webページ構造をSEOの最適化を明確かつ助長させるなどのセマンティックタグなど。 3)Geolocationapiなどの新しいAPIは、ロケーションベースのサービスをサポートします。 4)互換性テストとポリフィルライブラリを通じて、クロスブラウザーの互換性を確保する必要があります。

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ヘンタイを無料で生成します。

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境