この記事では、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 を使用)
目次問題を見つける1. 改行と復帰を削除する方法2. SELECTクエリで「改行と復帰」を無視する方...
目次概要関数シグネチャオプションパラメータ非厳密モード例外処理実用要約する概要ご存知のとおり、ES6...
<br />リンクをクリックすると、ポップアップ表示される Web ページ アドレスは ...
序文:データベースパラダイムについてはよく耳にしていましたが、詳細まで理解したことはありませんでした...
MySQL 8.0.16 にインストールする場合、「UTF8B3」ではなく「UTF8B4」が使用さ...
目次説明する:要約する補充するDOM を直接変更して操作する js や jQuery とは異なり、V...
1. ダウンロード参考: 2. D:\MySQL\mysql-5.7.24 などの固定の場所に解凍し...
MySQL 5.7.21 解凍版のインストールと設定方法は参考までに。具体的な内容は以下のとおりで...
CSS を使用する場合は、DOCTYPE (ドキュメント タイプ定義) を記述することを忘れないでく...
目次1. JavaScriptはHTMLでキャンバスを使用する2. ページストレージ技術1. Jav...
権限とデータベース設計ユーザー管理SQLyogを使用してユーザーを作成し、権限を付与する基本コマンド...
目次1. インストール環境2. インストール手順ステップ1: インストールパッケージをダウンロードす...
1. PRIMARY KEY(主キーインデックス)を追加するmysql>ALTER TABLE...
序文MySQL データベースのパスワードを忘れると、データベースに正常にアクセスできなくなり、パスワ...
1. まず、gitを関連付けるときにエラーメッセージが報告されます: エラー: ビルドするリビジョン...