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はヘッドとボディの2つの部分で構成されています** ヘッド内のタグはヘッドタグです** タイ...

WeChatアプレットがシンプルな計算機機能を実装

この記事では、WeChatアプレットの計算機機能を実装するための具体的なコードを参考までに紹介します...

URL 内の特殊記号の意味を知っていますか?

1.# # は Web ページ内の場所を表します。右側の文字はその位置の識別子です。たとえば、ht...

Dockerは同じIPネットワークセグメントとの接続を実現する

最近、Docker とホストが同じネットワーク セグメント上で通信する問題を解決し、そのプロセス全体...

Vue双方向バインディングの詳細な説明

目次1. 双方向バインディング2. 他のタグを選択した場合にも同じ結果になりますか? 答えはもちろん...

MySQL の複数テーブル関連付け 1 対多クエリを使用して最新のデータを取得する方法の例

この記事では、MySQL で複数のテーブルを使用して 1 対多のクエリを使用して最新のデータを取得す...

同期スクロールを実現するための複数のテーブル要素のサンプルコード

Element UIは、複数のテーブルを同時に水平および垂直にスクロールすることを実装します。 コー...

MySQLトリガーの詳細な説明と簡単な例

MySQLトリガーの簡単な例文法CREATE TRIGGER <トリガー名> -- トリ...

JS はシンプルな todoList (メモ帳) 効果を実装します

メモ帳プログラムは、HTML + CSS + JavaScript の 3 つの主要なフロントエンド...

CentOS システムの rpm インストールと Nginx の設定

目次CentOS rpm のインストールと Nginx の設定導入rpm パッケージのインストールサ...

JPQLに基づく純粋なSQL文方式の詳細な説明

JPQL は Java Persistence Query Language の略です。 Java ...

WeChat アプレットのカスタム下部ナビゲーション バー コンポーネント

この記事の例では、WeChatアプレットの下部ナビゲーションバーコンポーネントの具体的な実装コードを...

Vue-router ネストルーティングの詳細な説明

目次ステップ1. ルーティング ルールを設定し、子構成項目を使用します。 2. ジャンプ(フルパスを...

MySQL データベース JDBC プログラミング (Java は MySQL に接続します)

目次1. データベースプログラミングの基本条件2. Java でのデータベースプログラミング: JD...

Vue3.0 は虫眼鏡効果のケーススタディを実装します

達成される効果は、固定ズームが 2 倍になり、マウスが左側の画像領域に入るとマスク レイヤーが表示さ...