スマホ対応じゃない問い合わせフォームを「とりあえず」レスポンシブにする方法

WordPress個別サポート

最近のテーマや問い合わせフォームのプラグインでは多くがレスポンシブ対応でしょうから心配ないかもしれませんが、問題は自作のフォームです。

tableタグの中にフォーム要素をレイアウトして自力で問い合わせフォームを作る場合もあります。たとえば、次のようなタグです。

<form>
 <table>
  <tr>
   <th>お名前</td>
   <td><input type="text" name="uname"></td>
  </tr>
  <tr>
   <th>メールアドレス</td>
   <td><input type="text" name="from"></td>
  </tr>
  <tr>
   <th>タイトル</td>
   <td><input type="text" name="title"></td>
  </tr>
  <tr>
   <th>メッセージ</td>
   <td><textarea rows="5" name="naiyou"></textarea></td>
  </tr>
  <tr>
   <td colspan="2"><input type="submit" value="内容を確認"></td>
  </tr>
 </table>
</form>

言うまでもなく、PC画面で見た場合は問題ありません。

PC画面で表示した問い合わせフォーム
PC画面で表示した問い合わせフォーム

レスポンシブではないテーマでスマホ表示すると、次のように右端が切れるかもしれません。

スマホで見るとフォームの右端が切れる
スマホで見るとフォームの右端が切れる

抜本的にレスポンシブ対応するには、じっくり検討する必要がありますが、最も単純な“スマホ対応”は、テーブルの幅を画面いっぱいにする方法です。

table {
    width: 100%;
}

これで問い合わせフォームは画面に収まりますが、幅が狭く入力しづらいかもしれません。

フォームを画面幅におさめる“スマホ対応”
フォームを画面幅におさめる“スマホ対応”

そんなときは横に並んだテーブルのセルをバラバラにして単純に上から下に表示する方法があります。たとえば、次のようなイメージです。

各セルを上から下に表示する
各セルを上から下に表示する

このように表示するには、テーブルの各セルをテーブル形式のレイアウトではなくブロックとして表示します。

たとえば、次のようなCSSを使います。

@media (max-width: 480px) {
    table {
        width: 100%;
    }

    table th,
    table td {
        display: block;
    }
}

これにより、tableタグで作成したテーブルが表形式ではなくブロックとしてバラバラになり、上記の図のように上から下に表示されます。

実際に使うにはもう少しカスタマイズが必要な場合があります。