この記事では、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 を使用)
Docker を初めて使い始めると、通常とは異なる問題に遭遇して、必然的に混乱してしまいます。大丈夫...
目次単一ノード差分単一要素を調整するマルチノード差分調整子配列ノードが移動したかどうかを判断するには...
目次1. 手書きのインスタンス2.配列のマップメソッドを実装する3. Reduceは配列のmapメソ...
<html> <ヘッド> <meta http-equiv="...
従来、開発者はインスタンスで必要になる可能性のあるデータに対して JavaScript クラス内にプ...
目次MySQLの大文字と小文字の区別はパラメータによって制御されますMySQLの大文字と小文字の区別...
目次概要setTimeout() の確認スリープ関数の書き方シンプルな選択ループで実行されますか?要...
この記事では、参考までに、JSでスネークゲームを書くための具体的なコードを紹介します。具体的な内容は...
実行プロセスを分析します。マウスをノードに移動して、ノードにツールチップ実装を開くための識別子 (...
1. MySQLイメージをダウンロードするコマンド: docker pull mysql 2. コン...
この記事では、ショッピングサイトの商品の拡大鏡効果を実現するためのjsの具体的なコードを紹介します。...
目次序文Vue CLI での設定基本コードVueルーターの登場ネストされたルートの設定要約する序文V...
序文フロントエンドフレームワークのヘビーユーザーとして、私はテクノロジーを選択する際にそのエコロジー...
1. 準備例: 2 台のマシン: 192.168.219.146 (マスター)、192.168.21...
目次インデックスとは何ですか?左端のプレフィックス一致の原則key_lenの計算方法インデックスの最...