フォームのスタイリング(2)
こんにちは。おかゆです。
フォームのスタイリング練習の続きです。
今回は、以下の2と3です。
目標:ベーシックなフォームのスタイリングが出来るようになる。
簡単なお問い合わせフォームを想定して、以下を配置する。
- お名前
- メールアドレス
- お問い合わせ内容
- 送信ボタン
ラベルと、入力部品の関係は、以下3パターン。
この配置についてはLuke Wroblewski氏の研究を参照(LukeW | Top, Right or Left Aligned Form Labels)
1. ラベルが入力部品の上で、全体が左寄せ 前回挑戦済!
2. ラベルと入力部品が横並びで、ラベルが右寄せ
3. ラベルと入力部品が横並びで、ラベルが左寄せ
いずれも送信ボタンは中央寄せ
簡単なお問い合わせフォームを想定して、以下を配置する。
- お名前
- メールアドレス
- お問い合わせ内容
- 送信ボタン
ラベルと、入力部品の関係は、以下3パターン。
この配置についてはLuke Wroblewski氏の研究を参照(LukeW | Top, Right or Left Aligned Form Labels)
1. ラベルが入力部品の上で、全体が左寄せ 前回挑戦済!
2. ラベルと入力部品が横並びで、ラベルが右寄せ
3. ラベルと入力部品が横並びで、ラベルが左寄せ
いずれも送信ボタンは中央寄せ
以下、目標2の「ラベルと入力部品が横並びで、ラベルが右寄せ」の結果。
<body> <form action="" method="post"> <div class="form_group"> <label for="name">お名前</label> <input type="text" name="name" id="name"> </div> <div class="form_group"> <label for="email">メールアドレス</label> <input type="text" name="email" id="email"> </div> <div class="form_group"> <label for="message">お問い合わせ内容</label> <textarea name="message" id="message"></textarea> </div> <div class="form_group"> <input type="submit" value="送信"> </div> </form> </body>
* { box-sizing: border-box; } body { font-family: Arial, Helvetica, sans-serif; font-size: 16px; } .form_group { width: 500px; margin: 0 auto 15px; display: flex; } label { width: 150px; text-align: right; padding-right: 15px; } input[type="text"] { padding: 5px; width: calc(100% - 150px); } textarea { height: 200px; width: calc(100% - 150px); padding: 5px; } input[type="submit"] { width: 400px; height: 50px; padding: 10px; margin: 0 auto; font-size: 16px; color: #fff; background-color: #F20C0C; border: none; border-radius: 100vh; cursor: pointer; } input[type="submit"]:hover { opacity: 0.8; }
以下、目標3の「ラベルと入力部品が横並びで、ラベルが左寄せ」の結果。
<body> <form action="" method="post"> <div class="form_group"> <label for="name">お名前</label> <input type="text" name="name" id="name"> </div> <div class="form_group"> <label for="email">メールアドレス</label> <input type="text" name="email" id="email"> </div> <div class="form_group"> <label for="message">お問い合わせ内容</label> <textarea name="message" id="message"></textarea> </div> <div class="form_group"> <input type="submit" value="送信"> </div> </form> </body>
* { box-sizing: border-box; } body { font-family: Arial, Helvetica, sans-serif; font-size: 16px; } .form_group { width: 500px; margin: 0 auto 15px; display: flex; } label { width: 150px; padding-right: 15px; } input[type="text"] { padding: 5px; width: calc(100% - 150px); } textarea { height: 200px; width: calc(100% - 150px); padding: 5px; } input[type="submit"] { width: 400px; height: 50px; padding: 10px; margin: 0 auto; font-size: 16px; color: #fff; background-color: #F20C0C; border: none; border-radius: 100vh; cursor: pointer; } input[type="submit"]:hover { opacity: 0.8; }
わかったこと、考えたこと
- 送信ボタンにカーソルが当たった時に少し色が薄くなるとクリックしやすいかな、と思いhover設定した。
- どうやら、親要素をdisplay: flex;とすると、子要素のinline要素のアイテムはblock要素になるみたい。
- 参考にした研究記事にもある通り、3はラベルと入力部品が離れている感じがして、入力しようと思うと「この入力欄で良かったかな?」とラベルに対応した入力部品の把握に時間がかかる印象。項目数にもよるが、表のように項目ごとに区切り線が入るとわかりやすくなりそう。
試している間にまた疑問も沸いたので、また試しながらまとめて投稿します!
(なんだか画像が大きいですね・・・今度サイズ調整します・・・)