Xiaomi公式サイトの登録・ログイン機能を模倣するJavaScript

Xiaomi公式サイトの登録・ログイン機能を模倣するJavaScript

効果図は以下のとおりです。

まずページレイアウトを構築する必要があります

HTML コードは次のとおりです。

​
<div class="contentrightbottom">
                <div class="contentrightbottombox">
 
                    <div class="crbottomlogin">
                        <div class="login"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >ログイン</a></div>
                        <div class="regist"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >登録</a></div>
                    </div>
                    <div class="ログイン登録ボックス">
                        <ul>
                            <li>
                                <div class="crbottomcontent">
                                    <input type="text" placeholder="メールアドレス/携帯電話番号/Xiaomi ID" class="user">
                                    <br>
                                    <p class="pzh">アカウント番号を入力してください</p>
                                    <div class="pwdeyebox">
                                        <input type="password" placeholder="password" class="pwd"><br>
                                        <img src="close.png" alt="" class="目">
                                    </div>
                                    <p class="pmm">パスワードを入力してください</p>
                                    <input type="checkbox" class="checks">
                                    <span>Xiaomi アカウントを読み、同意しました</span>
                                    ユーザー契約
                                    <span> と </span>
                                    <span>プライバシーポリシー</span><br>
                                    <button>ログイン</button><br>
                                    <span class="forgetpwd"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >パスワードを忘れましたか? </a></span>
                                    <span class=" phonelogin"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >携帯電話番号ログイン</a></span>
                                    <p class="other">その他のログイン方法</p>
                                    <div class="crbottomcontentimg">
                                        <span><img src="share1.png" alt=""></span>
                                        <span><img src="share2.png" alt=""></span>
                                        <span><img src="share3.png" alt=""></span>
                                        <span><img src="share4.png" alt=""></span>
                                    </div>
                                </div>
                            </li>
                            <li>
                                <div class="crbottomcontentregist">
                                    <input type="text" placeholder="登録アカウントを入力してください" class="ruser">
                                    <p class="rpzh">アカウント番号を入力してください</p>
                                    <br>
                                    <input type="password" placeholder="パスワードを入力してください" class="rpwd">
                                    <p class="rpmm">パスワードを入力してください</p><br>
                                    <input type="number" class="rphone" placeholder="SMS認証コード">
                                    <p class="rpyzm">認証コードを入力してください</p><br>
                                    <input type="checkbox" class="checks">
                                    <span>Xiaomi アカウントを読み、同意しました</span>
                                    ユーザー契約
                                    <span> と </span>
                                    <span>プライバシーポリシー</span><br>
                                    <button>ログイン</button><br>
                                    <span class="forgetpwd"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >パスワードを忘れましたか? </a></span>
                                    <span class=" phonelogin"><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >携帯電話番号ログイン</a></span>
                                    <p class="other">その他のログイン方法</p>
                                    <div class="crbottomcontentimg">
                                        <span><img src="share1.png" alt=""></span>
                                        <span><img src="share2.png" alt=""></span>
                                        <span><img src="share3.png" alt=""></span>
                                        <span><img src="share4.png" alt=""></span>
                                    </div>
                                </div>
                            </li>
                        </ul>
                    </div>
 
                </div>
                <p class="conpany">著作権は Xiaomi Corporation が所有 - 北京 ICP 番号 10046444 - 北京公安局番号 11010802020134</p>
            </div>
 
​

ログイン登録全体は 2 つのボックスに分かれています。

上のボックスには、ログインと登録の2つのテキストボックスがあり、JSのクリックボタンとスライドボタンとして機能します。

下のボックスは、ログインボックスと登録ボックスをそれぞれ保持するために小さなliを使用し、小さなliをフロートさせて、ログインボックスと登録ボックスが1行にフロートするようにし、次に大きなボックスのcontentrightbottomboxにoverfl:hidden属性を追加します。余分な部分が非表示になったら、JS関数コードを記述できます。

JS関数1

クリックしてログインし、登録して切り替える

CSS では、小さな li フロートを使用して、ログイン ボックスと登録ボックスを一列にフロートします。

登録ボタンをクリックしたら、小さな li を囲む ul を登録ボックスに移動するだけです。

ログイン ボタンをクリックするときは、ul をログイン ボックスに移動するだけです。

コードは次のとおりです。

  var registbtn = document.querySelector('.regist');
    var loginbtn = document.querySelector('.login'); 
    var loginregistbox = document.querySelector('.loginregistbox');
    var boxul = loginregistbox.querySelector('ul');
 
    registbtn.addEventListener('click', 関数() {
        boxul.style.transition = 'すべて 0.3 秒';
        boxul.style.transform = 'translateX(-414px)';
        registbtn.style.borderBottom = '4px solid #FF6900';
        loginbtn.style.borderBottom = 'なし';
 
    });
    loginbtn.addEventListener('click', 関数() {
        boxul.style.transition = 'すべて 0.3 秒';
        boxul.style.transform = 'translateX(0px)';
        loginbtn.style.borderBottom = '4px 実線 #FF6900';
        registbtn.style.borderBottom = 'なし';
 
    });

JS関数2

入力ボックス内のテキストをクリックすると縮小され、上に移動します

Xiaomi公式サイトのログインでは、ラベルタグを使用して実装されています。入力内のプレースホルダーに直接スタイルを追加して実装します。

疑似クラスを使用してプレースホルダーのスタイルを変更し、縮小して必要な位置に移動するように配置し、トランジションを追加して見た目を少し良くします。

コードは次のとおりです。

 
    var user = document.querySelector('.user');
    var pwd = document.querySelector('.pwd');
    var pzh = document.querySelector('.pzh');
    var pmm = document.querySelector('.pmm');
 
    user.addEventListener('focus', 関数() {
        user.style.border = '1px 赤';
        user.style.boxShadow = '0 0 1px 2px #FFDECC';
        背景色を '#FCF2F3' に設定します。
        user.style.transition = 'すべて 0.3 秒';
        user.setAttribute('class', 'ユーザー変更1');
 
    });
.change1::プレースホルダー{
 位置: 絶対;
 上: 5px;
 左: 20px;
 フォントサイズ: 12px;
色: #C1C1C1;
遷移: すべて .3;
    
}
.change2::プレースホルダー{
   フォントサイズ: 17px;
       色: 赤;
       遷移: すべて .3;
   }

JS関数3

「アカウント番号を入力してください」というプロンプトが表示されます

HTMLにpタグを追加し(他のタグでもOK)、CSSでスタイルを変更し、非表示にする表示スタイルを指定します。

js でフォーカスを失ったときに、テキスト ボックスに値があるかどうかを判断します。値がある場合は非表示にし、ない場合は表示します。

コードは次のとおりです。

user.addEventListener('blur', 関数() {
 
        user.style.border = 'なし';
        user.style.boxShadow = 'なし';
        user.style.transition = 'すべて .3';
        if (user.value == '') {
            pzh.style.display = 'ブロック';
            背景色を '#FCF2F3' に設定します。
            user.setAttribute('class', 'ユーザー変更2');
        } それ以外 {
            pzh.style.display = 'なし';
            背景色を#F9F9F9に設定します。
            ユーザースタイルフォントサイズ = '17px';
 
            user.setAttribute('class', 'ユーザー変更1');
        }
    });
.rpzh、.rpmm、.rpyzm{
    表示: なし;
    色: 赤;
    フォントサイズ: 12px;
    上マージン: 10px;
    左マージン: 40px;
    下マージン: -30px;
}

JS関数4

パスワードを表示、パスワードを非表示

スイッチ画像の切り替えと入力のtype属性の値を制御するフラグ変数を定義します。

  varフラグ = 0;
    eyes.addEventListener('click', 関数() {
        フラグが0の場合
            pwd.type = 'テキスト';
            目.src = 'open.png';
            フラグ = 1;
        }
        それ以外 {
            pwd.type = 'パスワード';
            目を閉じる
            フラグ = 0;
        }
    });

Xiaomi公式サイトの登録・ログイン機能をJavaScriptで実装する方法についての記事はこれで終わりです。より関連性の高いJavaScriptコンテンツについては、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも123WORDPRESS.COMをよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JavaScriptはXiaomi Mall公式サイトの完全なページ実装プロセスを模倣します
  • JavaScript が Xiaomi のカルーセル効果を模倣
  • JS が Xiaomi カルーセルを実装
  • jsはXiaomi携帯電話のスライド効果を模倣します
  • js は Xiaomi 公式サイトの画像カルーセルの特殊効果を模倣します

<<:  小さなページングデザイン

>>:  CSS3 のフィルタプロパティの使用に関する詳細な説明

推薦する

Vue.jsはElement-uiを使用してナビゲーションメニューを実装します

この記事では、Element-uiを使用してvue.jsでナビゲーションメニューを実装するための具体...

Win10の明るさ調整効果を模倣するHTML+CSS+JSサンプルコード

HTML+CSS+JS で Win10 の明るさ調整効果を模倣コード <!doctypehtm...

HTML thead タグの定義と使用法の詳細な紹介

コードをコピーコードは次のとおりです。 <thead> <!– 最初の 2 行をヘ...

単一の MySQL テーブルで数千万のデータを処理するアイデアを共有する

目次プロジェクトの背景改善案データ特性を観察するマルチプロセスアイデアの要約データ処理スキルプロジェ...

CSS でよく発生する問題の整理 (ロゴのハッキング/コンテナの固定/画像の垂直方向の中央揃え)

1. IEブラウザモードハックロゴ1. CSSハックロゴコードをコピーコードは次のとおりです。 ie...

Nginx レベルで基本的なユーザー認証を構成する手順を完了します。

序文アプリケーション シナリオ: おそらく、内部 Web サイトは外部ユーザーにアクセス可能である必...

フロントエンドインタビューに必要なホモロジーとクロスドメインの詳細な説明

序文ご存知のとおり、ブラウザの相同性戦略とクロスドメイン方式も、フロントエンド面接で頻繁に遭遇する問...

Mysql で group_concat の長さ制限を変更する方法

MySQL には、「group_concat」という関数があります。通常の使用では問題がないかもしれ...

光るテキストとちょっとしたJS特殊効果を実現するCSS

実装のアイデア: CSSでtext-shadowを使用してテキストの光る効果を実現します効果画像: ...

CSSを使用してHTMLテキストボックス内のテキストの垂直方向の中央を制御する

Text の height 属性が定義されている場合、Text に入力されたテキストは垂直方向に中央...

nginx ip ブラックリストの動的禁止の例

ウェブサイトが悪意を持ってリクエストされた場合、IP アドレスをブラックリストに登録することは重要な...

CSS3 すりガラス効果

すりガラス効果がうまく表現されていれば、ページが非常に鮮やかで立体的に見えるようになります。写真に直...

CentOS7 は Docker のバージョン 19 をデプロイします (簡単なので、従ってください)

1. 依存パッケージをインストールする [root@localhost ~]# yum insta...

MySQLデータベース入門:データベースバックアップ操作の詳細な説明

目次1. 単一データベースのバックアップ2. 圧縮バックアップ3. マルチデータベースバックアップ4...

Linux で静的ルーティングを追加するための 2 つの実装方法の分析

ルートを追加するコマンド: 1.ルート追加route add -net 192.56.76.0 ne...