此处公告通常对读者进行申明或对该WIKI某些规则进行公告,请在确认后修改本通告
本WIKI编辑权限开放,欢迎收藏起来防止迷路,也希望有爱的小伙伴和我们一起编辑哟~
编辑帮助:目录 • BWIKI反馈留言板
此处公告通常对读者进行申明或对该WIKI某些规则进行公告,请在确认后修改本通告。本WIKI编辑权限开放,欢迎收藏起来防止迷路,也希望有爱的小伙伴和我们一起编辑哟~
沙盒/js
阅读
2025-04-22更新
最新编辑:--喵-喵--
阅读:
更新日期:2025-04-22
最新编辑:--喵-喵--
window.onload = function() { // 手动定义每组下拉菜单及其对应的下一级菜单 var dropdownPairs = [ { parent: '.wiki-menu-li-1', child: '.wiki-menu-li-2' }, { parent: '.wiki-menu-li-2', child: '.wiki-menu-li-3' } ]; // 创建一个映射,存储每个下拉菜单及其对应的下一级菜单 var dropdownMap = new Map(); // 遍历所有定义的下拉菜单对 dropdownPairs.forEach(function(pair) { var parentDropdown = document.querySelector(pair.parent); var childDropdown = document.querySelector(pair.child); if (parentDropdown && childDropdown) { dropdownMap.set(parentDropdown, childDropdown); } }); // 为每个父级下拉菜单元素添加鼠标悬停事件监听器 dropdownMap.forEach(function(nextLevelDropdown, parentDropdown) { parentDropdown.addEventListener('mouseover', function() { console.log('鼠标悬停在下拉菜单上'); // 检查下一级菜单是否超出屏幕底部 if (nextLevelDropdown.getBoundingClientRect().bottom > window.innerHeight) { nextLevelDropdown.style.bottom = '0'; nextLevelDropdown.style.top = 'auto'; } // 检查下一级菜单是否超出屏幕右侧 if (nextLevelDropdown.getBoundingClientRect().right > window.innerWidth) { nextLevelDropdown.style.left = 'auto'; nextLevelDropdown.style.right = '0'; } // 检查下一级菜单是否超出屏幕左侧 if (nextLevelDropdown.getBoundingClientRect().left < 0) { nextLevelDropdown.style.right = 'auto'; nextLevelDropdown.style.left = '0'; } // 检查下一级菜单是否超出屏幕上侧 if (nextLevelDropdown.getBoundingClientRect().top < 0) { nextLevelDropdown.style.top = 'auto'; nextLevelDropdown.style.bottom = '0'; } }); }); };
var dropdowns = document.querySelectorAll('.dropdown, .dropdown-2, .dropdown-3'); var dropdownMap = new Map(); dropdowns.forEach(function(dropdown) { var nextLevelDropdown = dropdown.querySelector('.dropdown-content, .dropdown-content-2, .dropdown-content-3'); if (nextLevelDropdown) { dropdownMap.set(dropdown, nextLevelDropdown); } }); dropdowns.forEach(function(dropdown) { dropdown.addEventListener('mouseover', function() { var nextLevelDropdown = dropdownMap.get(this); if (nextLevelDropdown) { if (nextLevelDropdown.getBoundingClientRect().bottom > window.innerHeight) { nextLevelDropdown.style.bottom = '100%'; nextLevelDropdown.style.top = 'auto'; } if (nextLevelDropdown.getBoundingClientRect().right > window.innerWidth) { nextLevelDropdown.style.left = 'auto'; nextLevelDropdown.style.right = '0'; } if (nextLevelDropdown.getBoundingClientRect().left < 0) { nextLevelDropdown.style.right = 'auto'; nextLevelDropdown.style.left = 'auto'; } if (nextLevelDropdown.getBoundingClientRect().top < 0) { nextLevelDropdown.style.top = 'auto'; nextLevelDropdown.style.bottom = 'auto'; } } }); });