Vueモバイル端末が指のスライド効果を実現

Vueモバイル端末が指のスライド効果を実現

この記事の例では、Vueモバイル端末で指のスライド効果を実現するための具体的なコードを紹介します。具体的な内容は次のとおりです。

スライドすると、それに応じて黄色のブロックの幅が変わります。タッチクリックで実現しています。現時点では、幅の変更に問題があると感じています。まだ検討中です。

コードは次のとおりです:

<テンプレート lang="html">
  <div class="back" ref="back" @touchstart.prevent="touchStart" @touchmove.prevent="touchMove">
    <div class="back-r" 
 @touchstart.prevent="タッチ開始" @touchmove.prevent="タッチ移動"
 @touchend="タッチ終了"
 ref="右"></div>
  </div>
</テンプレート>
 
<スクリプト>
エクスポートデフォルト{
  データ() {
  },
  作成された() {
    this.touch = {}
  },
  メソッド: {
    タッチスタート(e) {
      定数touch = e.touches[0]
   
  //クリック時の位置 this.touch.startX = touch.pageX
      this.touch.startY = touch.pageY
   console.log('----',this.$refs.right.clientWidth)
    },
//クリックを開始するtouchMove(e) {
      console.log("移動");
      定数touch = e.touches[0]
   //スライド位置と初期位置の差 const deltaX = touch.pageX - this.touch.startX
   コンソールログ(デルタX)
      定数 deltaY = touch.pageY - this.touch.startY;
      //右幅を印刷 console.log('----',this.$refs.right.clientWidth+'px') 
   const rwidth = this.$refs.right.clientWidth
   //右の幅を変更します this.$refs.right.style.width = (this.$refs.right.clientWidth + Math.floor(deltaX/50)) +'px'
   //幅が0未満か400より大きいかを判断する
   rwidth<0の場合{
    this.$refs.right.style.width = 0
   } そうでない場合(rwidth>400){
    this.$refs.right.style.width = 400+'px'
   } 
   console.log('----',this.$refs.right.clientWidth+'px')

    },
    タッチ終了() {
      console.log("終了");
      // console.log(this.percent);
    }
  }
}
</スクリプト>
 
<style scoped lang="stylus" rel="stylesheet/stylus">
体{
  マージン:0;
  パディング: 0;
  オーバーフロー: 非表示;
  タッチアクション:なし;
}
。戻る{
 幅: 100%
 高さ: 100ピクセル
 境界線 10px 実線 #0000FF
 オーバーフロー: 非表示;
}
  
  
  .back-r{
   // 表示: インラインブロック
   // 垂直位置合わせ: 上
   位置: 相対
   幅: 400ピクセル
   高さ: 100%
   オーバーフロー: 非表示;
   背景色: 黄色
  }
    
</スタイル>

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • vue2.0 モバイル スライド イベント vue-touch のサンプル コード
  • Vueでモバイル端末上で左右スライド効果を実現する方法
  • Vue カスタム モバイル タッチ イベント: クリック、スライド、長押しイベント
  • vue vue-touch モバイルジェスチャの詳細な説明

<<:  docker-composeの詳細なインストールと使用方法

>>:  MySQL の完全なデータベース バックアップからデータベースとテーブルを復元する方法

推薦する

HTML 9グリッドレイアウトの実装方法

ウェブサイトのレイアウトの多様化は、当社のフロントエンドの得意分野です。最近、UC ブラウザのデフォ...

Reactの状態の理解についての簡単な分析

複雑なコンポーネント (クラス コンポーネント) と単純なコンポーネント (関数コンポーネント) を...

Docker での RocketMQ の詳細なインストールと使用

RocketMQ イメージを検索するには、Docker の hub.docker.com で検索する...

CSS 位置プロパティが絶対の場合のパーセンテージ値の計算

位置が絶対の場合、関連する属性のパーセンテージは、参照先の要素 (包含ブロック) を基準として計算さ...

MySQL バッチ追加および保存メソッドの例

ストレステストにログインする際には、多くの異なるユーザーが必要となり、データベースに新しいデータを追...

DockerにElasticsearch7.6クラスタをインストールしてパスワードを設定する方法

目次基本的な設定バージョンとDockerイメージについて始めるelasticsearch.ymlにつ...

ElementUIはドロップダウンオプションと複数選択ボックスのサンプルコードを実装します

目次ドロップダウン複数選択ボックスアップグレード - すべてのオプションを追加改訂と改善を求める製品...

JS ES6コーディング標準の詳細な説明

目次1. ブロックスコープ1.1. let は var を置き換える1.2. グローバル定数とスレッ...

Vueのコンポーネントの詳細な説明

目次1. コンポーネントの登録2. コンポーネントの使用3. 父から息子へ4. 息子から父へ5. ス...

JavaScript が重複したネットワークリクエストを防ぐ方法の例

序文開発中は、インターフェース要求の繰り返しによってさまざまな問題が発生することがよくあります。ネッ...

MySQLは「order by」がどのように機能するかを簡単に理解します

並べ替えの場合、order by は非常に頻繁に使用するキーワードです。インデックスに関するこれまで...

vue3+ts+EsLint+Prettier 標準コード実装

目次使用EsLintの使用プロフィールを追加するPrettierの使用huskyとlint-stag...

MySQLインジェクションバイパスフィルタリング技術の概要

まず、GIF 操作を見てみましょう。ケース1: スペースがフィルタリングされるスペースの代わりに角括...

JSは円形のプログレスバーのドラッグとスライドを実装します

この記事の例では、円形のプログレスバーのドラッグアンドスライドを実現するための具体的なJSコードを紹...

MySQL で中国語を入力するときに発生するエラー 1366 の解決方法

MySQL で中国語を入力すると、次のエラーが発生します。エラー 1366: 1366: 行 1 の...