Reactはダブルスライダークロススライドを実装します

Reactはダブルスライダークロススライドを実装します

この記事では、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 を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • ショッピングカートのスライド削除効果を実装するReactネイティブサンプルコード
  • リアクトネイティブのスライディングシーリング効果の実装プロセス
  • Reactのスライド画像検証コードコンポーネントのサンプルコード

<<:  Linux サーバーのグラフィック カードのクラッシュの解決策

>>:  MySQL スケジュール バックアップ ソリューション (Linux crontab を使用)

推薦する

MySQLデータ内の多数の改行と復帰に対する解決策

目次問題を見つける1. 改行と復帰を削除する方法2. SELECTクエリで「改行と復帰」を無視する方...

ES5とES6の違いを分析する

目次概要関数シグネチャオプションパラメータ非厳密モード例外処理実用要約する概要ご存知のとおり、ES6...

ベースリンクタグの使用の紹介ベース

<br />リンクをクリックすると、ポップアップ表示される Web ページ アドレスは ...

MySQLデータベースパラダイムの詳細な説明

序文:データベースパラダイムについてはよく耳にしていましたが、詳細まで理解したことはありませんでした...

MySql 8.0.16 バージョンのインストールでは、「UTF8B3」ではなく「UTF8B4」が使用されるように求められます。

MySQL 8.0.16 にインストールする場合、「UTF8B3」ではなく「UTF8B4」が使用さ...

Vue の双方向イベントバインディング v-model の原理についての簡単な説明

目次説明する:要約する補充するDOM を直接変更して操作する js や jQuery とは異なり、V...

mysql5.7.24 バージョンのインストール手順と解凍時に発生した問題の概要

1. ダウンロード参考: 2. D:\MySQL\mysql-5.7.24 などの固定の場所に解凍し...

MySQL 5.7.21 解凍版のインストールと設定方法のグラフィックチュートリアル (win10)

MySQL 5.7.21 解凍版のインストールと設定方法は参考までに。具体的な内容は以下のとおりで...

CSS (カスケーディング スタイル シート) の一般的な用語の概要

CSS を使用する場合は、DOCTYPE (ドキュメント タイプ定義) を記述することを忘れないでく...

JavaScript での HTML キャンバスとページ ストレージ テクノロジの使用に関する詳細な説明

目次1. JavaScriptはHTMLでキャンバスを使用する2. ページストレージ技術1. Jav...

MySQL 権限とデータベース設計のケーススタディ

権限とデータベース設計ユーザー管理SQLyogを使用してユーザーを作成し、権限を付与する基本コマンド...

Linux環境にJDK1.8をインストールする

目次1. インストール環境2. インストール手順ステップ1: インストールパッケージをダウンロードす...

MySQL のフィールドに一意のインデックスを追加および削除する方法

1. PRIMARY KEY(主キーインデックス)を追加するmysql>ALTER TABLE...

MySQL8のパスワードを忘れた場合の簡単な解決策

序文MySQL データベースのパスワードを忘れると、データベースに正常にアクセスできなくなり、パスワ...

dockerでデプロイされたjenkinsでgitプログラムを実行する際の問題について

1. まず、gitを関連付けるときにエラーメッセージが報告されます: エラー: ビルドするリビジョン...