toggle
토글 메뉴 공부
보여지는 결과는 같다.
1번
<style>
body{
text-decoration: none;
}
.nav {
visibility: hidden;
width: 100%;
height: 0vh;
margin-top: 10px;
background: linear-gradient(180deg, rgb(91, 50, 241) 0%, rgb(236, 149, 48) 100%);
transition: all 0.3s;
}
.h {
cursor: pointer;
border-bottom: 1px solid lightcyan;
padding: 10px 15px;
border: transparent;
border-radius: 10px;
color: #333;
}
</style>
</head>
<body>
<div class="h" onclick="openNav()">x</div>
<ul class="nav">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
<script>
function openNav() {
if (document.querySelector('.nav').style.visibility === "hidden") { console.log("dd");
document.querySelector('.nav').style.visibility = 'visible';
document.querySelector('.nav').style.height = '80vh';
document.querySelector('.h').textContent = 'O';
} else { console.log("ss");
document.querySelector('.nav').style.visibility = 'hidden';
document.querySelector('.nav').style.height = '0vh';
document.querySelector('.h').textContent = 'x';
}
}
</script>
</body>
2번
<style>
body{
text-decoration: none;
}
.nav {
visibility: hidden;
width: 100%;
height: 0vh;
margin-top: 10px;
background: linear-gradient(180deg, rgb(91, 50, 241) 0%, rgb(236, 149, 48) 100%);
transition: all 0.3s;
}
.h {
cursor: pointer;
border-bottom: 1px solid lightcyan;
padding: 10px 15px;
border: transparent;
border-radius: 10px;
color: #333;
}
</style>
</head>
<body>
<div class="h" onclick="openNav()">O</div>
<ul class="nav">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
<script>
function openNav() {
const nav = document.querySelector('.nav');
const h = document.querySelector('.h');
if (nav.style.visibility === "hidden") { console.log("dd");
nav.style.visibility = 'visible';
nav.style.height = '80vh';
h.textContent = 'X';
} else { console.log("ss");
nav.style.visibility = 'hidden';
nav.style.height = '0vh';
h.textContent = 'O';
}
}
</script>
</body>
3번
<style>
.nav {
visibility: hidden;
width: 100%;
height: 0vh;
margin-top: 10px;
background: linear-gradient(180deg, rgb(91, 50, 241) 0%, rgb(236, 149, 48) 100%);
transition: all 0.3s;
}
.act {
visibility: visible;
height: 60vh;
}
.h {
cursor: pointer;
background-color: skyblue;
padding: 10px 15px;
border: transparent;
border-radius: 10px;
color: #fff;
}
</style>
</head>
<body>
<div class="h">x</div>
<ul class="nav">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
<script>
const h = document.querySelector('.h');
const nav = document.querySelector('.nav');
h.addEventListener('click', () => {
console.log(h);
console.log(nav);
nav.classList.toggle('act');
})
</script>
참고
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=curlicu&logNo=40139919116
[ Javascript ] 엘리먼트 보이기 / 숨기기
■ 엘리먼트 보이기 / 숨기기 <title...< p=""> </title...<>
blog.naver.com
display none이 transition이 안먹히는 이유
해결방법 말고 원인 궁금하지 않나요..?🤓
velog.io
https://goddino.tistory.com/129
[js] 자바스크립트 toggle 적용하기(ft. add, remove)
자바스크립트를 이용한 toggle 메서드의 사용을 알아보겠습니다. toggle() 토글이란, on/off switch의 개념으로 스위치를 켰다, 껐다 하는 기능을 가지고 있습니다. add()와 remove() 메서드를 한번에
goddino.tistory.com
https://developer.mozilla.org/ko/docs/Web/API/EventTarget/addEventListener
EventTarget.addEventListener() - Web API | MDN
EventTarget의 addEventListener() 메서드는 지정한 이벤트가 대상에 전달될 때마다 호출할 함수를 설정합니다.
developer.mozilla.org
https://codepen.io/Ellen27/pen/Pozajya
display visivility transition
...
codepen.io
[자바스크립트] classList.add/ remove / contains / toggle
코딩을 할 때 효과적인 방식은 html은 html파일에만 쓰고 css는 css파일에만 쓰고 자바스크립트는 로직만 처리하게끔 분리하는것이다.간단한 예시로 어떻게 자바스크립트가 로직을 처리하며 html과
velog.io
한 군데 더 있었는데 못찾겠다.
혹시 잘못된 게 있다면 댓글 부탁드린다.