この記事では、Reactでダブルスライダークロススライドを実装するための具体的なコードを参考までに共有します。具体的な内容は次のとおりです。 HTMLコード: <本文> <div id="ルート"></div> </本文> スクリプトコード: <script type="text/babel"> 定数ルート = document.querySelector('#root') クラス Comp は React.Component を拡張します { コンストラクタ(...引数) { super(...引数) } fn(ev) { // マウスクリックの距離を取得します this.pageX = ev.changedTouches[0].pageX - ev.target.offsetLeft // 親を取得します this.parentWidth = ev.target.parentNode.offsetWidth - ev.target.offsetWidth // 親を取得 this.parent = ev.target.parentNode // 行を取得します this.line = this.parent.children[2] // 左側のボールを取得します this.oBall = this.parent.children[0] // 右側のボール this.oBallTwo = this.parent.children[1] document.ontouchmove = this.fnMove.bind(これ) document.ontouchend = this.fnEnd } fnMove(ev) { // ボックスのオフセット this.X = ev.changedTouches[0].pageX - this.pageX // オフセットが親ボックスの幅より大きくならないことを確認する if (this.X >= this.parentWidth) { this.X = this.parentWidth } // 値が 0 未満にならないかどうかをチェックします (this.X <= 0) の場合 { これ.X = 0 } // 線の幅を計算します。小さなボールのインタラクティブな計算の絶対値が線の幅です。this.lineWidth = Math.abs(this.oBallTwo.offsetLeft - this.oBall.offsetLeft) // 線の幅 this.line.style.width = this.lineWidth + 'px' // ボールから左までの距離 ev.target.style.left = this.X + 'px' // 右ボールの offsetLeft から左ボールの offsetLeft を引いて決定します。0 未満の場合、右ボールが左に最も近いです。左への線の距離である offsetLeft 値を取得します if (this.oBallTwo.offsetLeft-this.oBall.offsetLeft<0) { this.line.style.left=this.oBallTwo.offsetLeft+'px' }それ以外{ this.line.style.left=this.oBall.offsetLeft+'px' } } fnEnd() { document.ontouchmove = null document.ontouchend = null } 与える() { 戻り値 (<div className='box'> <div className='ball' onTouchStart={this.fn.bind(this)}></div> <div className='ボールac' onTouchStart={this.fn.bind(this)}></div> <div className='line'></div> <div className='lineT'></div> </div>) } } ReactDOM.render(<Comp />, ルート) </スクリプト> CSS スタイル: <スタイル> 体 { マージン: 0; パディング: 0; } 。箱 { 幅: 500ピクセル; 高さ: 40px; 背景: #999; 位置: 相対的; マージン: 自動; 上マージン: 100px; } 。ボール { 幅: 40px; 高さ: 40px; 背景: 赤; 位置: 絶対; 境界線の半径: 50%; zインデックス: 10; } .ball.ac { 背景: #0f0; 右: 0; } 。ライン { 高さ: 5px; 幅: 500ピクセル; 背景: rgb(200, 110, 7); 位置: 絶対; 上位: 50%; 左: 0; 変換: translate(0, -50%); zインデックス: 5; } .lineT { 高さ: 5px; 幅: 500ピクセル; 背景: #fff; 位置: 絶対; 上位: 50%; 左: 0; 変換: translate(0, -50%); } </スタイル> 2番目の方法: リンクをクリックして2番目の方法を表示します Vueはボールのスライディングクロス効果を実現します 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Linux サーバーのグラフィック カードのクラッシュの解決策
>>: MySQL スケジュール バックアップ ソリューション (Linux crontab を使用)
目次要件の説明問題の説明問題分析問題解決質問の拡張要件の説明このプロジェクトでは、まずユーザーが質問...
主キー:キーワード: 主キー機能: null にすることはできず、一意である必要があります。主キーの...
<br />前回の記事:Webデザイン講座(7):Webページ制作の効率化1:必要な小言...
この記事では、MySQL 8.0のダウンロードとインストールについてご紹介します。具体的な内容は以下...
目次1. 序文2. ポップアップコンポーネントを2つ見つける3. 自分で作る3.1. Promise...
Centos7はyumを使用してMySQLをインストールし、リモート接続を実現する方法です。MySQ...
目次概要コードの実装シングルトンパターンの簡易版改良版プロキシバージョンシングルトンモード遅延シング...
この記事では、例を使用して、MySQL を使用して正規表現に基づくあいまい文字列置換を実装する方法を...
データベース接続のURLの詳細な説明と概要JDBC URL = プロトコル名 + サブプロトコル名 ...
目次ユーティリティ: vue での使用:説明する:画像安定化:スロットル:ユーティリティ: // 手...
ブラウザの互換性は、実際の開発では見落とされがちな最も重要な部分です。古いバージョンのブラウザの互換...
今日は、Jenkins + powershell スクリプトを使用して、.NET CORE スクリプ...
序文Linux カーネルでは、netfilter は、パケット フィルタリング、ネットワーク アドレ...
nginx で proxy_pass を設定するときに、^~ に従ってパスを一致させる場合は、pro...
ReactRouterの実装ReactRouterはReactのコアコンポーネントです。主にReac...