zukucode
主にWEB関連の情報を技術メモとして発信しています。

テキストボックスの幅を100%にしたときに親要素からはみ出る問題を解決する

CSSでテキストボックスの幅を100%にしたときに親要素からはみ出る問題を解決する方法を紹介します。

以下のように、親要素に対して100%のサイズのテキストボックスを配置すると、親要素をはみ出してしまいます。

<div style="width: 300px; border: solid 1px #000;">
  <div>
    <input type="text" style="width: 100%;" value="幅100%">
  </div>
  <div>
    <input type="text" style="width: 50%;" value="幅50%">
  </div>
</div>

原因

テキストボックスのサイズ(100%)に枠線(ボーダー)の幅は含まれていません、

そのため、100%のテキストボックス + 左右のボーダー1pxずつがトータルの幅になり、親要素を超えてしまいます。

対処法

サイズにボーダーの幅も含めて計算したい場合は、box-sizing: border-box;のスタイルを指定します。

box-sizing: border-box;を指定した要素はサイズの計算にボーダー(border)の幅と余白(padding)の幅を含めるようになります。(100%の幅の中にボーダーや余白が含まれる)

<div style="width: 300px; border: solid 1px #000;">
  <div>
    <input type="text" style="width: 100%; box-sizing: border-box;" value="幅100%">
  </div>
  <div>
    <input type="text" style="width: 50%; box-sizing: border-box;" value="幅50%">
  </div>
</div>


関連記事

  • CSS 要素の背景色を透明・半透明にする方法

    要素の背景色を透明・半透明にする方法を紹介します。例えば、以下のように緑背景にボタンを置いた場合を考えます。ボタンの背景色を透明にして、文字だけにしたい場合は以下のようにします。transparent...


  • CSS transitionでスタイルの変化をアニメーションする

    transitionを使って、スタイルの変化をアニメーションで表現する方法を紹介します。例えば以下のように、マウスオーバーすると擬似クラスが適用されて横幅が伸びる要素があるとします。このときの横幅の変...


  • CSS テーブルのセル内の文字列の折り返しの制御を行う方法

    テーブルのセル内の文字列の折り返しの制御を行う方法を紹介します。以下は、セルの幅を200pxに指定しているのですが、半角英数字の長い文字列があると、セルの幅を無視してセルが伸びてしまいます。テーブルの...


  • CSS テーブルのセルで入りきらない文字列をカットして表示する

    CSSでテーブルのセルで入りきらない文字列をカットして表示する方法を紹介します。以下のようなtableのとき、tdの要素に対して以下のようにスタイルを設定します。white-space: nowrap...


  • CSS テーブルのセルの中身を文字寄せする方法

    テーブルのセルの中身を文字寄せする方法を紹介します。文字寄せするスタイルはtext-alignやvertical-alignを使用しますが、テーブルのセルの場合でも同じように指定します。以下のようなテ...


  • CSS 要素が入り切らない場合にスクロールバーを表示する方法

    要素が入り切らずにはみ出してしまうときにスクロールバーを表示する方法を紹介します。以下のように、サイズを指定した親要素の中に、入り切らないテキストなどがあると、親要素をはみ出してしまいます。overf...


  • CSS 縦または横のみにスクロールバーを表示する方法

    要素が入り切らずにはみ出してしまうときにスクロールバーを表示する方法をCSS 要素が入り切らない場合にスクロールバーを表示する方法で紹介しました。overflowのスタイルは縦と横の両方のスクロールバ...


  • CSS ローディングアニメーションを作成する

    CSSのスタイルのみでローディングアニメーションを作成する方法を紹介します。以下のようなローディングアニメーションを作成します。適用しているスタイルを1つづつ解説します。まずはローディングアニメーショ...


  • CSS リンクボタンの下線を消す方法

    リンクボタンの下線を消す方法を紹介します。以下は何もスタイルを指定していない状態のリンクボタンです。ブラウザによって多少は異なりますが、青色で下線の付いたテキストになります。文字に下線を付けるスタイル...


  • CSS テキストボックスのサイズを設定する

    CSSでテキストボックスのサイズを設定する方法を紹介します。サイズを設定するには以下のように、テキストボックスの要素に対してwidth: サイズ;とheight: サイズ;の形式で指定します。親要素の...