반응형
.menu {
list-style: none;
padding: 0;
margin: 0;
width: 200px;
background-color: #f1f1f1;
}
.menu li {
border-bottom: 1px solid #ccc;
}
.menu li:last-child {
border-bottom: none;
}
.menu li a {
display: block;
color: #333;
padding: 10px;
text-decoration: none;
}
.menu li.active a {
background-color: #175D91;
color: white;
}
.menu li:hover a {
background-color: #4CAF50;
color: white;
}
.menu li.hover a {
background-color: #36769E;
color: white;
}
<ul class="menu">
<li class="active"><a href="#">메뉴1</a></li>
<li><a href="#">메뉴2</a></li>
<li><a href="#">메뉴3</a></li>
<li><a href="#">메뉴4</a></li>
<li><a href="#">메뉴5</a></li>
<li><a href="#">메뉴5</a></li>
<li><a href="#">메뉴5</a></li>
<li><a href="#">메뉴5</a></li>
<li><a href="#">메뉴5</a></li>
</ul>
var menuItems = document.querySelectorAll('.menu li a');
// Get the current page URL
const currentPage = window.location.href;
// Set the currentPage cookie or local storage
// Here, we will use local storage
localStorage.setItem('currentPage', currentPage);
// Check if the stored value exists and set the active class to the corresponding menu item
menuItems.forEach(function(item) {
const storedValue = localStorage.getItem('currentPage');
if (storedValue === item.href) {
item.parentElement.classList.add('active');
}
// Remove active class from all items when clicked
item.addEventListener('click', function() {
menuItems.forEach(function(item) {
item.parentElement.classList.remove('active');
});
// Add active class to clicked item
this.parentElement.classList.add('active');
// Store the current page URL
localStorage.setItem('currentPage', this.href);
});
item.addEventListener('mouseover', function() {
this.parentElement.classList.add('hover');
});
item.addEventListener('mouseout', function() {
this.parentElement.classList.remove('hover');
});
});
파라미터를 사용하는 게시판에서도 적용되게 '&'를 기준
var menuItems = document.querySelectorAll('.menus li a');
// Get the base part of the current page URL
const currentPageBase = window.location.href.split('&')[0];
// Set the currentPage cookie or local storage
localStorage.setItem('currentPage', currentPageBase);
// Check if the stored value exists and set the active class to the corresponding menu item
menuItems.forEach(function(item) {
const storedValue = localStorage.getItem('currentPage');
const menuItemBase = item.href.split('&')[0];
if (storedValue === menuItemBase) {
item.parentElement.classList.add('active');
}
// Remove active class from all items when clicked
item.addEventListener('click', function() {
menuItems.forEach(function(item) {
item.parentElement.classList.remove('active');
});
// Add active class to clicked item
this.parentElement.classList.add('active');
// Store the base part of the current page URL
const clickedItemBase = this.href.split('&')[0];
localStorage.setItem('currentPage', clickedItemBase);
});
item.addEventListener('mouseover', function() {
this.parentElement.classList.add('hover');
});
item.addEventListener('mouseout', function() {
this.parentElement.classList.remove('hover');
});
});
반응형
'html&php' 카테고리의 다른 글
래디오 버튼을 이용한 선택에 따른 내용 출력하기 - 기본값 (0) | 2023.10.05 |
---|---|
래디오 버튼을 이용한 선택에 따른 내용 출력하기 (0) | 2023.10.05 |
탭 메뉴 · 마우스를 메뉴에 올리면 자동으로 내용 나오게 하기 (0) | 2023.04.05 |
스크롤을 내려도 위에 떠있는 메뉴 (0) | 2023.03.23 |
앵커 클릭 시 스크롤 바, 스스륵~~ 효과 (0) | 2023.03.23 |