📝

input のスタイルを改造する

2023/08/05に公開

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>

ブラウザ環境に依存すると思いますが、デフォルトではこんな感じです。
入力したあとの画面
入力文字と枠が近くて窮屈に見えます。

改造

改造するにあたって重視した点

  1. 余白
  2. 複数 input がある場合の見やすさ・入力しやすさ
  3. 統一感をだしたい

変更後

スタイルを適用した入力したあとの画面

改造したコード

<!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>

ざっくり解説

  1. 余白
  • padding で枠の内部に余白をつくった
    なお、左右のpaddingの値は上下に指定した値の2倍にすると見やすい
    /** padding: 上下 左右 */
    padding: 0.375em 0.75em;
  1. 複数 input がある場合の見やすさ・入力しやすさ
  • input を囲む div に対して外側に余白をつくった
    もっと大きな値を指定してもいい気がする
    margin: .5em;
  1. 統一感をだしたい
  • 文字サイズやフォントを上書き指定
    あまり目立たないところだが、指定するしないでは統一感が違う(正直感覚でしかないと思います。)
  • 入力フォームにカーソルを当てたとき(: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