} } }, 10); } // 处理点击 function handleClick(item) { // 更新活跃状态 setActive(item.id); // 根据linkType处理跳转 if (item.linkType === 'blank') { window.open(item.url, '_blank'); } else if (item.linkType === 'home') { closeIframe(); } else if (item.linkType === 'iframe') { showIframe(item.url, item.name, item); } } // 设置活跃菜单 function setActive(id) { // 首先清除所有菜单的active状态 for (var i = 0; i < menuConfig.length; i++) { menuConfig[i].active = false; } // 设置指定菜单为active for (var i = 0; i < menuConfig.length; i++) { if (menuConfig[i].id === id) { menuConfig[i].active = true; break; } } // 更新DOM var items = document.querySelectorAll('.btm-nav-item'); for (var i = 0; i < items.length; i++) { var item = items[i]; var itemId = item.getAttribute('data-id'); // 移除active类 item.classList.remove('active'); // 找到对应的菜单数据 var menuData = null; for (var j = 0; j < menuConfig.length; j++) { if (menuConfig[j].id === itemId) { menuData = menuConfig[j]; break; } } if (menuData) { var isActive = (itemId === id); // 如果是目标菜单,添加active类并应用自定义颜色 if (isActive) { item.classList.add('active'); // 应用自定义选中颜色 var activeColor = menuData.activeColor || globalSettings.colors.activeColor; item.style.color = activeColor; // 为SVG图标设置颜色 var svgIcon = item.querySelector('.btm-nav-svg-icon svg'); if (svgIcon) { svgIcon.style.color = activeColor; } } else { // 恢复默认颜色 item.style.color = globalSettings.colors.defaultColor; // 为SVG图标恢复默认颜色 var svgIcon = item.querySelector('.btm-nav-svg-icon svg'); if (svgIcon) { svgIcon.style.color = globalSettings.colors.defaultColor; } } // 更新图标 var iconEl = item.querySelector('.btm-nav-icon'); if (iconEl && menuData) { var newIcon = isActive ? menuData.activeIcon : menuData.icon; // 如果是选中状态且图标发生变化,添加抖动动画 if (isActive && newIcon !== menuData.icon) { // 先添加抖动动画 iconEl.classList.add('shake'); // 延迟更新图标,让抖动动画先开始 setTimeout(function() { updateIconContent(iconEl, newIcon, menuData.name); // 动画完成后移除抖动类 setTimeout(function() { iconEl.classList.remove('shake'); // 添加脉冲效果 iconEl.classList.add('pulse'); setTimeout(function() { iconEl.classList.remove('pulse'); }, 400); }, 600); }, 100); } else { // 非选中状态或图标未变化,直接更新 updateIconContent(iconEl, newIcon, menuData.name); } } } } } // 更新图标内容的辅助函数 function updateIconContent(iconEl, newIcon, itemName) { // 判断图标类型并更新(只支持SVG和外部链接) if (newIcon && newIcon.startsWith(''; } } else { // 不支持的图标类型 iconEl.className = 'btm-nav-icon btm-nav-default'; iconEl.innerHTML = '?'; } } // 检测是否为移动设备 function isMobileDevice() { return window.innerWidth <= 760; } // 获取菜单栏的实际高度 function getMenuBarHeight() { var menuBar = document.getElementById('btmNavMenu'); if (menuBar && menuBar.style.display !== 'none') { // 强制重新计算布局 menuBar.offsetHeight; var height = menuBar.getBoundingClientRect().height; if (height > 0) { return Math.ceil(height); // 向上取整避免小数问题 } } // 使用更保守的估算值 return isMobileDevice() ? 55 : 65; } // 显示iframe function showIframe(url, title, menuItem) { var iframe = document.getElementById('btmNavIframe'); var titleEl = document.getElementById('btmNavIframeTitle'); var contentEl = document.getElementById('btmNavIframeContent'); var headerEl = iframe.querySelector('.btm-nav-iframe-header'); var menuBar = document.getElementById('btmNavMenu'); if (iframe && titleEl && contentEl) { closeIframe(); setTimeout(function() { titleEl.textContent = title; contentEl.src = url; // 根据配置决定是否显示关闭栏 var shouldShowCloseBar = getShouldShowCloseBar(menuItem); // 根据配置决定是否显示菜单栏 var shouldShowMenuBar = getShouldShowMenuBar(menuItem); if (shouldShowCloseBar) { headerEl.style.display = 'flex'; iframe.style.top = '0'; contentEl.style.height = 'calc(100% - 35px)'; } else { headerEl.style.display = 'none'; iframe.style.top = '0'; contentEl.style.height = '100%'; } // 控制底部菜单栏显示/隐藏 if (shouldShowMenuBar) { if (menuBar) menuBar.style.display = 'block'; iframe.classList.remove('btm-nav-fullscreen'); // 移除全屏类 // 动态获取菜单栏高度 var menuHeight = getMenuBarHeight(); // 设置CSS变量供CSS使用 document.documentElement.style.setProperty('--btm-nav-menu-height', menuHeight + 'px'); // 简化定位:使用top和bottom,让CSS处理高度 iframe.style.top = '0'; iframe.style.bottom = '0'; // 贴底显示,菜单栏会在上面