Vue は左右のスライド効果のサンプルコードを実装します

Vue は左右のスライド効果のサンプルコードを実装します

序文

個人の実際の開発で使用した効果問題を、今後の開発やレビューに役立てるためにまとめています。他の人にも当てはまる場合は、批判せずに自由に取り入れてください。

Vue.js は、人気の JS フレームワークの 1 つです。Vue は、ユーザー インターフェイスを構築するためのプログレッシブ JavaScript フレームワークです。他の大規模なフレームワークとは異なり、Vue は下から上にレイヤーごとに適用されるように設計されています。 Vue のコアライブラリはビューレイヤーのみに焦点を当てているため、使いやすいだけでなく、サードパーティのライブラリや既存のプロジェクトとの統合も簡単です。一方、Vue を最新のツールチェーンやさまざまなサポートライブラリと組み合わせて使用​​すると、Vue は複雑なシングルページアプリケーション用のドライバーも完全に提供できます。

Vue.js は、インタラクティブな Web インターフェースを構築するためのライブラリです。シンプルで柔軟な API を備えた MVVM データ バインディングと構成可能なコンポーネント システムを提供します。技術的に言えば、vue.js は MVVM パターン上のビューモデル層 (viewModel) に重点を置いており、双方向データバインディングを通じてビュー (view) とモデル (model) を接続します。実際の DOM 操作と出力フォーマットは、ディレクティブとフィルターに抽象化されます。他の MVVM フレームワークと比較すると、vue.js は簡単に始めることができます。シンプルで柔軟な API を通じて、データ駆動型の UI コンポーネントを作成できます。

サンプルコード

HTMLコード

<テンプレート>
    <div id="スライドバー" class="box">
        <div class="item" ref="スライド" :style="slideStyle" @touchstart="開始($event)" @touchmove="移動($event)" @touchend="終了($event)">
          <img src="http://img2.imgtn.bdimg.com/it/u=2555191195,2735808065&fm=26&gp=0.jpg" alt="">
          <div class="right">
            <div class="title">こんにちは!</div>
            <p class="text">ハハハハ</p>
            <p class="price">良い</p>
          </div>
        </div>
        <div class="btn" ref="btn">
            <button>編集</button>
            <button style="background:#387ef5;color:#fff">収集</button>
        </div>
    </div>
</テンプレート>

CSSコード

<スタイル>
。箱{
    位置:相対;
    ボーダーボトム:0.026667rem 実線 #666666;
}
.btn{
  高さ:100%;
  位置:絶対;
  右:0;
  トップ:0;
  背景:赤;
  ディスプレイ:フレックス;
}
ボタン{
  幅:1.6rem;
  高さ:100%;
  背景:#f8f8f8;
  境界線:なし;
}
。アイテム{
  パディング:0.266667rem;
  ディスプレイ:フレックス;
  位置:相対;
  背景:#fff;
  zインデックス: 2;
  ボックスシャドウ: 0.026667rem 0 0.053333rem #ddd;
}
.item画像{
  幅:2.133333rem;
  高さ:2.133333rem;
  右マージン:0.4rem;
  境界線の半径: 0.133333rem;
}

.item .title{
  フォントサイズ:0.48rem;
  フロート: 左;
}
.item .text{
  フォントサイズ:0.426667rem;
  色:#888;
  フロート: 左;
  マージン: 0 1.33rem;
}
.アイテム .価格{
  色:#888;
  フロート: 左;
  マージン: 0 1.33rem;
}
</スタイル>

JSコード

<スクリプト>
    エクスポートデフォルト{
        名前: 'スライドバー',
        小道具: {

        },
        データ (){
            戻る {
                フラグ: false、
                開始X: 0,
                終了X: 0,
                スライドスタイル: {
                    左: 0,
                    遷移: 'なし'
                }
            }
        },
        メソッド: {
            start (e){ //スライド開始時の画面のX軸の位置を記録します。this.flag = true;
                this.startX = e.touches[0].clientX;
                this.endX = this.$refs.slide.offsetLeft;
                this.slideStyle.transition = 'なし';
            },
            移動する(e){
                if(this.flag){
                    // マウスの動きを処理するロジック var moveX = this.endX + (e.touches[0].clientX - this.startX); // スライド距離を計算します if (Math.abs(moveX) >= this.$refs.btn.offsetWidth && moveX < 0) { // スライド距離がclass:btnの幅より大きいかどうかを判断します moveX = (Math.abs(moveX) - this.$refs.btn.offsetWidth) * 0.1; // 0.3抵抗係数 this.slideStyle.left = - this.$refs.btn.offsetWidth - moveX + 'px';
                    }else if(moveX >= 0){ //スライド距離は0以上ですか?
                        this.slideStyle.left = 0 + 'px'; //class:item を 0 にするには 0 以上
                    }それ以外{
                        this.slideStyle.left = moveX + 'px'; // 0 未満の場合、class:item はスライド距離と同じになります}
                }
            },
            終了 (e){
                if(this.flag){
                    this.flag = false;
                    // endX = slide.offsetLeft;
                    var moveX = e.changedTouches[0].clientX - this.startX; //スライド距離を計算します this.slideStyle.transition = 'left .3s';
                    var btnWidth = this.$refs.btn.offsetWidth; //class:btn widthif(moveX < 0){
                        if(Math.abs(moveX) >= btnWidth / 2 || Math.abs(this.$refs.slide.offsetLeft) >= this.$refs.btn.offsetWidth){ //class:btn の幅の半分より大きい this.slideStyle.left = - btnWidth + 'px'; //class:btn の幅の半分以上左にスライドした場合は、後ろにスライドします}else if(Math.abs(moveX) < btnWidth / 2){ //class:btn の幅の半分より小さい this.slideStyle.left = 0 + 'px'; //class:btn の幅の半分を超えずに左にスライドした場合は、元の位置に戻ります}
                    }そうでない場合、moveX > 0 && this.endX != 0){
                        (Math.abs(moveX) >= btnWidth / 2)の場合{
                            this.slideStyle.left = 0 + 'px'; //class:btn の幅の半分以上右にスライドし、後ろにスライドします}else if(Math.abs(moveX) < btnWidth / 2){
                            this.slideStyle.left = - btnWidth + 'px'; //class:btn の幅の半分を超えずに右にスライドし、元の位置に戻ります}
                    }
                }
            }
        },
        マウントされた(){
            var _this = これ;
            // js の最新のイベント リスナー transition を使用します。transition はこれで終了します。$refs.slide.addEventListener('transitionend',function(){
                _this.endX = this.offsetLeft;
            })
        }
    }
</スクリプト>

要約する

Vue で左右スライド効果を実現する方法についてはこれで終わりです。Vue の左右スライドに関する関連コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vueは左上と右上のスライドナビゲーションを実装します
  • Vueはタブナビゲーションバーを実装し、左右のスライド機能をサポートしています
  • Vue+swiperは左右にスライドするテスト問題機能を実装します
  • Vueはスワイパーを使用して左右にスライドすることで画像を切り替える
  • Vueはbetter-scrollを使用してスライドと左右の連動を実現しています
  • Vueモバイル端末での左右スライドイベントの詳しい説明
  • Vueモバイル端末は携帯電話を左右にスライドして入力するアニメーションを実現
  • Vueでモバイル端末上で左右スライド効果を実現する方法
  • Vueをベースにページ切り替えの左右スライド効果を実装する
  • Vueの左右スライドボタングループコンポーネントの使い方の詳細な説明

<<:  Alibaba CloudにMySQLをインストールする方法の詳細な説明

>>:  grep を使用して MySQL エラー ログ情報を取得する方法の詳細な説明

推薦する

Vueプロジェクトでvuexを使用する方法

目次Vuex とは何ですか? Vuex 使用サイクル図私のストアディレクトリvuexの例の実装要約す...

Linux 上で Docker コンテナを作成、一覧表示、削除する方法の概要

1. Dockerコンテナを起動する以下のコマンドを使用して新しい Docker コンテナを起動しま...

Linux ディレクトリ切り替え実装コード例

ファイルの切り替えは Linux でよく行われる操作です。Linux を初めて学ぶときに最初に触れる...

DockerHubイメージリポジトリの使い方の詳しい説明

これまで使用していたイメージはすべて DockerHub パブリック リポジトリから取得していました...

XHTML ドキュメントで JavaScript と CSS を正しく使用する方法

ますます多くのウェブサイトで、XHTML が HTML4 に取って代わって急速に普及しています。しか...

MySQL監視グループレプリケーションについて簡単に説明します

元のテキスト: https://dev.mysql.com/doc/refman/8.0/en/gr...

MySQL データベース SELECT クエリ式分析

データ管理の大部分は検索であり、SELECT はその大部分を占めています。 SELECT selec...

MySQLインデックスに関する詳細を共有する

数日前、同僚からMySQLのインデックスについて質問を受けました。大体わかっているのですが、まだ練習...

Vue.jsはカレンダー機能を実装します

この記事では、カレンダー機能を実装するためのVue.jsの具体的なコードを例として紹介します。具体的...

Web アプリ開発時間を短縮する 10 の時間を節約するヒント (グラフィカル チュートリアル)

今日の開発環境では、速いほど良いです。 「迅速なアプリケーション開発」、「アジャイル ソフトウェア開...

CSS3 を使用して 3D テキスト ホバー効果を実装するサンプル コード

この記事では、3D テキストのホバー変更効果を実現するための CSS3 のサンプル コードを紹介しま...

element.style インライン スタイルを変更する方法のチュートリアル

序文上記の Web ページ スタイルを記述しているときに、スタイルの値をどのように変更しても、ページ...

HTML テーブルタグと関連する改行の問題の詳細な分析

テーブルとは何ですか?テーブルは、データのキャリアである HTML テーブルです。以下は比較的標準的...

MYSQL 文字列強制変換メソッドの例

序文2 つのテーブル内の同じフィールドの型が異なっていたり、エンコード タイプが異なっていたりするた...