1
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?

More than 1 year has passed since last update.

【基本シリーズ】タブメニューの実装

Last updated at Posted at 2023-02-01

See the Pen tab UI(js) by wataruNakai (@wataruNakai) on CodePen.

jsを使って情報量が多いサイトなどによくみられる、タブメニューの実装を行います。基本動作としてはsectionにactiveクラスを付与する機能になります。

jsのコードを上から解説していきます。
まず.menu li aタグをmenuItemsに格納。
次に.contentとクラスをcontentsに格納します。

aタグをクリックした時の処理をforEach文を使って実装していきます。

a要素ですが、リンク先にページ遷移するという規定の動作があるのですが、それをキャンセルしたいので、こちらにイベントオブジェクトを渡して preventDefault()をよんであげます。

次にクリックされていない要素にはactiveクラスを外す様に、forEach文を使ってremoveメソッドを呼んできてあげます。
今回引数は、clickedItemとitem2種類あります。
それぞれ引数にわたってくる要素はクリックされたa要素(clickedItem)とクリックされていないa要素(item)です。

その下にはクリックしたらactiveクラスを付与するメソッドを記述します。

次はクリックしたメニューに応じて content のほうも変えていきます。

全てのcontentに対してactiveクラスを削除したあとにクリックしたメニュー項目に応じて、対応したcontentにだけactiveクラスを付けてあげます。

data-id というカスタムデータ属性を使って、値を紐付けてあげます。
htmlにそれぞれdata-id="about"のようにidを振ります。
そしてjsで以下のようにDOMの取得を行います。

document.getElementById(clickedItem.dataset.id).classList.add('active')

日本語に直すとクリックされたa要素(menuItems)のデータセット属性IDとそれぞれのセクションのIDが一致するところにactiveクラスを付与するといった意味になります。

・JS
js.png

・HTML
code.png

・CSScss.png

1
0
0

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
1
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?