📝
input のスタイルを改造する
bootstrapなどのフレームワークに頼らず、自力でがんばりたいかた向け。
最低限のスタイルの適用を目指します。
きっかけ
inputタグを書いたときのスタイルがあまりに見づらかったので
これ、どんなスタイルあてているんだろうと思った。
inputはよく使うので備忘録として残したい。
そもそもどんなスタイルなのか観察
ブラウザ・OS環境
google chrome 115.0.5790.110
Windows 10 Home
スタイルをまったく記載しないコードを書く
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div>
<label for="defalut_text">テキスト</label>
<input type="text" name="defalut_text" id="">
</div>
<div>
<input type="checkbox" name="" id="defalut_checkbox">
<label for="defalut_checkbox">チェックボックス</label>
</div>
<div>
<label for="defalut_date">日付</label>
<input type="date" name="defalut_date" id="">
</div>
<div>
<input type="radio" name="" id="defalut_radio">
<label for="defalut_radio">ラジオ</label>
</div>
<div>
<label for="defalut_email">メールアドレス</label>
<input type="email" name="defalut_email" id="">
</div>
<div>
<label for="defalut_number">数字</label>
<input type="number" name="defalut_number" id="">
</div>
<div>
<label for="defalut_tel">電話番号</label>
<input type="tel" name="defalut_tel" id="">
</div>
<div>
<label for="defalut_password">パスワード</label>
<input type="password" name="defalut_password" id="">
</div>
</body>
</html>
ブラウザ環境に依存すると思いますが、デフォルトではこんな感じです。
入力文字と枠が近くて窮屈に見えます。
改造
改造するにあたって重視した点
- 余白
- 複数
input
がある場合の見やすさ・入力しやすさ - 統一感をだしたい
変更後
改造したコード
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*,
*::before,
*::after {
box-sizing: border-box;
}
:root {
--color: #0000ff;
--color_rgb: 0, 0, 255;
}
div {
max-width: 768px;
margin: .5em;
}
input {
font-family: inherit;
font-size: inherit;
border-radius: .25rem;
border: 1px solid #707070;
outline: none;
padding: 0.375em 0.75em;
}
input:focus {
border-color: rgba(var(--color_rgb), .5);
box-shadow: 0 0 3px 1px rgba(var(--color_rgb), .5);
}
input[type="checkbox"],
input[type="radio"] {
accent-color: var(--color);
}
</style>
</head>
<body>
...以下略
</body>
</html>
ざっくり解説
- 余白
-
padding
で枠の内部に余白をつくった
なお、左右のpaddingの値は上下に指定した値の2倍にすると見やすい
/** padding: 上下 左右 */
padding: 0.375em 0.75em;
- 複数
input
がある場合の見やすさ・入力しやすさ
-
input
を囲むdiv
に対して外側に余白をつくった
もっと大きな値を指定してもいい気がする
margin: .5em;
- 統一感をだしたい
- 文字サイズやフォントを上書き指定
あまり目立たないところだが、指定するしないでは統一感が違う(正直感覚でしかないと思います。) - 入力フォームにカーソルを当てたとき(
:focus
)の色を変更
box-shadow
でぼかしをいれるとより入力していることがはっきりする - チェックボックスとラジオを選択したときの色を変更
デフォルト感がなくなるのでゼロから作りたくないときにおすすめ
/** inherit = 上位のスタイルを踏襲する ここではブラウザの設定値になる */
font-family: inherit;
font-size: inherit;
input:focus {
border-color: rgba(var(--color_rgb), .5);
box-shadow: 0 0 3px 1px rgba(var(--color_rgb), .5);
}
input[type="checkbox"],
input[type="radio"] {
accent-color: var(--color);
}
まとめ
とりあえず最低限見やすくなったかと思います。
こだわりなくてもやっぱり手間かけたほうがいいですね...
Discussion