入力ボックスのプレースホルダーアニメーションと入力検証を実現する純粋なCSS

入力ボックスのプレースホルダーアニメーションと入力検証を実現する純粋なCSS

さらに興味深いコンテンツについては、https://github.com/abc-club/free-resources をご覧ください。

背景

さっそく、純粋な CSS を使用して次の効果を実現してみましょう。

答えはイエスです。

これは、css:placeholder-shown:valid:invalid疑似クラスとhtml5入力パターン属性の助けを借りて実現できます。

:placeholder-shown 疑似クラスの現在の互換性は次のとおりです。

:placeholder-互換性を表示

コードに直接! ☺️

ソースコード

https://jsbin.com/qenucaz/edit?html、css、出力

html:

<!DOCTYPE html>
<html>
<ヘッド>
  <メタ文字セット="utf-8">
  <meta name="ビューポート" content="width=デバイス幅">
  <title>JS ビン</title>
</head>
<本文>
  <div class="入力ボックス">
    <input class="input-fill" placeholder="メール" pattern="^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$" 必須>
    <a href="javascript:" class="clear">閉じる</a>
    <label class="input-label">メール</label>
</div>
</本文>
</html>

css:

.入力フィル{
  幅: 100%;
  マージン: 0;
  フォントサイズ: 16px;
  行の高さ: 1.5;
  アウトライン: なし;
  パディング: 20px 16px 6px;
  境界線: 1px 透明の実線;
   背景: #f5f5fa;
  境界線の半径:10px;
  トランジション: 境界線の色 .25s;
}
.input-fill:placeholder-shown::placeholder {
    色: 透明;
    
}
.入力ボックス{
  幅: 50%;
    位置: 相対的;
}
.入力ラベル {
    位置: 絶対;
    左: 16px; 上: 14px;
    ポインタイベント: なし;
    色:#BEC1D9;
   パディング: 0 2px;
    変換の原点: 0 0;
    ポインタイベント: なし;
    移行: すべて .25;
}
.input-fill:not(:placeholder-shown) ~ .input-label,
.input-fill:focus ~ .input-label {
    変換: スケール(0.75) 移動(0px, -14px);    
}
.input-fill:フォーカス{
  境界線: 2px実線 #1d31aa;
}

。クリア{
  位置:絶対;
  上:10px;
  右:-20px;
   表示: なし;
    移行: すべて .25;
}
.input-fill::-ms-clear { 表示: なし; }
.input-fill:not(:placeholder-shown) + .clear { display: inline; }

.input-fill:有効{
 境界線の色: 緑;
 ボックスシャドウ: インセット 5px 0 0 緑;
}
.input-fill:not(:placeholder-shown):invalid {
 境界線の色: 赤;
 ボックスシャドウ: インセット 5px 0 0 赤;
}

もっと

さらに興味深いコンテンツについては、https://github.com/abc-club/free-resources をご覧ください。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

<<:  MySQL テーブルスペースの断片化の概念と関連する問題の解決策

>>:  HTMLタグオーバーフロー処理アプリケーション

推薦する

Vue ローカルコンポーネントデータ共有 Vue.observable() の使用

コンポーネントが詳細になるにつれて、複数のコンポーネントが状態を共有する状況に遭遇するでしょう。Vu...

Ubuntu ブート自動起動サービス設定

Ubuntu でサービスを作成し、自動的に起動する方法: 1. [/lib/systemd/syst...

サーバー同時実行数の推定式と計算方法

最近、サーバーのストレステストを再度行う必要が出てきました。ここでは、最近学んだ見積もりスキームと見...

MySQL マルチテーブルクエリの詳細な説明

いつも、気づかないうちに時間というのは驚くほど早く過ぎていきます。小暑が過ぎ、中暑に突入しました。太...

Vue プロジェクトの最初の画面のパフォーマンス最適化コンポーネントの実践ガイド

目次Vue ファースト スクリーン パフォーマンス最適化コンポーネント説明するインターセクションオブ...

js データ型とその判定方法の例

js データ型基本データ型: 数値、文字列、ブール値、未定義、null、シンボル、参照データ型: オ...

Javascriptでオブザーバーモードを実装する方法を教えます

目次オブザーバーパターンとは何ですか?シナリオシミュレーションコードの実装コードのリファクタリング要...

CSS クリアフロートクリア:both サンプルコード

今日はフロートのクリアについてお話します。フロートのクリアについてお話する前に、フロートとは何かを理...

MySQL を使用した分散ロックの実装

導入分散システムでは、分散ロックは最も基本的なツール クラスです。たとえば、支払い機能を備えた 2 ...

js はマウスによる画像の切り替えを実装します (タイマーなし)

この記事の例では、マウス切り替え画像を実現するためのjsの具体的なコードを参考までに共有しています。...

このポイントのJavaScriptの基本

目次これ方法オブジェクト内これを隠した厳密モード要約するJavaScript の this も不思議...

MySQLのバックアップとリカバリの簡単な分析

目次1. はじめに2. バックアップとリカバリの簡単な定義3. 復旧計画で考慮すべきいくつかの要素4...

Linux のメモリ管理とアドレス指定の詳細な紹介

目次1. コンセプトメモリ管理モード住所種別分類例: 2. ページ管理x86 アーキテクチャ 32 ...