0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

虫眼鏡アイコンをクリックしても検索フォームが出てこない

Last updated at Posted at 2024-12-15

-Ruby on Railsのバージョン:7.2.1
-Rubyのバージョン:3.3.5

Rails初学者です。
備忘録として記載します。

image.png

上記の虫眼鏡アイコンをクリックしたら、

スクリーンショット 2024-12-15 11.28.14.png

のように検索ボックスを表示するようにしたかったが、クリックしても表示されない事象が起きた
コードを下記に記載する

<div class="search_container">
  <div class="search_icon" onclick="toggleSearch()">
    <i class="fas fa-search"></i><!-- Font Awesomeの虫眼鏡アイコン -->
  </div>
  <div class="search-form hidden">
    <%= form_with url: search_path, class: "form-inline", data: { turbo: false } do |f| %>
      <%= f.text_field :word, placeholder: "検索", class: "search-input" %>
      <%= f.submit "検索", class: "btn-search" %>
    <% end %>
  </div>
</div>

<script>
  function toggleSearch() {
    const searchForm = document.querySelector('.search-form');
    if (searchForm) {
    searchForm.classList.toggle('hidden');
    }
  }
</script>
.search-container {
  position: relative;
}

.search-icon {
  cursor: pointer;
  font-size: 20px;
  color: #333;
}

.search-icon:hover {
  color: #555;
}

/* 検索フォーム */
.search-form {
  position: absolute;
  top: 0;
  right: 100;
  display: flex;
  align-items: center;
  background-color: #fff;
  border: 1px solid #ccc;
  border-radius: 5px;
  padding: 5px 10px;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}

.hidden {
  display: none;
}

.search-input {
  border: none;
  outline: none;
  font-size: 16px;
  padding: 5px;
  margin-right: 10px;
}

.btn-search {
  background-color: #007bff;
  color: white;
  border: none;
  padding: 5px 10px;
  border-radius: 5px;
  cursor: pointer;
}

.btn-search:hover {
  background-color: #0056b3;
}

結論

.search-form {
  position: absolute;
  top: 100%; ←こいつが変なことしてた、消したら動作してほしい挙動になった
  left: 0;
  display: flex;
  align-items: center;
  background-color: #fff;
  border: 1px solid #ccc;
  border-radius: 5px;
  padding: 5px 10px;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}

.search-formの中でposition: absolute;を使用しているので、基準となるのは親要素である.search-containerになる。
これに対して、フォームの位置をtopやrightで指定してるが親要素を基準にtop: 100%を指定したことによってフォームが変なところにいっちゃったみたい。
あと%で指定してたからってのもあるっぽい。

指摘等あればお願いします。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?