この記事では、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 を使用)
複数行を超えるテキストをインターセプトするための HTML コードは次のとおりです。 HTML:コー...
最近、プロジェクトでは kubernetes (以下、k8s と表記、k と s の間には 8 つの...
ある設計士はこう尋ねた。「実際のプロジェクト制作には参加せずに、純粋に設計だけをすることはできますか...
目次Viteプロジェクトを作成するコンポーネントの作成Viteプロジェクトを作成するパフォーマンスが...
目次ブラウザのレンダリングメカニズムリフローと再塗装リフロー逆流を引き起こす行為:再描画再描画を引き...
目次序文テーブル コンポーネントをカプセル化する必要があるのはなぜですか?ステップ1: 共通コンポー...
1. データベースデータをシミュレートする1-1 データベースとテーブルスクリプトを作成する - v...
1. ローカルマシンを監視するためにZabbixエージェントをインストールするエージェントソフトウェ...
データベースの統計を行う場合、多くの場合、年、月、日に基づいてデータを収集し、echart を使用し...
前面に書かれたMySQL をアップグレードする方法には、インプレース アップグレードと論理アップグレ...
Baiduのインタビューで遭遇する質問は、次のレイアウト効果を達成する必要がある。 中央の紫色の列...
サイト上のページを表示するためのリクエストがサーバーに送信されると(たとえば、ユーザーがブラウザでペ...
Vue foreach配列を記述し、jsで配列をトラバースする方法シナリオVueでAxiosを使用し...
この記事では、フリーウィンドウのマウス制御を実現するためのJavaScriptの具体的なコードを参考...
ウェブフロントエンド最適化のベストプラクティス: コンテンツWebフロントエンド最適化のベストプラク...