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 サーバーのグラフィック カードのクラッシュの解決策

推薦する

フロントエンドが習得すべき、複数列の等高レイアウトを実現するための CSS テクニック

1. はじめにページを作成しているときに、複数列のレイアウトに遭遇することがあります。各列の内容が異...

WeChatミニプログラムページ間の価値転送を実装する方法の例

ミニプログラムページ間で値を渡すみなさんこんばんは。こんばんはと言うのは、これを夜に書いたからです。...

CentOS 7 で MySQL 8 の複数のインスタンスを設定する詳細なチュートリアル (必要な数だけ設定できます)

原因最近、プロジェクトのリファクタリングを始めたのですが、マスタースレーブと読み取り書き込み分離を使...

ウェブページの幅を携帯電話の画面(ビューポート)の幅に自動的に適応させる実装コード

一般的な書き方は次のとおりです。 XML/HTML コードコンテンツをクリップボードにコピー<...

ネイティブJavaScriptカルーセル実装方法

この記事では、JavaScriptカルーセルの実装方法を参考までに紹介します。具体的な内容は次のとお...

Mybatis ファジークエリ実装方法

Mybatis ファジークエリ実装方法mybatis のリバース アシスタントは非常に使いやすく、通...

Mysql5.7 サービスを開始できません。グラフィカル ソリューション チュートリアル

p>「サービス」で手動で起動すると、 コンソールから起動します: 次に、...\MySQL S...

ReactはExcelファイルのインポートとエクスポートを実装します

目次プレゼンテーション層ビジネスレイヤーコアプラグイン xlsx ExcelインポートExcelエク...

WeChatアプレットは左にスワイプしてリスト項目を削除する効果を実現

この記事では、WeChatミニプログラムの具体的なコードを共有し、左にスワイプしてリスト項目を削除す...

jQuery はピッカーをシミュレートしてスライド選択効果を実現します

この記事では、スライド選択効果を実現するピッカーをシミュレートするjQueryの具体的なコードを参考...

有名なウェブサイトのロゴに使われている25種類のフォントのコレクション

この記事では、25 の有名な Web サイト (Google、Yahoo、Twitter、Digg ...

HTMLでカスタムタグを使用する方法

カスタム タグは XML ファイルと HTML ファイルで自由に使用できますが、いくつか注意すべき点...

MySQL 文字列分割の例 (区切り文字なしの文字列抽出)

区切り文字なしの文字列抽出質問の要件データベース内のフィールド値:実装効果: 1行のデータを複数行に...

HTML と JavaScript を使用してローカル メディア (ビデオとオーディオ) ファイルを再生する方法

まず、セキュリティ上の理由から、JavaScript はローカル リソース ファイルに直接アクセスで...

仕事でよく使うLinuxコマンドまとめ

仕事では、docker や kubernetes などのオープンソース ツールをさらに活用しましょう...