この記事の例では、ボールのスライドとクロスの効果を実現するための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; 背景色: 青; } .num { 位置: 絶対; 上: -19px; 左: 9px; } } </スタイル> 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Linux サーバー上で nvidia-docker 環境を設定するプロセスの詳細な説明
>>: Linux サーバーのグラフィック カードのクラッシュの解決策
私はプロジェクトを実行するために react を使い始めたばかりで、非常に未熟で完全な初心者です。私...
序文この記事では主にMySQLでトランザクションを開始する方法について紹介します。関連情報については...
この記事は主に、nginx を介して方向プロキシを実装するプロセスを紹介します。この記事のサンプル ...
1: 文字列を区切るためのストアドプロシージャを定義する 区切り文字 $$ `mess`$$ を使う...
目次HTML構造の定義入力タグのバインディング属性入力タグはキーダウンイベントをリッスンしますli ...
この記事では、例を使用して MySQL カスタム関数の原理と使用方法を説明します。ご参考までに、詳細...
ルーティングvue-router4 では API の大部分は変更されていないため、変更点のみに焦点を...
CenOS6.7 は MySQL8.0.22 (推奨コレクション) をインストールします1. MyS...
序文:グループ化関数はグループ内の最初のデータを取得しますが、各グループ内の最新のデータを取得する必...
すりガラス効果がうまく表現されていれば、ページが非常に鮮やかで立体的に見えるようになります。写真に直...
VueはRefを使用してレベル間でコンポーネントインスタンスを取得します例の紹介開発プロセスでは、レ...
目次2. 詳しい説明2.1. asyncRoutesルーティングを追加する2.2. 新しいpermi...
1. ハイパーリンクアイコンの仕様とは?<br />ハイパーリンクアイコンの仕様は、「C...
1. AデータベースとBデータベースの同期ステータスを確認する次のコマンドを入力すると多くの情報が表...
CSS命名規則 ヘッダー: ヘッダーコンテンツ: コンテンツ/含むフッターナビゲーション: navサ...