H5 を使用してタッチ スクリーン バージョンのカルーセルを実装する方法の詳細な紹介
この記事では、H5 を使用してタッチ スクリーン カルーセルを実装する方法を主に紹介します。編集者が非常に優れていると考えたので、参考として共有します。エディターをフォローして見てみましょう
フロントエンドの初心者ですが、携帯電話でのタッチ スクリーン バージョンの実装プロセスを共有します。
1. サポート。円形スライド
2. 幅は画面と同じ幅に設定できます
4. 要素の切り替えをリッスンするようにコールバックを設定できます
5.サードパーティのライブラリを使用しない
1. 子要素を想定します。 .item のwidth を使用して、すべての子要素を親要素内に配置します 2。親要素 .carousel の幅を子要素 .item
の幅と同じ 375px にします。親要素 .carousel はタッチイベントを追加します: touchstart、touchmove、touchend4. 、初期位置 (clientX) が保存されます 5. 指をスライドさせると、スライド方向はスライド距離によって決まります:
①指を左にスワイプして、現在の要素と現在の要素の右側の要素を移動します。同時に
②指を右にスワイプすると、現在の要素と現在の要素の左側の要素が同時に移動します6. 指を離したときのスライド距離を使用して、 に切り替えるかどうかを決定します。次のページ
①移動距離が子要素の幅の50%を超えない場合、現在の要素は切り替えられずに、現在のページが初期位置にロールバックされます。
②移動距離が子要素の幅の50%を超えた場合、現在の要素を次の要素に切り替えます。
③現在の要素のtrans
form
属性をtranslate3d(0px, 0px, 0px)に設定し、
z-index属性+1を設定します
④次の子要素のtransform属性をtranslate3dに設定します(375px, 0px, 0px)、z-index属性を+1に設定
⑤前の子要素のtransform属性をtranslate3d(-375px, 0px, 0px)に設定し、z-index属性を+1 ⑥ 他のすべてのサブ要素の z-index 属性をデフォルト値に設定します7. 最初のサブ要素の前の要素が最後の要素であり、最後の要素の次の要素が最初の要素になります。これは循環リンク リストを通じて行われます。 移動時には、親要素.carouselではなく、子要素.itemのtransform属性が設定されます
実装手順
html&css
//html <p class="carousel" ontouchstart="" > <p class="item" style="background: #3b76c0" > <h3 >item-1</h3> </p> <p class="item" style="background: #58c03b;"> <h3>item-2</h3> </p> <p class="item" style="background: #c03b25;"> <h3>item-3</h3> </p> <p class="item" style="background: #e0a718;"> <h3>item-4</h3> </p> <p class="item" style="background: #c03eac;"> <h3>item-5</h3> </p> </p>
//css .carousel{ height: 50%; position: relative; overflow: hidden; } .item { position: absolute; left: 0; top: 0; width: 100%; height: 100%; }
イニシャルを設定するstate
まず、カルーセルコンポーネント内の要素を維持するために二重リンクリストを実装します。
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 < _items.length; i++) { list.append(new Node(_items[i])); } var _prev = null; //保存之前显示的元素 var _current = list.head; //保存当前显示的元素,默认为第一个元素 var _normalZIndex = _current.data.style.zIndex; //未显示元素的z-index值 var _activeZIndex = _normalZIndex + 1; //当前显示元素的z-index值 var _itemWidth = _current.data.offsetWidth; //子元素宽度 positionItems(); //初始化元素位置 zindexItems(_current, _activeZIndex); //将当前元素及其左右元素的z-index加1
touchstart イベント
指を押すと初期位置が保存されます
_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 < -_itemWidth ? -_itemWidth : deltaX; //同时移动当前元素及其左右元素 moveItems(translate); isMove = true; } }, false);
touchendイベント
と指が画面から離れると、計算を終了する必要があります。 どのページで_container.addEventListener("touchend",function(e) { // e.preventDefault();//取消此行代码的注释会在该元素内阻止页面纵向滚动 //是否会滚 var isRollback = false; //计算手指在屏幕上停留的时间 var deltaT = new Date().getTime() - startT; if (isMove) { //发生了左右滑动 //如果停留时间小于300ms,则认为是快速滑动,无论滑动距离是多少,都停留到下一页 if(deltaT < 300){ translate = translate < 0 ? -_itemWidth : _itemWidth; }else { //如果滑动距离小于屏幕的50%,则退回到上一页 if (Math.abs(translate) / _itemWidth < 0.5){ isRollback = true; }else{ //如果滑动距离大于屏幕的50%,则滑动到下一页 translate = translate < 0 ? -_itemWidth : _itemWidth; } } moveTo(translate, isRollback); } }, false);
カルーセルライブラリ
使いやすさのために、実装プロセス全体をライブラリにカプセル化し、prev()、next()メソッドを追加しました使い方はとても簡単です:
rree
以上がH5 を使用してタッチ スクリーン バージョンのカルーセルを実装する方法の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









H5 は、HTML の最新バージョンである HTML5 を指します。H5 は、開発者により多くの選択肢と創造的なスペースを提供する強力なマークアップ言語です。その出現は、Web テクノロジーの発展を促進し、Web ページのインタラクションと効果をより優れたものにします。H5 テクノロジーとして徐々に成熟して普及していき、インターネットの世界でますます重要な役割を果たしていくと思います。

この記事は、H5、WEB フロントエンド、大規模フロントエンド、WEB フルスタックを簡単に区別するのに役立ちます。

H5 では、position 属性を使用して、CSS を通じて要素の位置を制御できます: 1. 相対位置、構文は「style="position:relative;」です。 2. 絶対位置、構文は「style="position:」です。 Absolute;" "; 3. 固定位置、構文は「style="position:fixed;」などです。

実装手順: 1. ページのスクロール イベントを監視する; 2. ページが一番下までスクロールしたかどうかを判断する; 3. データの次のページをロードする; 4. ページのスクロール位置を更新する。

レンダリング記述は vue.js に基づいており、他のプラグインやライブラリに依存せず、基本的な機能は element-ui と一致しており、モバイル端末の違いに合わせて内部実装にいくつかの調整が加えられています。現在の構築プラットフォームは uni-app 公式スキャフォールディングを使用して構築されており、現在ほとんどのモバイル端末には h6 と WeChat ミニプログラムの 2 種類が搭載されているため、複数の端末で 1 セットのコードを実行する技術の選択に非常に適しています。実装アイデアのコア API: と に対応する、provide と inject を使用します。コンポーネントでは、すべてのインスタンスを格納するために変数 (配列) が内部的に使用され、転送されるデータは Provide を通じて公開されます。コンポーネントは内部で Inject を使用して親コンポーネントから提供されたデータを受け取り、最後に独自の属性をメソッドの送信

この記事では、新しい H5 プロモーション タグについて説明します。困っている友人のお役に立てれば幸いです。

HTML5 と PHP は、Web 開発で一般的に使用される 2 つのテクノロジです。前者はページ レイアウト、スタイル、インタラクションの構築に使用され、後者はサーバー側のビジネス ロジックとデータ ストレージの処理に使用されます。 HTML5 と PHP の関連知識を詳しく見ていきましょう。

H5 には直接的なキャッシュ メカニズムはありませんが、Web Storage API、IndexedDB、Service Workers、Cache API、Application Cache などのテクノロジーを組み合わせることで、強力なキャッシュ機能を実現し、アプリケーションのパフォーマンス、可用性、スケーラビリティを向上させることができます。さまざまなニーズやアプリケーションシナリオに応じて選択して使用できます。詳細な紹介: 1. Web Storage API は、H5 によって提供されるシンプルなものです。
