WordPressの検索フォームをレスポンシブに対応するSass(CSS)のコード

  • 更新日:
  • 公開日:

WordPressのウィジェットや関数get_search_form()で出力される検索フォームをレスポンシブに対応するSassとCSSのコードを公開いたします

ブラウザは最新のモノしか考慮していないのでご了承ください。

WordPressのデフォルトの検索フォーム

対応するHTML(PHP)のコードはCodexに書いてある、デフォルトで出力されるコードとなります。以下のコードですね(HML5版のみです)。

<form role="search" method="get" class="search-form" action="<?php echo home_url( '/' ); ?>">
    <label>
        <span class="screen-reader-text"><?php echo _x( 'Search for:', 'label' ) ?></span>
        <input type="search" class="search-field" placeholder="<?php echo esc_attr_x( 'Search …', 'placeholder' ) ?>" value="<?php echo get_search_query() ?>" name="s" title="<?php echo esc_attr_x( 'Search for:', 'label' ) ?>" />
    </label>
    <input type="submit" class="search-submit" value="<?php echo esc_attr_x( 'Search', 'submit button' ) ?>" />
</form>

この検索フォームをレスポンシブ化します。

WordPressの検索フォームをレスポンシブ化するSassコード

こちらがSassコードです。Gistにて公開しております。変数でフォームの高さ、フォントサイズ、ボタンの色やトランジションの設定を変更できるようにしていますので、適宜変更し使用してみてください。

「searchform.php」の方は、デフォルトの検索フォームのボタン要素をinputからbuttonに変更したバージョンです。buttonならアイコンフォントなどが扱いやすくなるため、おまけとしてPHPコードを追加しています。

CSS版はこちら

SassをCSS化したものはこちらになります。

.search-form {
    overflow: hidden;
    clear: both;
    position: relative;
    width: 100%;
    height: 48px;
    box-sizing: border-box;
}

.search-form label,
.search-form input,
.search-form button {
    height: 100%;
    box-sizing: border-box;
}

.search-form input,
.search-form button {
    display: block;
    position: absolute;
    top: 0;
    font-size: 16px;
}

.search-form label {
    display: block;
    position: relative;
    margin-right: 24%;
}

.search-form input {
    margin: 0;
}

.search-form input:not([type="submit"]) {
      left: 0;
      padding: 4px 16px;
      width: 100%;
      border: solid 1px #ccc;
      border-right: none;
      border-radius: 4px 0 0 4px;
}

.search-form button,
.search-form input[type="submit"] {
    right: 0;
    width: 24%;
    padding: 0;
    line-height: 48px;
    color: #fff;
    border: none;
    border-radius: 0 4px 4px 0;
    background: #2f78d0;
    transition: all 0.3s ease-in-out;
}

.search-form button:hover,
.search-form input[type="submit"]:hover {
      background: #508ed8;
}

.search-form button > * {
      line-height: 48px;
}

.search-form .screen-reader-text {
    clip: rect(1px 1px 1px 1px);
    clip: rect(1px, 1px, 1px, 1px);
    height: 1px;
    overflow: hidden;
    position: absolute !important;
    width: 1px;
}

書いた人

Symbol Mark

Ryoichi(しつ)

除菌ティッシュを買い込んで使いきれずによく乾かす人。

療養目的で退職し、どうやって生きていくか模索中。最近は勉強目的でLaravelやVue.js弄ったり、趣味で音で遊んでます。

※2019年10月16日現在ブログリニューアル中です。崩れなどが発生していたらすみません。

うぇぶ: @s_ryone