カテゴリ: CSS 更新日: 2026/04/10

CSSのvalidとinvalidの使い方を完全ガイド!バリデーション状態を表現する方法

:valid・:invalidでバリデーション状態を表現する方法
:valid・:invalidでバリデーション状態を表現する方法

先生と生徒の会話形式で理解しよう

生徒

「メールアドレスを入力したときに、形式が正しいと緑色になって、間違っていると赤くなるような仕組みって作れますか?」

先生

「はい、CSSのvalidとinvalidという機能を使えば、入力内容が正しいかどうかをリアルタイムで見た目に反映できますよ。」

生徒

「プログラミングが必要だと思っていました!CSSだけでもできるんですね。」

先生

「その通りです。バリデーションと呼ばれる入力チェックの状態を、初心者の方でも簡単にデザインする方法を解説しますね!」

1. 入力チェックを表現するバリデーションとは?

1. 入力チェックを表現するバリデーションとは?
1. 入力チェックを表現するバリデーションとは?

ウェブサイトでお問い合わせフォームや会員登録フォームに文字を入力するとき、内容が正しいかどうかをコンピュータが判定することをバリデーション(入力検証)と呼びます。例えば、「メールアドレスなのにアットマークがない」といった間違いを教えてくれる機能のことです。

パソコンを初めて触る方にとって、自分が正しく入力できているかどうか不安になるものです。そこで、CSSのvalid(バリッド:有効・正しい)とinvalid(インバリッド:無効・正しくない)という疑似クラスを使うと、見た目で「正解」か「不正解」を伝えることができます。これにより、ユーザーにとって優しいホームページを作成することが可能になります。

2. validセレクタで正しい入力を知らせる仕組み

2. validセレクタで正しい入力を知らせる仕組み
2. validセレクタで正しい入力を知らせる仕組み

validは、入力欄に書かれた内容が、あらかじめ決められたルールに合格しているときに適用されるスタイルです。例えば、「必須項目に文字が入っている」「メールアドレスの形式として正しい」といった条件を満たしたときに反応します。

ルールに合格したときに枠線を緑色にしたり、チェックマークを表示させたりすることで、ユーザーは「これで大丈夫だ」と安心して送信ボタンを押すことができます。このように、ユーザーを安心させる設計は、サイトの信頼性を高める上で非常に重要です。


<style>
    /* 入力内容が正しい(valid)ときのスタイル */
    .input-check:valid {
        border: 2px solid #28a745;
        background-color: #f1f8f1;
    }
</style>

<div class="p-3">
    <label>お名前(必須):</label>
    <input type="text" class="input-check" required placeholder="文字を入力してください">
</div>
ブラウザ表示

3. invalidセレクタで間違いをリアルタイムに指摘する

3. invalidセレクタで間違いをリアルタイムに指摘する
3. invalidセレクタで間違いをリアルタイムに指摘する

対してinvalidは、入力内容がルールに違反しているときに適用されます。メールアドレスの形式が間違っていたり、必須項目が空のままだったりする場合に反応します。このとき、枠線を赤くしたり、背景に薄い赤色を敷いたりすることで、直感的に「修正が必要な場所」をユーザーに伝えることができます。

プログラミング未経験の方でも、「間違っている=赤色」という共通の認識を利用することで、操作に迷わないデザインを作ることができます。ただし、最初から真っ赤だとユーザーが威圧感を感じてしまうこともあるため、使い所を考えるのもプロの技の一つです。


<style>
    /* 入力内容が間違っている(invalid)ときのスタイル */
    .mail-check:invalid {
        border: 2px solid #dc3545;
        background-color: #fff5f5;
    }
</style>

<div class="p-3">
    <label>メールアドレス:</label>
    <input type="email" class="mail-check" value="invalid-email" placeholder="example@mail.com">
    <p class="small text-muted">アットマークがないのでエラーになります。</p>
</div>
ブラウザ表示

4. 電話番号や数字の桁数をチェックする応用設定

4. 電話番号や数字の桁数をチェックする応用設定
4. 電話番号や数字の桁数をチェックする応用設定

バリデーションは、特定の形式だけでなく、「文字数」や「数字の範囲」をチェックすることも可能です。HTML側でminlength(最小文字数)やpattern(特定の形式)を設定しておけば、それに連動してCSSがvalidかinvalidかを判断してくれます。

例えば、電話番号の入力欄で「10文字以上でないとエラー」といった設定をした場合、入力が足りない間は赤く表示され、規定の文字数を超えた瞬間に緑色に変わるような動きが作れます。こうしたリアルタイムな反応は、ユーザーにとって非常に使いやすく、入力の手間を減らすことに繋がります。


<style>
    /* 8文字以上12文字以下のルールに合わない場合 */
    .tel-input:invalid {
        border: 2px solid #ffa500;
    }
    /* ルールに合格した場合 */
    .tel-input:valid {
        border: 2px solid #28a745;
    }
</style>

<div class="p-3">
    <label>電話番号(ハイフンなし):</label>
    <input type="tel" class="tel-input" pattern="[0-9]{10,11}" placeholder="09012345678">
    <p class="small">10桁から11桁の数字を入力してください。</p>
</div>
ブラウザ表示

5. プレースホルダー表示中にはスタイルを当てないコツ

5. プレースホルダー表示中にはスタイルを当てないコツ
5. プレースホルダー表示中にはスタイルを当てないコツ

必須項目(required)を設定すると、ページを開いた直後の何も入力していない状態でも、いきなり「invalid(未入力エラー)」と判断されて赤くなってしまうことがあります。これでは、ユーザーをいきなり怒っているようで不親切です。

これを回避するために、placeholder-shown(プレースホルダー・ショーン)という機能を併用することがよくあります。これは「まだ何も書かれていないとき」を指す状態で、これを利用することで「入力を始めた後に、間違いがあれば赤くする」といったスマートな挙動を実現できます。こうした細かい調整が、プロのデザインと初心者のデザインの分かれ目になります。

6. アイコンを自動で切り替える視覚的おもてなし

6. アイコンを自動で切り替える視覚的おもてなし
6. アイコンを自動で切り替える視覚的おもてなし

色を変えるだけでなく、CSSの疑似要素(::afterなど)を使ってアイコンを表示させると、さらに効果的です。合格したら「OK」のマーク、不合格なら「×」のマークを表示させることで、視覚的に訴えかける力が強まります。

アクセシビリティ(どんな人でも使いやすいこと)の観点からも、色だけに頼らずに「形」や「マーク」で情報を伝えることは非常に大切です。色の見え方が異なる方や、小さな画面で見ている方にとっても、マークによる判定は大きな助けとなります。SEO対策においても、このような使いやすさ(UX)の向上は非常にポジティブな要素として働きます。


<style>
    /* 成功時に緑色の影をつける */
    .status-check:valid {
        box-shadow: 0 0 8px rgba(40, 167, 69, 0.5);
    }
    /* 失敗時に赤色の影をつける */
    .status-check:invalid {
        box-shadow: 0 0 8px rgba(220, 53, 69, 0.5);
    }
    .status-check {
        padding: 8px;
        border-radius: 8px;
        border: 1px solid #ccc;
    }
</style>

<div class="p-3">
    <label>ユーザーID(英数字5文字以上):</label>
    <input type="text" class="status-check" pattern="[A-Za-z0-9]{5,}" required>
</div>
ブラウザ表示

7. 送信ボタンと連動させて操作性を向上させる

7. 送信ボタンと連動させて操作性を向上させる
7. 送信ボタンと連動させて操作性を向上させる

バリデーションの状態は、入力欄だけでなく他の要素と組み合わせることもできます。例えば、フォーム全体が「valid(すべて正しく入力された)」状態になるまで、送信ボタンをクリックできないようにしたり、色を変えて目立たなくさせたりすることが可能です。

これは、以前は複雑なプログラミングが必要だった動作ですが、最新のCSSでは簡単な記述で実現できるようになってきています。不完全な内容で送信ボタンを押してしまうミスを物理的に防ぐことができるため、システムへの不要な負担を減らし、ユーザーの手間も省けるという一石二鳥の効果があります。

8. 入力チェックが効かない時の確認ポイント

8. 入力チェックが効かない時の確認ポイント
8. 入力チェックが効かない時の確認ポイント

設定したはずのバリデーションが動かないときは、HTML側の設定をまず確認しましょう。特にtype="email"type="tel"のように、入力の種類を正しく指定しているかが重要です。ただのtype="text"にしていると、メールアドレスの形式チェックなどは働かないからです。

また、requiredという単語を書き忘れていないかもチェックしましょう。これは「必須」という意味の言葉で、これがついていないと、空欄の状態は「ルール違反ではない」と判断され、valid扱いになってしまいます。一つひとつの単語の意味を理解しながら、丁寧にコードを書いていきましょう。

9. 今後のサイト制作に活かせるバリデーションの重要性

9. 今後のサイト制作に活かせるバリデーションの重要性
9. 今後のサイト制作に活かせるバリデーションの重要性

今回学んだvalidとinvalidは、ただ色を変えるだけの機能ではありません。サイトを訪れるユーザーとの「対話」を助ける大切なツールです。正しい入力には称賛の意を込めて明るい色を、間違いには優しく注意を促す落ち着いた赤色を。こうした配慮ができるようになると、あなたの作るサイトは格段に魅力的になります。

検索エンジンのGoogleも、「ユーザーが使いやすいサイト」を非常に高く評価します。バリデーションを適切に設定し、入力ミスを最小限に抑える工夫をすることは、結果としてSEO対策を強化することにも繋がるのです。初心者の方も、まずは自分の作ったフォームを触ってみて、色が切り替わる楽しさを実感しながら学習を進めてみてくださいね!

2026年最新 スキルアップ・実践セミナー

【60分集中】Flexboxを完全攻略!最新CSS3で「崩れない・迷わない」モダンUI構築セミナー

「魅せる力」をコードで実現。CSS3でモダンWebデザインのプロトタイピングを。

本講座では、単に色を変えるだけではなく、「ユーザーを迷わせないUIデザイン」「崩れないレイアウト設計」の本質を学びます。最新のCSS3とモダンなレイアウト手法を通じて、プロの現場で通用する「美しさと機能性を両立した実装力」を最短距離で習得します。

具体的なワークショップ内容と環境

【つくるもの】
HTMLで作成した骨組みに対し、商用サイトでも採用される「スタイリッシュなカード型UI」や「レスポンシブなナビゲーション」を構築します。色の選定基準や余白(ホワイトスペース)の黄金比など、デザインの理論をコードに落とし込む工程を体験してください。

【開発環境】
フロントエンド開発の標準であるVisual Studio Code (VS Code)を継続使用。CSSの記述を効率化するプラグインや、ブラウザのデベロッパーツール(検証機能)を駆使して、リアルタイムでデザインを微調整するプロのワークフローを再現します。

この60分で得られる3つの技術資産

1. 現代のデファクトスタンダード「Flexbox」

要素の横並びや中央揃えを自由自在に操り、どんなデバイスでも崩れないレスポンシブな配置術を完全理解します。

2. メンテナンス性を高めるCSS設計の基礎

後から修正しやすい「壊れにくいコード」の書き方を伝授。プロの現場で必須となる命名規則の考え方を学びます。

3. パフォーマンスと美しさの両立

画像の最適化や軽量な装飾技法など、ページの表示速度を落とさずに高級感のある演出を行うテクニックを習得します。

※本講座は、HTMLの基礎を終えた後のステップアップ講座です。Webデザイナー、UIデザイナー、フロントエンドエンジニアへの道を切り開く「魅せる技術」を、モクモク独自のパーソナル指導で着実に定着させます。

【60分集中】Flexboxを完全攻略!最新CSS3で「崩れない・迷わない」モダンUI構築セミナー

リラックスしながら、学ぶことが大切です。しっかりと基礎を理解しましょう!

各回少人数・マンツーマン形式で徹底サポート

このセミナーの詳細・お申し込みはこちら
カテゴリの一覧へ
新着記事
New1
CSS
CSSのline-heightで読みやすさアップ!初心者でも簡単にできる行間の調整方法
New2
CSS
CSSのフォントファミリー指定を完全解説!初心者でも分かるおすすめ書体の使い方
New3
Bootstrap
Bootstrapポップオーバー入門!data-bs-toggle="popover"とtitle・contentを完全解説
New4
Bootstrap
Bootstrapでカードグリッドのギャラリーを作ろう!初心者でもわかるgapと等高カラムのスターターテンプレート
人気記事
No.1
Java&Spring記事人気No1
CSS
CSSで要素のサイズを自動調整!autoとfit-contentの使い方
No.2
Java&Spring記事人気No2
CSS
CSSのダブルボーダーや点線・破線を完全ガイド!初心者でもわかるdotted・dashed・doubleの使い方
No.3
Java&Spring記事人気No3
HTML
HTML iframeタグの使い方|外部ページ埋め込みの基本を初心者向けに解説
No.4
Java&Spring記事人気No4
Bootstrap
Bootstrap 5ボタン入門:.btn・.btn-primaryの種類とサイズ・形を初心者向けに完全解説
No.5
Java&Spring記事人気No5
CSS
CSSでテキストの折り返しを完全解説!初心者でもわかる基本と注意点
No.6
Java&Spring記事人気No6
CSS
CSSのスクロール可能なボックスを作る方法!初心者でもわかるoverflowとheightの使い方
No.7
Java&Spring記事人気No7
Bootstrap
Bootstrapのテーブル固定ヘッダー完全ガイド!position: stickyとoverflowの実用レシピ
No.8
Java&Spring記事人気No8
Bootstrap
ASP.NET/BlazorでのBootstrap 5設定方法を完全ガイド!初心者向けレイアウトと静的ファイル管理