Qo'zg'aluvchi menyu yarating
Bosish orqali ochiladigan/yiqilib tushadigan menyu yarating:
P.S. Manba hujjatning HTML/CSS-ni o’zgartirish kerak.
HTML/CSS
Avval HTML/CSS yarataylik.
Menyu sahifada mustaqil grafik komponent bo’lgani uchun uni bitta DOM elementiga joylashtirish yaxshiroq.
Menyu elementlari ro’yxati ul/li
ro’yxat sifatida joylashtirilishi mumkin.
Mana misol tuzilma:
<div class="menu"> <span class="title">Shirinliklar (menga bosing)!</span> <ul> <li>Tort</li> <li>Donut</li> <li>Asal</li> </ul> </div>
Biz sarlavha uchun <span>
dan foydalanamiz, chunki <div>
da yashirin display:block
bor va u gorizontal kenglikning 100% ini egallaydi.
Mana shunday:
<div style="border: solid red 1px" onclick="alert(1)">Shirinliklar (menga bosing)!</div>
Shuning uchun agar biz unga onclick
o’rnatsak, u matn o’ng tomonidagi bosilishlarni ushlaydi.
<span>
yashirin display: inline
ga ega bo’lgani uchun, u barcha matnni sig’dirish uchun aynan yetarli joy egallaydi:
<span style="border: solid red 1px" onclick="alert(1)">Shirinliklar (menga bosing)!</span>
Menyuni almashtirish
Menyuni almashtirish o’qni o’zgartirishi va menyu ro’yxatini ko’rsatishi/yashirishi kerak.
Bu barcha o’zgarishlar CSS tomonidan mukammal tarzda boshqariladi. JavaScript da biz .open
sinfini qo’shish/olib tashlash orqali menyuni joriy holatini belgilashimiz kerak.
Busiz menyu yopiq bo’ladi:
.menu ul { margin: 0; list-style: none; padding-left: 20px; display: none; } .menu .title::before { content: '▶ '; font-size: 80%; color: green; }
…Va .open
bilan o’q o’zgaradi va ro’yxat ko’rinadi:
.menu.open .title::before { content: '▼ '; } .menu.open ul { display: block; }
To’liq ishlayotgan misol
<!DOCTYPE html> <html> <head> <style> .menu { cursor: pointer; font-family: Arial, sans-serif; } .menu ul { margin: 0; list-style: none; padding-left: 20px; display: none; } .menu .title::before { content: '▶ '; font-size: 80%; color: green; } .menu.open .title::before { content: '▼ '; } .menu.open ul { display: block; } .menu li { padding: 2px 0; } </style> </head> <body> <div class="menu" id="menu"> <span class="title">Shirinliklar (menga bosing)!</span> <ul> <li>Tort</li> <li>Donut</li> <li>Asal</li> </ul> </div> <script> document.getElementById('menu').addEventListener('click', function() { this.classList.toggle('open'); }); </script> </body> </html>
Asosiy tushunchalar:
- HTML tuzilma:
<div>
konteyner,<span>
sarlavha,<ul>/<li>
ro’yxat elementlari - CSS holatlar:
.open
sinfi menyu holatini boshqaradi - JavaScript interaktivlik:
classList.toggle()
orqali sinfni qo’shish/olib tashlash - Vizual ko’rsatkichlar: O’qlar (▶ yopiq, ▼ ochiq) menyuni holati haqida ma’lumot beradi
Bu yondashuv CSS animatsiyalari va turli xil stil effektlari bilan kengaytirilishi mumkin.