카테고리 없음
[베이직 포트폴리오] 반짝 반짝 토글 버튼
개춘기뽀삐
2024. 9. 6. 13:38
마우스를 올리거나 클릭 시 색상이 3가지로 변경되는 효과
클릭한 메뉴 버튼은 색상변경 효과가 유지된 상태이다
js 안 쓰려했는데 <details> , <summary> 태그로는 원하는 대로 토글을 만들 수 없을 거 같아 js를 적용했다
이쁘니까 괜찮아..
@keyframes ToggleBlinky으로 색상을 지정해 주고 클릭한 li에 active 클래스명을 추가하면 끝
<nav class="toggleBtn-container">
<ul>
<li class="toggleBtn" data-target="aboutSection">About</li>
<li class="toggleBtn" data-target="skillSection">Skill</li>
<li class="toggleBtn" data-target="projectsSection">Projects</li>
<li class="toggleBtn" data-target="activitiesSection">Activities</li>
</ul>
</nav>
.toggleBtn-container {
margin: 15vh 0 10vh 0;
font-size: 2vw;
ul {
display: flex;
justify-content: space-around;
list-style: none;
}
li:hover {
cursor: pointer;
animation: ToggleBlinky 1s linear infinite;
}
li.active {
animation: ToggleBlinky 1s linear infinite;
}
}
@keyframes ToggleBlinky {
0% {
color: blue;
}
50% {
color: red;
}
100% {
color: green;
}
}
.section-content {
display: none;
}
.section-content.active {
display: flex;
justify-content: center;
width: 100%;
}
const toggleBtns = document.querySelectorAll(".toggleBtn");
toggleBtns.forEach((btn) => {
btn.addEventListener("click", () => {
const targetId = btn.getAttribute("data-target");
const targetSection = document.getElementById(targetId);
// 클릭한 버튼의 상태 확인
const isActive = btn.classList.contains("active");
// 모든 버튼에서 active 클래스 제거
toggleBtns.forEach((button) => {
button.classList.remove("active");
});
// 모든 섹션을 숨김
document.querySelectorAll(".section-content").forEach((section) => {
section.classList.remove("active");
});
if (!isActive) {
// 클릭한 버튼이 비활성 상태일 때만 active 클래스 추가
btn.classList.add("active");
// 클릭한 버튼의 타겟 섹션만 보이게 함
if (targetSection) {
targetSection.classList.add("active");
}
}
});
});