CSS
 Computer >> コンピューター >  >> プログラミング >> CSS

CSSでレスポンシブフォームを作成する方法を徹底解説

CSSを使用すれば、画面サイズに合わせてレイアウトが自動的に切り替わるレスポンシブフォームを簡単に作成できます。この記事では、Flexboxメディアクエリを組み合わせた実践的なサンプルコードを紹介します。

ポイントとなるCSSテクニック

このサンプルでは、以下の3つの要素がレスポンシブ化の鍵となります。

  • box-sizing: border-box … パディングやボーダーを含めて要素の幅を計算するため、レイアウト崩れを防げます。
  • display: flex と flex-wrap … フォーム項目を柔軟に横並び配置し、スペースに応じて折り返させます。
  • @media(メディアクエリ) … 画面幅が657px以下になったときに、flex-directionを「column-reverse」へ変更し、縦積みレイアウトへ切り替えます。

サンプルコード

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style>
body {
   font-family: Arial;
   font-size: 17px;
   padding: 8px;
}
* {
   box-sizing: border-box;
}
.Fields {
   display: flex;
   flex-wrap: wrap;
   padding: 20px;
   justify-content: space-around;
}
.Fields div {
   margin-right: 10px;
}
label {
   margin: 15px;
}
.formContainer {
   margin: 10px;
   background-color: #efffc9;
   padding: 5px 20px 15px 20px;
   border: 1px solid rgb(191, 246, 250);
   border-radius: 3px;
}
input[type="text"] {
   display: inline-block;
   width: 100%;
   margin-bottom: 20px;
   padding: 12px;
   border: 1px solid #ccc;
   border-radius: 3px;
}
label {
   margin-left: 20px;
   display: block;
}
.icon-formContainer {
   margin-bottom: 20px;
   padding: 7px 0;
   font-size: 24px;
}
.checkout {
   background-color: #4caf50;
   color: white;
   padding: 12px;
   margin: 10px 0;
   border: none;
   width: 100%;
   border-radius: 3px;
   cursor: pointer;
   font-size: 17px;
}
.checkout:hover {
   background-color: #45a049;
}
a {
   color: black;
}
span.price {
   float: right;
   color: grey;
}
@media (max-width: 657px) {
   .Fields {
      flex-direction: column-reverse;
   }
}
</style>
</head>
<body>
<h1 style="text-align: center;">Responsive Form Example</h1>
<div class="Fields">
<div>
<div class="formContainer">
<form>
<div class="Fields">
<div>
<h3>Register</h3>
<label for="fname">Full Name</label>
<input type="text" id="fname" name="firstname" />
<label for="email"> Email</label>
<input type="text" id="email" name="email" />
<label for="adr"> Address</label>
<input type="text" id="adr" name="address" />
</div>
<div>
<h3>Account Details</h3>
<label for="uname">Username</label>
<input type="text" id="uname" name="cardname" />
<label for="pass">Password</label>
<input type="text" id="pass" name="cardnumber" />
<div class="Fields">
<div>
<label for="accountAge">Account Age</label>
<input type="text" id="accountAge" name="accountAge" />
</div>
<div>
<label for="cvv">Security Question</label>
<input type="text" id="cvv" name="cvv" />
</div>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</body>
</html>

なお、<meta name="viewport">タグはモバイルデバイスでの正しい表示に必須です。忘れずに記述しましょう。

実行結果

上記のコードをPCなどの大きな画面で表示すると、フォーム項目がFlexboxによって横並びに配置され、以下のように表示されます。

CSSでレスポンシブフォームを作成する方法を徹底解説

一方、スマートフォンなど画面幅が657px以下になると、メディアクエリが作動してflex-directionが「column-reverse」に切り替わり、各項目が次のように縦積みで再配置されます。

CSSでレスポンシブフォームを作成する方法を徹底解説

まとめ

Flexboxによる柔軟な配置と、メディアクエリによるブレークポイントの設定を組み合わせるだけで、デバイスの画面サイズに応じた見やすいレスポンシブフォームを実現できます。ブレークポイントの数値や配色は、プロジェクトのデザインに合わせて自由にカスタマイズしてみてください。

  1. CSSで作るレスポンシブ対応のお客様の声(テスティモニアル)セクションの実装方法

    Webサイトに掲載する「お客様の声(テスティモニアル)」は、信頼性を高めるための重要な要素です。CSSを活用すれば、デスクトップでもスマートフォンでも見やすい、レスポンシブなデザインを簡単に実現できます。 この記事では、メディアクエリとfloatを使って、画面幅に応じてレイアウトが自動的に切り替わるテスティモニアルカードの作り方を解説します。 実装のポイント 基本レイアウト: プロフィール画像を float: left; で左に回り込みさせ、名前とコメントを右側に配置します。 円形画像: border-radius: 50%; を指定することで、画像を丸く表示できます。 float の解除:

  2. CSSでレスポンシブなブログレイアウトを作成する方法【完全なコード例付き】

    CSSを使ってレスポンシブなブログレイアウトを作成するには、viewportメタタグの設定と、デバイスの画面幅に応じて柔軟に調整されるレイアウト構造の定義がポイントになります。以下に、ナビゲーションバー・ブログ本文・サイドリンク・フッターを備えた、ブログサイトの完全なコード例を紹介します。 コード例 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1" /> <