Skip to content

Commit 15ed9f1

Browse files
author
huangyihua.andy
committed
fix style
1 parent 9b24515 commit 15ed9f1

File tree

3 files changed

+140
-33
lines changed

3 files changed

+140
-33
lines changed

index.html

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,12 @@
2121
</div>
2222
<span class="version">v1.0.3</span>
2323
</div>
24-
<div class="nav-links">
24+
<button class="mobile-menu-toggle" onclick="toggleMobileMenu()">
25+
<span></span>
26+
<span></span>
27+
<span></span>
28+
</button>
29+
<div class="nav-links" id="navLinks">
2530
<a href="#features" class="nav-link" data-i18n="nav.features">特性</a>
2631
<a href="#quickstart" class="nav-link" data-i18n="nav.quickstart">快速开始</a>
2732
<a href="#docs" class="nav-link" data-i18n="nav.docs">文档</a>

script.js

Lines changed: 60 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -180,48 +180,78 @@ document.addEventListener('DOMContentLoaded', () => {
180180
});
181181
});
182182

183-
// Mobile menu toggle (if needed in future)
184-
const createMobileMenu = () => {
185-
const nav = document.querySelector('.nav-container');
186-
const navLinks = document.querySelector('.nav-links');
183+
// Mobile menu toggle function
184+
function toggleMobileMenu() {
185+
const navLinks = document.getElementById('navLinks');
186+
const toggleButton = document.querySelector('.mobile-menu-toggle');
187187

188-
if (window.innerWidth <= 768) {
189-
if (!document.querySelector('.mobile-menu-toggle')) {
190-
const toggleButton = document.createElement('button');
191-
toggleButton.className = 'mobile-menu-toggle';
192-
toggleButton.innerHTML = '☰';
193-
toggleButton.style.cssText = `
194-
display: block;
195-
background: none;
196-
border: none;
197-
font-size: 24px;
198-
color: #374151;
199-
cursor: pointer;
200-
`;
201-
202-
toggleButton.addEventListener('click', () => {
203-
navLinks.classList.toggle('mobile-open');
204-
});
188+
navLinks.classList.toggle('active');
189+
toggleButton.classList.toggle('active');
190+
191+
// Log mobile menu action
192+
if (currentLogger) {
193+
currentLogger.info('Mobile menu toggled', {
194+
isOpen: navLinks.classList.contains('active')
195+
});
196+
}
197+
}
198+
199+
// Close mobile menu when clicking on a nav link
200+
document.addEventListener('DOMContentLoaded', () => {
201+
const navLinks = document.querySelectorAll('.nav-link');
202+
const navMenu = document.getElementById('navLinks');
203+
const toggleButton = document.querySelector('.mobile-menu-toggle');
204+
205+
navLinks.forEach(link => {
206+
link.addEventListener('click', () => {
207+
if (navMenu.classList.contains('active')) {
208+
navMenu.classList.remove('active');
209+
if (toggleButton) {
210+
toggleButton.classList.remove('active');
211+
}
212+
213+
if (currentLogger) {
214+
currentLogger.info('Mobile menu closed via navigation link');
215+
}
216+
}
217+
});
218+
});
219+
220+
// Close mobile menu when clicking outside
221+
document.addEventListener('click', (e) => {
222+
const isClickInsideNav = e.target.closest('.nav-container');
223+
if (!isClickInsideNav && navMenu.classList.contains('active')) {
224+
navMenu.classList.remove('active');
225+
if (toggleButton) {
226+
toggleButton.classList.remove('active');
227+
}
205228

206-
nav.appendChild(toggleButton);
229+
if (currentLogger) {
230+
currentLogger.info('Mobile menu closed via outside click');
231+
}
207232
}
208-
}
209-
};
233+
});
234+
});
210235

211236
// Performance optimization: Debounced resize handler
212237
let resizeTimeout;
213238
window.addEventListener('resize', () => {
214239
clearTimeout(resizeTimeout);
215240
resizeTimeout = setTimeout(() => {
216-
createMobileMenu();
241+
// Close mobile menu if window is resized to desktop size
242+
if (window.innerWidth > 768) {
243+
const navMenu = document.getElementById('navLinks');
244+
const toggleButton = document.querySelector('.mobile-menu-toggle');
245+
if (navMenu && navMenu.classList.contains('active')) {
246+
navMenu.classList.remove('active');
247+
if (toggleButton) {
248+
toggleButton.classList.remove('active');
249+
}
250+
}
251+
}
217252
}, 250);
218253
});
219254

220-
// Initialize
221-
document.addEventListener('DOMContentLoaded', () => {
222-
createMobileMenu();
223-
});
224-
225255
// Add some interactive effects to buttons
226256
document.querySelectorAll('.btn').forEach(btn => {
227257
btn.addEventListener('mouseenter', () => {

style.css

Lines changed: 74 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -385,18 +385,90 @@ body {
385385
color: #94a3b8;
386386
}
387387

388+
/* Mobile Menu Toggle */
389+
.mobile-menu-toggle {
390+
display: none;
391+
background: none;
392+
border: none;
393+
cursor: pointer;
394+
padding: 8px;
395+
border-radius: 4px;
396+
transition: background-color 0.2s;
397+
}
398+
399+
.mobile-menu-toggle:hover {
400+
background-color: #f3f4f6;
401+
}
402+
403+
.mobile-menu-toggle span {
404+
display: block;
405+
width: 25px;
406+
height: 3px;
407+
background-color: #374151;
408+
margin: 5px 0;
409+
transition: 0.3s;
410+
border-radius: 2px;
411+
}
412+
413+
/* Mobile menu animation */
414+
.mobile-menu-toggle.active span:nth-child(1) {
415+
transform: rotate(-45deg) translate(-5px, 6px);
416+
}
417+
418+
.mobile-menu-toggle.active span:nth-child(2) {
419+
opacity: 0;
420+
}
421+
422+
.mobile-menu-toggle.active span:nth-child(3) {
423+
transform: rotate(45deg) translate(-5px, -6px);
424+
}
425+
388426
/* Responsive Design */
389427
@media (max-width: 768px) {
390428
.nav-container {
391429
padding: 0 16px;
430+
position: relative;
431+
}
432+
433+
.mobile-menu-toggle {
434+
display: block;
392435
}
393436

394437
.nav-links {
395-
gap: 20px;
438+
position: absolute;
439+
top: 100%;
440+
left: 0;
441+
right: 0;
442+
background: rgba(255, 255, 255, 0.98);
443+
backdrop-filter: blur(10px);
444+
border-top: 1px solid #e5e7eb;
445+
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
446+
flex-direction: column;
447+
padding: 20px;
448+
gap: 16px;
449+
display: none;
450+
z-index: 1000;
451+
}
452+
453+
.nav-links.active {
454+
display: flex;
396455
}
397456

398457
.nav-link {
399-
font-size: 14px;
458+
font-size: 16px;
459+
padding: 8px 0;
460+
border-bottom: 1px solid #f3f4f6;
461+
text-align: center;
462+
}
463+
464+
.nav-link:last-child {
465+
border-bottom: none;
466+
}
467+
468+
.lang-toggle {
469+
margin-left: 0;
470+
margin-top: 8px;
471+
align-self: center;
400472
}
401473

402474
.hero-title {

0 commit comments

Comments
 (0)