Birkaç saattir uğraşıyorum lakin bir türlü halledemedim, bir de buraya atayım dedim.
Olayı anlatmam gerekirse şu şekilde:
.menus.list.item.active'in ID'sini .vertical-menu.menu.content'in ID'siyle karşılaştırıp eşleşme durumunda eşleşen .vertical-menu.menu-content'in ID'siyle eşleşen Class'tan .hidden'ı silecek ve öncekine de .hidden ekleyecek.
Olayı anlatmam gerekirse şu şekilde:
.menus.list.item.active'in ID'sini .vertical-menu.menu.content'in ID'siyle karşılaştırıp eşleşme durumunda eşleşen .vertical-menu.menu-content'in ID'siyle eşleşen Class'tan .hidden'ı silecek ve öncekine de .hidden ekleyecek.
HTML:
<div class="content contentimg">
<div class="menus" id="menuContainer">
<div class="list">
<div class="item" id="a1">
<div>FOODS</div>
<img src="img/3.png">
</div>
<div class="item active" id="a2">
<div>DRINKS</div>
<img src="img/2.png">
</div>
<div class="item" id="a3">
<div>DESSERTS</div>
<img src="img/1.png">
</div>
</div>
<div class="arow">
<button class="prev" id="prev" onclick="toggleHiddenClass();"><</button>
<button class="next" id="next" onclick="toggleHiddenClass();">></button>
</div>
</div>
<!-- Your menu content here -->
<div class="vertical-menu">
<div class="menu-content hidden" id="a1">
<!-- Menu 1 items here -->
<div>Menu 1 Item 1</div>
<div>Menu 1 Item 2</div>
<div>Menu 1 Item 3</div>
</div>
<div class="menu-content" id="a2">
<!-- Menu 2 items here -->
<div>Menu 2 Item 1</div>
<div>Menu 2 Item 2</div>
<div>Menu 2 Item 3</div>
</div>
<div class="menu-content hidden" id="a3">
<!-- Menu 3 items here -->
<div>Menu 3 Item 1</div>
<div>Menu 3 Item 2</div>
<div>Menu 3 Item 3</div>
</div>
</div>
</div>
CSS:
:root{
--width-circle: 150vw;
--radius: calc(100vw / 6);
}
.contentimg {
background-color: #141414;
}
.menus{
width: 100vw;
height: 88vh;
overflow: hidden;
position: relative;
margin-top: -50px;
}
.menus .list{
position: relative;
width: max-content;
height: 100%;
display: flex;
justify-content: start;
align-items: center;
transition: transform 0.8s;
pointer-events:none;
}
.menus .list .item{
width: calc(var(--radius) * 2);
text-align: center;
transform: rotate(45deg);
transition: transform 1s;
}
.menus .list .item.active{
transform: rotate(0deg);
}
.menus .list .item img{
width: 90%;
filter: drop-shadow(0 0 20px #000);
}
.menus .list .item div{
font-family: 'Times New Roman', Times, serif;
font-size: larger;
opacity: 0;
}
.menus .list .item.item.active div{
font-family: 'Times New Roman', Times, serif;
font-size: larger;
opacity: 1;
transition: 1.5s ease-out;
}
.menus .content{
position: relative;
bottom: 5%;
left: 50%;
transform: translateX(-50%);
text-align: center;
color: #eee;
width: max-content;
}
.menus .content div:nth-child(2){
font-size: 5rem;
text-transform: uppercase;
letter-spacing: 10px;
font-weight: bold;
position: relative;
}
.menus .content div:nth-child(2)::before{
position: relative;
left: 60%;
bottom: 50%;
width: 80px;
height: 80px;
content: '';
background-image: url(img/leaves.png);
background-size: cover;
background-repeat: no-repeat;
}
.menus .content div:nth-child(1){
text-align: left;
text-transform: uppercase;
transform: translateY(20px);
}
.menus .content button{
border: 1px solid #eee5;
background: transparent;
color: #eee;
font-family: Poppins;
letter-spacing: 5px;
border-radius: 20px;
padding: 10px 20px;
}
#prev,
#next{
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 50px;
height: 50px;
border-radius: 50%;
background-color: transparent;
border: 1px solid #eee9;
background-color: #eee5;
color: #eee;
font-size: x-large;
font-family: monospace;
cursor: pointer;
z-index: 15;
}
#prev{
left: 50px;
}
#next{
right: 50px;
}
.hidden {
display: none;
}
JavaScript:
function toggleHiddenClass() {
var activeMenuItem = document.querySelector('.menus .list .item.active');
if (activeMenuItem) {
var activeMenuId = activeMenuItem.getAttribute('id');
if (activeMenuId) {
var activeMenuData = document.getElementById(activeMenuId)?.getAttribute('id');
if (activeMenuData) {
var verticalMenuContent = document.getElementById(activeMenuData);
if (verticalMenuContent) {
var matchedElements = document.querySelectorAll('.' + activeMenuData);
matchedElements.forEach(function(element) {
if (element.classList.contains('hidden')) {
element.classList.remove('hidden');
} else {
element.classList.add('hidden');
}
});
} else {
console.error("Vertical menu content bulunamadı.");
}
} else {
console.error("Active menu id içeriği alınamadı.");
}
} else {
console.error("Active menu item için id bulunamadı.");
}
} else {
console.error(".menus .list .item.active bulunamadı.");
}
}
toggleHiddenClass();
Son düzenleyen: Moderatör: