視覚的なエラー キューのログイン ポップオーバーに「揺れる」効果を追加する
場合によっては、微妙なデザイン要素がユーザー エクスペリエンスに大きな違いをもたらすことがあります。従来のエラー メッセージを表示する代わりに、ログイン ポップオーバーの「揺れる」効果により、何か問題が発生したことが明確かつ即時に示されます。このチュートリアルでは、 バニラ JavaScript 、CSS アニメーション、およびオープンソース ライブラリ Tippy.js を使用してこの機能を実装する方法を説明します。
私たちの目的は次のとおりです:
- Tippy.js を使用してログイン ポップオーバーを作成します。
- エラー発生時の「揺れ」効果を追加します。
- シェイクが終了するとアニメーションを自動的にリセットします。
さあ、飛び込みましょう!
パート 1: CSS で揺れるアニメーションを設定する
まず、シェイク エフェクト用の再利用可能な CSS アニメーションを定義します。以下の @keyframes ルールは、左右の揺れを模倣しています:
@keyframes shaking { 10%, 90% { transform: translate3d(-1px, 0, 0); } 20%, 80% { transform: translate3d(2px, 0, 0); } 30%, 50%, 70% { transform: translate3d(-4px, 0, 0); } 40%, 60% { transform: translate3d(4px, 0, 0); } } .shake { animation: shaking 0.82s cubic-bezier(.36,.07,.19,.97) both; }
- キーフレームの詳細 :translate3d プロパティは、ポップオーバーをわずかに左右に移動して揺れる効果を作成します。
- 再利用可能なクラス : シェイク クラスを任意の要素に適用すると、アニメーションがトリガーされます。
パート 2: Tippy.js を使用してログイン ポップオーバーを作成する
Tippy.js を使用して、クリック可能なログイン ポップオーバーを作成します。ポップオーバーには以下が含まれます:
- 電子メール入力フィールド。
- 「サインイン」ボタン。
- サインイン ロジックとシェイク エフェクトを処理するイベント リスナー。
ポップオーバーを設定するためのコア JavaScript は次のとおりです。
ステップ 1: サインイン クラス
APP.Signin = class { constructor($target) { this.values = {}; // Store any required state if ($target) this.$target = $target; // The DOM element triggering the popover this.init(); // Initialize the popover return this; } // Trigger the shake animation shake() { this.$tippy.classList.add('shake'); return this; } // Handle Sign-In button clicks onSigninClicked(event) { event.preventDefault(); // Retrieve the entered email let email = document.querySelector('.app-signin-email').value; // Error and success handlers let _onError = () => this.shake(); let _onSuccess = (response) => { if (response.errors.length) { this.shake(); // Shake on error } else { // Handle successful login console.log('Login successful!'); } }; // Simulate a backend login request let form_data = new FormData(); form_data.append('method', 'quickSignIn'); form_data.append('email', email); axios({ method: 'POST', url: 'path/to/server', data: form_data, headers: { 'content-type': 'application/x-www-form-urlencoded;charset=UTF-8' }, }) .then((response) => (typeof response.data === 'string' ? JSON.parse(response.data) : response.data)) .then(_onSuccess) .catch(_onError); } // Define the HTML content of the popover getContent() { return ` <div> <hr> <p><strong>2228+ FREE</strong> <u><b><strong>RESOURCES</strong></b></u> <strong>FOR DEVELOPERS!! ❤️</strong> ?? <strong><sub><strong>(updated daily)</strong></sub></strong></p> <blockquote> <p>1400+ Free HTML Templates<br><br> 359+ Free News Articles<br><br> 69+ Free AI Prompts<br><br> 323+ Free Code Libraries<br><br> 52+ Free Code Snippets & Boilerplates for Node, Nuxt, Vue, and more!<br><br> 25+ Free Open Source Icon Libraries</p> </blockquote> <p>Visit dailysandbox.pro for free access to a treasure trove of resources!</p> <hr> <h3> Part 3: Wiring It All Together </h3> <p><strong>Simulated Backend</strong> : If you don’t have a real server, mock responses with a promise:<br> </p> <pre class="brush:php;toolbar:false">const mockServer = (email) => new Promise((resolve, reject) => { setTimeout(() => { if (email === 'test@email.com') resolve({ errors: [] }); else reject({ errors: ['Invalid email'] }); }, 500); });
ポップオーバーの CSS : ポップオーバーがデザインと一致していることを確認します。簡単なセットアップは次のとおりです:
.app-signin { display: flex; flex-direction: column; gap: 10px; } .app-signin-email { width: 100%; padding: 10px; font-size: 1rem; border: 1px solid #ccc; border-radius: 4px; } .app-signin-btn { background-color: #007bff; color: white; text-align: center; padding: 10px; border-radius: 4px; cursor: pointer; } .app-signin-btn:hover { background-color: #0056b3; }
HTML トリガー要素 : HTML にトリガー要素を追加します:
<hr> <h3> パート 4: シェイク効果をテストする </h3> <ol> <li> <strong>サインイン</strong> ボタンをクリックしてポップオーバーを開きます。</li> <li>無効なメールアドレスを入力して送信してください。エラーを示すポップオーバーの揺れを確認してください。</li> <li>有効な電子メールを入力すると、揺れは表示されず、成功しました!</li> </ol> <hr> <h3> 結論: ユーザーフレンドリーなエラーキュー </h3> <p>シェイキング効果は、余分なメッセージで UI を乱雑にすることなく、明確で直感的なエラー インジケーターを提供することでユーザー エクスペリエンスを向上させます。洗練されたポップオーバーを実現する Tippy.js と対話性を実現するバニラ JS を組み合わせたこのセットアップは、クリーンで機能的で、見た目も魅力的です。</p> <p>優れた UX は細部にこそ重要なので、実験と調整を続けてください。</p> <p>Web 開発に関するその他のヒントについては、<strong>DailySandbox</strong> をチェックし、<strong>無料のニュースレター</strong>に登録して時代の先を行きましょう!</p>
以上が視覚的なエラー キューのログイン ポップオーバーに「揺れる」効果を追加するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











新しいプロジェクトの開始時に、SASSコンピレーションは瞬く間に起こります。これは、特にbrowsersyncとペアになっている場合は素晴らしい気分です。

今週のプラットフォームニュースのラウンドアップで、Chromeは、Web開発者のロード、アクセシビリティ仕様、およびBBCの動きのための新しい属性を導入します

これは私が初めてHTML要素を見ていることです。私はしばらくの間それを知っていましたが、まだスピンしていませんでした。かなりクールです

購入またはビルドは、テクノロジーの古典的な議論です。自分で物を構築することは、あなたのクレジットカードの請求書にはラインアイテムがないため、安価に感じるかもしれませんが

今週のラウンドアップ、タイポグラフィを検査するための便利なブックマークレットである。

しばらくの間、iTunesはポッドキャストの大きな犬だったので、「ポッドキャストにサブスクライブ」をリンクした場合:

CSSやJavaScript(および画像とフォントなど)などのアセットにファーアウトキャッシュヘッダーを確実に設定する必要があります。それはブラウザを伝えます
