この記事では、モバイルとPCで簡単なドラッグアンドドロップ効果を実現するためのTypescript + Reactの具体的なコードを参考までに共有します。具体的な内容は次のとおりです。 1. モバイル1.tsxコード 「react」からコンポーネントをインポートします。 './Tab.less' をインポートします インターフェースProps{ } インターフェースユーザー{ id: 文字列、 テキスト: 文字列 } インターフェースコンテンツ{ id: 文字列、 テキスト: 文字列 } インターフェース状態{ ボタンインデックス: 数値、 ボタン配列: user[], コンテンツ配列: コンテンツ[] } クラスTabはComponent<Props, State>を拡張します{ コンストラクタ(props: Props) { スーパー(小道具) この状態 = { ボタンインデックス: 0, ボタン配列: [ { id: '01', テキスト: 'ボタン 1' }, { id: '02', テキスト: 'ボタン 2' }, { id: '03', テキスト: 「ボタン3」 } ]、 コンテンツ配列: [ { id: 'c1', テキスト: 'コンテンツ 1' }, { id: 'c2', テキスト: 'コンテンツ 2' }, { id: 'c3', テキスト: 'コンテンツ 3' } ]、 } } FnTab(インデックス: 数値):void { this.setState({ ボタンインデックス: インデックス }) } 与える() { 戻る ( <div className='タブ'> { this.state.ButtonArray.map((item, index) => <button key={item.id} onClick={this.FnTab.bind(this, index)} className={this.state.ButtonIndex === index ? 'tab-button ac' : 'tab-button'}>{item.text}</button>) } { this.state.ContentArray.map((item, index) => <div key={item.id} style={{display:this.state.ButtonIndex===index?'block':'none'}} className='tab-content'>{item.text}</div>) } </div> ) } } デフォルトタブをエクスポート 2.cssコード .ドラッグ{ 位置: 絶対; 幅: 100ピクセル; 高さ: 100px; 背景色: 赤; } 2. パソコン1.tsxコード 'react' から { Component, createRef } をインポートします。 './index.less' をインポートします インターフェースProps{ } インターフェース状態{ } クラス TextDrag は Component を拡張します { disX: 数値 = 0 disY: 数値 = 0 x: 数値 = 0 y: 数値 = 0 ドラッグ要素 = createRef<HTMLDivElement>() コンストラクタ(props: Props) { スーパー(小道具) この状態 = { } } FnDown(ev: React.MouseEvent) { if (this.dragElement.current) { this.disX = ev.clientX - this.dragElement.current?.getBoundingClientRect().left this.disX = ev.clientY - this.dragElement.current?.getBoundingClientRect().top } document.onmousemove = this.FnMove.bind(これ) document.onmouseup = this.FnUp } FnMove(ev: マウスイベント) { this.x = ev.clientX - this.disX this.y = ev.clientY - this.disY if (this.dragElement.current) { this.dragElement.current.style.left = this.x + 'px' this.dragElement.current.style.top = this.y + 'px' } } FnUp() { ドキュメント.onmousemove = null document.onmouseup = null } 与える() { 戻る ( <div className="TextDrag" ref={this.dragElement} onMouseDown={this.FnDown.bind(this)}> </div> ) } } デフォルトのTextDragをエクスポート 2.cssコード .テキストドラッグ{ 位置: 絶対; 幅: 100ピクセル; 高さ: 100px; 背景色: 赤; } 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQLのクラスタ化インデックスと非クラスタ化インデックスの詳細な説明
>>: Idea で Docker を使用して SpringBoot プロジェクトをデプロイする詳細な手順
まずは簡単なデータを見てみましょう。 Googleが発表したレポートによると、 ①中国の都市の97%...
ビジネス ソーシャル ネットワーキング サイト LinkedIn は最近、ナビゲーション バーとユー...
目次序文: Ubuntu 18.04 は apt ソースを Alibaba Cloud ソースに変更...
外部アクセスポートをランダムにマップする -P フラグを使用すると、Docker は 49000 か...
HTML POST リクエストで a タグを使用する 2 つの例を次に示します。 1. ajaxを使...
Server-Uソフトウェアの紹介Server-U は非常に強力なファイル マネージャーです。FTP...
目次JSはFileReaderを通じて.txtファイルの内容を取得します。 .txtファイルの読み取...
コードをコピーコードは次のとおりです。 <!--[IEの場合]><script t...
目次1. グループクエリの概略図2. groupbyキーワード構文の詳細な説明3. 簡単なグループク...
目次序文1. Nginxのインストール1. Nginxをダウンロードする2. 依存関係をインストール...
目次1. すべて選択2. 商品の数量を増やすか減らす3. 商品の小計を変更する4. 合計と合計額を計...
エフェクトのスクリーンショット:実装コード:コードをコピーコードは次のとおりです。 <!DOC...
この記事で使用されているPHPベースイメージはphp:7.3-apacheです。この記事の Lara...
1. ホストMacbookにHOSTをセットアップする前回のドキュメントでは仮想マシンの静的 IP ...
この記事では、登録またはログイン時に電子メール アドレスを入力する際のドロップダウン プロンプトのネ...