フォーカスすると幅が広がる!検索したくなる検索ボックス!
ある程度ブログの記事数が多くなってきたら、ユーザーが目的の記事を見つけやすいように「ブログ内検索」をつけるべきでしょう。
検索ボックスは目の付きやすいヘッダーにつけることが多いですが、ヘッダーは他にも表示したい項目が多く、場所がせまい場合が多いです。とくにスマホからの表示を考えると置き場所に困ります。
そんな時は、フォーカスがあたると幅が広がる検索ボックスにするとスペースがなくても検索ボックスを配置できます。
ソースコード&プレビュー
まずはいつも通りソースコードとプレビューからです。虫眼鏡のアイコンをクリックすると、ぬめっとエディットボックスが広がります。思わず検索したくなりますね。
ソースコードの解説
虫眼鏡アイコンとエディットボックスを作る
まずはHTMLで虫眼鏡アイコンとエディットボックスを作ります。
form
要素にinput
要素を入れ子にして作ります。form
要素にはFontAwesomeで虫眼鏡のアイコンをつけ、input
要素でエディットボックスと送信ボタンを表示します。
HTML
<form method="get" class="fa fa-search search-form" action="https://bgt-48.blogspot.com/search">
<input type="search" placeholder="キーワードを入力して、Enter" value="" name="q" class="search-text" />
<input type="submit" value="Search" />
</form>
Bloggerでは、https://bgt-48.blogspot.com/search?q=キーワード
というURLを入力すると検索が行われます。そのため、form
要素のaction
属性にはhttps://bgt-48.blogspot.com/search
を、input
要素のname
属性にはq
を入力しています。これらとユーザーが入力したキーワードが結合されて最終的にhttps://bgt-48.blogspot.com/search?q=キーワード
というURLを生成されます。
この部分は使用しているサイトによって異なりますので、それぞれのサイトに適した形に編集してください。
送信ボタンを非表示にする
今回は送信ボタンは使用しないため、display: none
で常に非表示にします。
CSS
.search-form input[type="submit"] {
display: none;
}
虫眼鏡アイコンとエディットボックスを重ねる
さて、次にCSSで虫眼鏡アイコンとエディットを重ねていきます。
from
要素にposition: relative;
を、input
要素にposition: absolute;
を指定します。これで、虫眼鏡アイコンとエディットボックスが重なります。
CSS
.search-form {
display: block;
position: relative;
}
.search-form:before, .search-text {
position: absolute;
top: 0;
left: 0;
width: 3em;
height: 3em;
margin: 0;
border-radius: 1.5em;
font-size: 1em;
}
top: 0;
とleft: 0;
、margin: 0
を指定し、左上を原点にぴったりと重なります。(今回はアイコンを左に寄せて表示するため、left: 0
としていますが、右上に表示させたい場合はright: 0
にします。)
width: 3em
とheight: 3em
はアイコンの大きさです。border-radius: 1.5em
をつけて角丸にしています。
font-size: 1em
もアイコンとエディットボックスをピッタリ重なるようにするための指定です。アイコンのフォントサイズとエディットボックスのフォントサイズが違うとぴったり重ならないため、フォントサイズを指定しています。
アイコンとエディットボックスの重なり順を指定する
次にアイコンとエディットボックスの重なり順を指定します。
エディットボックスはアイコンより手前に表示されてほしいので、z-index
で重なり順を制御します。数値の大きいほうが手前に表示されます。
CSS
.search-form:before {
z-index: 100;
}
.search-text {
z-index: 200;
}
フォーカスがあたったら幅を広げる
次にアイコンをクリックしたら幅を広げるようにします。
これまでのCSSでアイコンとエディットボックスがピッタリ重なっている状態となっています。通常はエディットボックスを透明にしておいて、フォーカスが当たった場合に表示しつつ幅を広げます。
CSS
.search-text {
opacity: 0;
}
.search-text:focus {
opacity: 1;
width: 100%;
}
なので、じつはアイコンをクリックしたようにみせて、実はエディットボックスをクリックしています。
アイコンとエディットボックスを装飾する
最後にアイコンとエディットボックスを装飾していきます。
CSS
.search-form:before {
line-height: 3em;
background: #65b1e4;
color: #FFF;
text-align: center;
}
.search-text {
cursor: pointer;
transition: .5s;
outline: 0;
border: solid 1px #ccc;
border-radius: 1.5em;
padding-left: 1em;
}
まとめ
フォーカスすると幅が広がる検索ボックスの設置方法を紹介しました。
にょきにょきっと表示される検索ボックスは目を引きます。思わず検索したくなる検索ボックスがです。通常はコンパクトに表示されていて、置き場所にも困りません。ぜひあなたのブログにも設置してみてください。
最後まで読んでいただきありがとうございます。
また読んでくださいませ。
そんじゃーね。