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 を使用)

推薦する

Dockerでの接続例外中のエラーを解決する

Docker を初めて使い始めると、通常とは異なる問題に遭遇して、必然的に混乱してしまいます。大丈夫...

React diffアルゴリズムソースコード分析

目次単一ノード差分単一要素を調整するマルチノード差分調整子配列ノードが移動したかどうかを判断するには...

フロントエンドの面接でよく聞かれる JavaScript の質問の完全なリスト

目次1. 手書きのインスタンス2.配列のマップメソッドを実装する3. Reduceは配列のmapメソ...

JavaScript の遅延読み込み属性パターンを理解する

従来、開発者はインスタンスで必要になる可能性のあるデータに対して JavaScript クラス内にプ...

MySQL の大文字と小文字の区別に関する注意

目次MySQLの大文字と小文字の区別はパラメータによって制御されますMySQLの大文字と小文字の区別...

JavaScript をスリープまたは待機させる方法

目次概要setTimeout() の確認スリープ関数の書き方シンプルな選択ループで実行されますか?要...

ネイティブ JS でスネーク ゲームを書く

この記事では、参考までに、JSでスネークゲームを書くための具体的なコードを紹介します。具体的な内容は...

純粋な CSS 実装 (スクリプトなし) HTML コマンド スタイルのツールチップ テキスト プロンプト効果

実行プロセスを分析します。マウスをノードに移動して、ノードにツールチップ実装を開くための識別子 (...

Docker が MySQL を作成する説明

1. MySQLイメージをダウンロードするコマンド: docker pull mysql 2. コン...

jsはショッピングウェブサイトの商品の拡大鏡効果を実現します

この記事では、ショッピングサイトの商品の拡大鏡効果を実現するためのjsの具体的なコードを紹介します。...

vue.js ルーターのネストされたルートの実例

目次序文Vue CLI での設定基本コードVueルーターの登場ネストされたルートの設定要約する序文V...

CSS に基づいて MaterialUI ボタン​​クリックアニメーションを実装し、それを React コンポーネントにカプセル化します。

序文フロントエンドフレームワークのヘビーユーザーとして、私はテクノロジーを選択する際にそのエコロジー...

CentOS 7.x のマスターおよびスレーブ DNS サーバーの展開

1. 準備例: 2 台のマシン: 192.168.219.146 (マスター)、192.168.21...

MySQL インデックスの設計と最適化の方法

目次インデックスとは何ですか?左端のプレフィックス一致の原則key_lenの計算方法インデックスの最...