자바스크립트로 '버튼을 누르면 하단의 메뉴 리스트를 보이게 만들면 된다.'
//상단의 내비게이션 코드 - bootstrap
<nav class="navbar navbar-light bg-light">
<div class="container-fluid">
<span class="navbar-brand">Navbar</span>
<button class="navbar-toggler" type="button" id="navbtn">
<span class="navbar-toggler-icon"></span>
</button>
</div>
</nav>
//하단의 메뉴 리스트 - bootstrap
<div class="listgroup">
<ul class="list-group">
<li class="list-group-item">An item</li>
<li class="list-group-item">A second item</li>
<li class="list-group-item">A third item</li>
<li class="list-group-item">A fourth item</li>
<li class="list-group-item">And a fifth one</li>
</ul>
</div>
방법1.
1. 하단의 메뉴 리스트를 숨긴다.
2. 버튼을 누르면 메뉴 리스트를 보이게 만든다.
1. 하단의 메뉴 리스트를 숨긴다.
.listgroup{
visibility : hidden;
}
2. 버튼을 누르면 메뉴 리스트를 보이게 만든다.
-> Css에서 visibility를 visible로 바꾸도록 JavaScript 코드를 짠다.
<script>
document.getElementById('navbtn').addEventListener('click',function(){
document.getElementsByClassName('listgroup')[0].style.visibility = 'visible';
});
</script>
navbtn이라는 Id를 가진 버튼에 addEventListener로 이벤트가 발생하면 동작할 수 있도록 코드를 짠다.
이때는 'click' , 버튼을 클릭했을 때 콜백함수를 실행시켜 준다.
listgroup이라는 class 이름을 가진 요소 중 위에서부터 1번째를 찾아와서 그 안에 있는 css class(지금은 listgroup)의 style, visibility의 속성을 visible로 바꿔라.
(심화)
누를 때마다 메뉴 리스트가 보였다가 안 보였다가 하는 방법
<script>
var count = 0;
document.getElementById('navbtn').addEventListener('click',function(){
count++;
if(count % 2 == 1){
document.getElementsByClassName('listgroup')[0].style.visibility = 'visible';
}else{
document.getElementsByClassName('listgroup')[0].style.visibility = 'hidden';
}
});
</script>
설명
웹 페이지에서 오른쪽 버튼을 눌러 '검사'를 클릭한다.
그러면 사진과 같은 화면이 뜨는데, 여기서 console을 클릭하면
겉으로는 아무 동작하지 않는 것처럼 보이지만, 여기서 내부 동작을 살펴볼 수 있다.
<script>
var count = 0;
document.getElementById('navbtn').addEventListener('click',function(){
count++;
});
</script>
count라는 변수를 선언해 주었고, navbtn이라는 Id를 가진 버튼에 addEventListener로 click이벤트(버튼을 클릭하는 이벤트)가 발생할 시 count에 저장된 숫자가 한 개씩 증가하도록 설정해 주었다. 위 동영상을 보면 count가 콘솔창에 하나씩 증가하는 모습을 볼 수 있다.
그러면 count 값이 처음에는 0이었고, 가려진 상태였으며
한 번 눌렀을 때 1이 되고, 메뉴 리스트가 뜨며
두 번 눌렀을 때 2가 되고, 메뉴리스트가 가려지며
세 번 눌렀을 때 3이 되고, 메뉴 리스트가 뜬다.
...
이렇게
짝수 번째에는 가려지고 홀수 번째에는 메뉴 리스트가 뜬다.
그럼 그런 식으로 조건식을 걸어서 짝수일 땐 뜨도록 홀수일 때는 메뉴 리스트가 뜨도록 한다.
<script>
var count = 0;
document.getElementById('navbtn').addEventListener('click',function(){
count++;
if(count % 2 == 1){
document.getElementsByClassName('listgroup')[0].style.visibility = 'visible';
}else{
document.getElementsByClassName('listgroup')[0].style.visibility = 'hidden';
}
});
</script>
홀수일 땐, listgroup이라는 class 이름을 가진 요소를 찾아 그 css class의 visibility라는 속성을 visible이라고 바꿔줬고
짝수일 땐, listgroup이라는 class 이름을 가진 요소를 찾아 그 css class의 visibility라는 속성을 hidden이라고 바꿔주었다.
//jQuery로 짜면
<script>
var count = 0;
$('#navbtn').on('click',function(){
count++;
if(count % 2 == 1){
$('.listgroup').css('visibility','visible')
}else{
$('.listgroup').css('visibility','hidden')
}
});
</script>
방법2.
1. 메뉴리스트를 평소에 가려두는 class를 만들고
2. 보이도록 만든 class를
3. 1번에 만든 class 옆에 부착하도록 JavaScript 코드를 짠다.
1. 메뉴 리스트를 평소에 가려두는 class를 만들고
.listgroup{
visibility: hidden;
}
<div class="listgroup">
<ul class="list-group">
<li class="list-group-item">An item</li>
<li class="list-group-item">A second item</li>
<li class="list-group-item">A third item</li>
<li class="list-group-item">A fourth item</li>
<li class="list-group-item">And a fifth one</li>
</ul>
</div>
메뉴리스트를 감싸고 있는 div 박스를 listgroup라는 class로 만든다.
2. 보이도록 만든 class를
.listgroup{
visibility: hidden;
}
.show{
visibility: visible;
}
3. 1번에 만든 class 옆에 부착한다.
<script>
document.getElementById('navbtn').addEventListener('click',function(){
document.getElementsByClassName('listgroup')[0].classList.toggle('show');
});
</script>
navbtn 이라는 Id를 가진 버튼에 'click' 이벤트가 발생할 때마다 콜백 함수를 실행시켜 주세요.
콜백 함수 -> listgroup이라는 class를 가지고 있는 html 요소 중 위에서부터 1번째인 것을 가져와, classList에(<div class="listgroup">) show라는 클래스를 toggle로 땠다 붙였다 해주세요(<div class="listgroup show">) || (<div class="listgroup">)이런 식으로
//jQuery로 짰을 때
<script>
$('#navbtn').on('click',function(){
$('.listgroup').toggleClass('show');
});
</script>
'IT 공부 > JavaScript' 카테고리의 다른 글
Node.js - Mac (0) | 2023.07.30 |
---|---|
[JS] form을 이용하여 사용자에게 입력받기 - 공백 차단 로그인편(간단) (0) | 2023.06.27 |
[JS] 모달창에 애니메이션 주기 (0) | 2023.06.27 |
[JS] 모달창 띄우기 (0) | 2023.06.27 |
[JS] 셀렉터 종류 - getElementById, getElementsByClassName, querySelector (0) | 2023.06.24 |