表題の通りjavascriptでtabメニューを作ってみました。自分でほとんど調べることなく作ったのですが、修正するべきところ、もっと効率的な書き方があればご教授いただきたいです。
自分の能力では、これが悪い書き方なのか分からず困っています。
html
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <link rel="stylesheet" href="style.css"> 8 <link rel="stylesheet" href="reset.css"> 9 <title>Document</title> 10</head> 11<body> 12 13 <div class="container"> 14 <nav class="nav"> 15 <ul class="nav-list"> 16 <li class="nav-items active">Tab1</li> 17 <li class="nav-items">Tab2</li> 18 <li class="nav-items">Tab3</li> 19 <li class="nav-items">Tab4</li> 20 </ul> 21 </nav> 22 <div class="content active">tab1の内容ですtab1の内容ですtab1の内容ですtab1の内容ですtab1の内容ですtab1の内容ですtab1の内容ですtab1の内容ですtab1の内容ですtab1の内容ですtab1の内容ですtab1の内容ですtab1の内容ですtab1の内容です</div> 23 <div class="content">tab2の内容ですtab2の内容ですtab2の内容ですtab2の内容ですtab2の内容ですtab2の内容ですtab2の内容ですtab2の内容ですtab2の内容ですtab2の内容ですtab2の内容ですtab2の内容ですtab2の内容ですtab2の内容ですtab2の内容ですtab2の内容です</div> 24 <div class="content">tab3の内容ですtab3の内容ですtab3の内容ですtab3の内容ですtab3の内容ですtab3の内容ですtab3の内容ですtab3の内容ですtab3の内容ですtab3の内容ですtab3の内容ですtab3の内容ですtab3の内容ですtab3の内容ですtab3の内容ですtab3の内容です</div> 25 <div class="content">tab3の内容ですtab4の内容ですtab4の内容ですtab4の内容ですtab4の内容ですtab4の内容ですtab4の内容ですtab4の内容ですtab4の内容ですtab4の内容ですtab4の内容ですtab4の内容ですtab4の内容ですtab4の内容ですtab4の内容ですtab4の内容です</d4v> 26 </div> 27 28 29 30 31 <script src="main.js"></script> 32</body> 33</html>
scss
1 2.container{ 3 width: 500px; 4 margin: 300px auto; 5} 6 7.nav{ 8 9 &-list{ 10 display: flex; 11 12 } 13 14 15 &-items{ 16 background-color: gray; 17 color:white; 18 border-radius: 5px 5px 0px 0px; 19 padding: 5px; 20 cursor: pointer; 21 &:nth-of-type(n+2){ 22 margin-left: 5px; 23 } 24 25 &.active{ 26 background-color: rgb(36, 35, 35); 27 } 28 } 29 30} 31 32.content{ 33 display: none; 34 border: 1px solid #000; 35 text-align: center; 36 padding: 10px; 37 38 &.active{ 39 display: block; 40 41 } 42}
js
1 2document.addEventListener('DOMContentLoaded',function(){ 3 4 let navBtn = document.querySelectorAll('.nav-items') 5 navBtn.forEach(btn =>{ 6 btn.addEventListener('click', event => btnChange(event,navBtn)) 7 }) 8 9}) 10 11function btnChange(event,btn){ 12 btn.forEach(Btn =>{ 13 Btn.classList.remove('active'); 14 }) 15 let nowBtn = event.target; 16 nowBtn.classList.add('active'); 17 btn = [...btn]; 18 contentAppear(btn,nowBtn); 19} 20 21function contentAppear(btn,nowBtn){ 22 let contents = document.querySelectorAll('.content'); 23 contents = [...contents]; 24 contents.forEach(content =>{ 25 content.classList.remove('active'); 26 }); 27 28 const activeNumber = btn.indexOf(nowBtn); 29 contents[activeNumber].classList.add('active'); 30 31 32 33}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。