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

推薦する

HTMLはテキスト行のインターセプトの実装原理とコードを超えています

複数行を超えるテキストをインターセプトするための HTML コードは次のとおりです。 HTML:コー...

k8sとDockerの関係についての簡単な説明

最近、プロジェクトでは kubernetes (以下、k8s と表記、k と s の間には 8 つの...

デザイン視点技術はデザイン能力の重要な資本である

ある設計士はこう尋ねた。「実際のプロジェクト制作には参加せずに、純粋に設計だけをすることはできますか...

Vue3.0+vite2は動的非同期コンポーネントの遅延読み込みを実装します

目次Viteプロジェクトを作成するコンポーネントの作成Viteプロジェクトを作成するパフォーマンスが...

Web面接でよくある質問:リフローとリペイントの原理と違い

目次ブラウザのレンダリングメカニズムリフローと再塗装リフロー逆流を引き起こす行為:再描画再描画を引き...

一般的なテーブルコンポーネントの Vue カプセル化の完全な手順記録

目次序文テーブル コンポーネントをカプセル化する必要があるのはなぜですか?ステップ1: 共通コンポー...

MySQLインデックスベースのストレステストの実装

1. データベースデータをシミュレートする1-1 データベースとテーブルスクリプトを作成する - v...

Zabbix で監視項目と集約されたグラフを設定するためのサンプルコード

1. ローカルマシンを監視するためにZabbixエージェントをインストールするエージェントソフトウェ...

MySQL 時間統計方法の概要

データベースの統計を行う場合、多くの場合、年、月、日に基づいてデータを収集し、echart を使用し...

Windows で MySQL 5.6 を 5.7 にアップグレードする方法

前面に書かれたMySQL をアップグレードする方法には、インプレース アップグレードと論理アップグレ...

CSS を使用して 3 列レイアウトを実装するサンプル コード。中央の列は適応型で、テキスト サイズに応じて幅が変わります。

Baiduのインタビューで遭遇する質問は、次のレイアウト効果を達成する必要がある。 中央の紫色の列...

さまざまなHTTPリターンステータスコードの詳細な説明

サイト上のページを表示するためのリクエストがサーバーに送信されると(たとえば、ユーザーがブラウザでペ...

Vue の foreach 配列と js の traversal 配列の書き方の説明

Vue foreach配列を記述し、jsで配列をトラバースする方法シナリオVueでAxiosを使用し...

JavaScript は自由に移動するウィンドウのマウス制御を実装します

この記事では、フリーウィンドウのマウス制御を実現するためのJavaScriptの具体的なコードを参考...

Webフロントエンドのパフォーマンス最適化

ウェブフロントエンド最適化のベストプラクティス: コンテンツWebフロントエンド最適化のベストプラク...