Vueはボールのスライディングクロス効果を実現します

Vueはボールのスライディングクロス効果を実現します

この記事の例では、ボールのスライドとクロスの効果を実現するためのVueの具体的なコードを共有しています。具体的な内容は次のとおりです。

では、早速コードを見てみましょう。

<テンプレート>
  <div class="about">
    <div class="box">
      <!-- デフォルト行 -->
      <div class="Line"></div>
      <!-- 青い線 -->
      <div class="スライダーライン" ref="スライダーライン"></div>
      <!-- 左側の小さなボール -->
      <div class="ball" @touchstart.prevent="fnstart"></div>
      <!-- 右ボール-->
      <div class="ball ac" @touchstart.prevent="fnstart"></div>
      <!-- 上記の数字 -->
      <div class="num" ref="num">{{ num }}</div>
    </div>
  </div>
</テンプレート>

スクリプトコード:

<スクリプト>
エクスポートデフォルト{
  データ() {
    戻る {
      番号: 0,
    };
  },
  メソッド: {
    fnstart(ev) {
      //ボール this.oDiv = ev.target;
      // pagx: マウスのクリック位置からページの左端までの距離 offsetLeft 現在の要素の左端から最大ボックスの左端までの距離 this.pageX = ev.changedTouches[0].pageX - this.oDiv.offsetLeft;
 
      document.ontouchmove = this.FnMove;
      document.ontouchend = this.FnEnd;
      //親要素の幅 this.parent = ev.target.parentNode.offsetWidth;
      // ボールの幅を減算します this.Width = this.parent - ev.target.offsetWidth;
      //親要素を取得します。this.parents = ev.target.parentNode;
      //子要素を取得します。this.child = this.parents.children;
 
      // 右側のボールを取得します this.Right = this.parents.children[0];
      // 左側のボール this.Left = this.parents.children[1];
    },
    FnMove(ev) {
      // ボールが要素の左端からスライドする距離を減算して、ブラウザの端を計算します。this.X = ev.changedTouches[0].pageX - this.pageX;
      // コンソールログ(this.X, 1010101);
 
      // ボールがゼロで外に出られないかどうかを確認します if (this.X <= 0) {
        this.X = 0;
      }
      // ボールが外に出ないように、これより大きいか等しいかをチェックします。if (this.X > this.Width) {
        this.X = this.Width;
      }
      // 左側のボールをスライドさせると、それに応じて線の色が変わります // 上記の値もそれに応じて変化し、100 の部分に分割されます this.xnum = this.X / 3.7;
      // 整数を取得 this.num = parseInt(this.xnum);
      this.$refs["num"].style.left = this.X + 6 + "px";
 
 
      // ボールが互いに影響を及ぼさずに交差するようにします // 左右を動的に監視します for (var i = 0; i < this.child.length; i++) {
        if (this.child[i].classList.contains("ball")) {
          // 合計 5 つの要素から 3 を引いたものが青い線の長さです
          Len = this.child.length - 3 とします。
          (i == 長さ) の場合 {
            // 左のボールの絶対値から右のボールを引いた値が線の幅です。 this.dis = Math.abs( this.child[i].offsetLeft - this.child[i + 1].offsetLeft );
            //ボールの幅 this.child[1].style.width = this.dis + "px";
 
            // 左のボールの値から右のボールの値を引いた値が 0 未満の場合、青い線の左側が左のボールの offsetLeft 値になります if (this.child[i].offsetLeft - this.child[i + 1].offsetLeft < 0) {
              this.child[1].style.left = this.child[i].offsetLeft + "px";
            } それ以外 {
              // それ以外の場合は、右側のボールの offsetLeft 値です。this.child[1].style.left = this.child[i + 1].offsetLeft + "px";
            }
          }
        }
      }
 
 
      this.oDiv.style.left = this.X + "px";
    },
    FnEnd() {
      document.ontouchmove = null;
      document.ontouchend = null;
    },
  },
};
</スクリプト>

CSSコード:

<style lang="less" スコープ>
。箱 {
  位置: 相対的;
  幅: 400ピクセル;
  高さ: 30px;
  背景色: rgb(240, 16, 83);
  上: 50px;
  マージン: 自動;
  。ボール {
    位置: 絶対;
    幅: 30ピクセル;
    高さ: 30px;
    背景色: ピンク;
    境界線の半径: 50%;
    zインデックス: 2;
  }
  .ball.ac {
    右: 0;
    背景色: 紫;
  }
  。ライン {
    位置: 絶対;
    上: 14px;
    幅: 400ピクセル;
    高さ: 2px;
    行の高さ: 30px;
    背景: #ccc;
  }
  .スライダーライン{
    位置: 絶対;
    上: 14px;
    幅: 400ピクセル;
    高さ: 2px;
    行の高さ: 30px;
    背景色: 青;
  }
  .nu​​m {
    位置: 絶対;
    上: -19px;
    左: 9px;
  }
}
</スタイル>

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

以下もご興味があるかもしれません:
  • Vueでモバイル端末上で左右スライド効果を実現する方法
  • Vue カスタム モバイル タッチ イベント: クリック、スライド、長押しイベント
  • Vueをベースにページ切り替えの左右スライド効果を実装する
  • vue2.0 モバイル スライド イベント vue-touch のサンプル コード
  • Vue で画面のスクロールとスライドを無効にする
  • Vue は、より多くのエフェクトを読み込むために下にスライドすることを実装しました。
  • Vueモバイル端末での左右スライドイベントの詳しい説明
  • Vue で better-scroll を使用してスライド効果を実現する方法と注意事項
  • Vue はページ切り替えスライド効果を実装します
  • Vueモバイル端末は携帯電話を左右にスライドして入力するアニメーションを実現

<<:  Linux サーバー上で nvidia-docker 環境を設定するプロセスの詳細な説明

>>:  Linux サーバーのグラフィック カードのクラッシュの解決策

推薦する

Dockerコンテナが停止できない問題の解決方法

解決策は次のとおりです。 1. コンテナを強制削除する docker rm -f ジェンキンス2. ...

Docker で Oracle 11g イメージ構成をプルダウンする際の問題を分析する

1. イメージをプルするdocker pull レジストリ.cn-hangzhou.aliyuncs...

JavaScriptプロトタイプチェーンを理解する

目次1. プロトタイプとプロトタイプチェーンの平等関係を理解する2: プロトタイプとプロトタイプ チ...

docker-compose で Jenkins をインストールする際の実践的なメモ

ディレクトリを作成する cd /usr/local/docker/ jenkins-docker を...

DockerでPrometheusをインストールする詳細なチュートリアル

目次1. Node Exporterをインストールする2. cAdvisorをインストールする3. ...

Linux7 ベースの Hadoop のインストールと構成の詳細なグラフィック説明

上記のように材料を準備します(ps: hadoop-3.1.2-srcはhadoop-3.1.2に変...

DockerコンテナでArthasを使用するための詳細な手順

Arthas はあなたのために何ができるでしょうか? Arthas 、開発者に深く愛されている Al...

負荷分散の基礎知識とnginxを使用した負荷分散の簡単な例

Nginx は、一般的に 7 層の負荷分散に使用できます。この記事では、負荷分散に関する基本的な知識...

Docker の MySQL コンテナのタイムゾーン問題の修正

序文Ahhang が Springboot プロジェクトを開発していたとき、フロントエンドから検証コ...

Elementのメッセージポップアップウィンドウが繰り返しポップアップする問題の解決

目次1. 使用2. メッセージポップアップウィンドウが繰り返し表示される問題を解決する1. 使用Vu...

ノードの対応するバージョンに関する簡単な説明 node-sass sass-loader

目次ノードのバージョンが一致しない、ノードをアップグレードまたはダウングレードするnvm を使用して...

MySQL 起動エラーを解決する: エラー 2003 (HY000): 'localhost' の MySQL サーバーに接続できません (10061)

このエラーは初心者によく発生します。この記事では主に、エラー 2003 (HY000): '...

スクロールバーを非表示にしてコンテンツをスクロールする CSS サンプルコード

序文ページの HTML 構造にネストされたボックスが多数含まれている場合、ページに複数の垂直スクロー...

Linux trコマンドの使い方

01. コマンドの概要tr コマンドは、標準入力からの文字を置換、圧縮、削除できます。ある文字セット...