上毛印刷株式会社

【JavaScript】虫眼鏡アイコンをクリックして、検索バーを表示

【JavaScript】虫眼鏡アイコンをクリックして、検索バーを表示

2024年02月26日
WEBサイト制作
  • #HTML
  • #css
  • #JavaScript
  • #tips

こんにちは!
上毛印刷WEB制作担当のソーヤです。

今回はCMSなどを導入しているWEBサイトに使えるギミックを紹介します!

実装例


右の虫眼鏡アイコンをクリックしてください。
そうすると検索バーがヌルっと表示されます。
CMSを導入しているサイトだと結構こういったサイト内検索機能がありますよね。
シンプルなデザインのサイトとかで重宝するのではないでしょうか。

HTML例

<ul class="l-header__list">
  <li class="l-header__item">
    <a href="javascript:void(0);">English</a>
  </li>
  <li class="l-header__item">
    <a href="javascript:void(0);">よくあるご質問</a>
  </li>
  <li class="l-header__item">
    <button id="js-search">虫眼鏡アイコン</button>
    <div class="l-header__search">
    <form action="" method="get" name="">
        <input type="text" id="search" class="ti" name="search" value="" placeholder="サイト内検索">
        <label for="l-header__search" class="l-header__search__label">検索する<input type="submit" id="l-header__search"></label>
      </form>
    </div>
  </li>
</ul>

CSS例

.l-header__list{
  list-style: none;
  display: flex;
  align-items: center;
}
.l-header__item{
  box-sizing: border-box;
  padding: 0 30px;
  border-right: 1px solid #c8c8c8;
}
.l-header__item:last-of-type{
  padding: 0 0 0 30px;
  border-right: none;
  display: flex;
}
.l-header__item a{
  color: #000;
  font-size: 14px;
  transition: 0.4s ease;
}
.l-header__item a:hover{
  opacity: 0.7;
}
.l-header__search{
  width: 0;
  opacity: 0;
  transition: 0.6s ease;
  pointer-events: none;
}
.l-header__search form{
  display: flex;
  align-items: center;
}
.l-header__search input[type=text]{
  width: 80%;
  padding: 5px;
  margin: 0 10px 0 30px;
}
.l-header__search input[type=submit]{
  position: absolute;
  left: -9999px;
}
.l-header__search__label{
  cursor: pointer;
  width: 20%;
  min-width: 50px;
  padding: 6px 2px 5px 14px;
  overflow: hidden;
  font-size: 10px;
  color: #555;
  white-space: nowrap;
  border: 1px solid #c8c8c8;
  transition: 0.4s ease;
}
.l-header__search__label:hover{
  background-color: #000;
  color: #fff;
}
#js-search{
  color: transparent;
  background-color: transparent;
  border-radius: 50%;
  height: 20px;
  width: 20px;
  border: 3px solid #000;
  position: relative;
}
#js-search::before{
  content: '';
  position: absolute;
  width: 3px;
  top: 11px;
  right: -4px;
  height: 11px;
  background-color: #000;
  transform: rotate(-45deg);
}
.is-search{
  pointer-events: auto;
  display: block;
  width: 300px;
  opacity: 1;
}

JavaScript例

document.addEventListener('click', function(event) {
  if (event.target.id === 'js-search') {
    var nextElement = event.target.nextElementSibling;
    if (nextElement) {
      nextElement.classList.toggle('is-search');
    }
  }
});

まとめ

今回もjQueryではなく、Vanilla.jsで実装してみました。

コピペしてガンガン使ってください!

WEB制作担当ソーヤ

ソーヤ

上毛印刷WEB制作担当
前職は東証プライム企業の本社WEB受託チームにてフロントエンドエンジニアを3年経験。


この記事に対するご意見・ご感想・ご質問等ありましたら、
ぜひ下記フォームにてお送りください。

    お名前必須
    メールアドレス必須
    お問い合わせ内容必須
    PAGE TOP