js实现简单的隐藏导航菜单动态显示

*效果如图

当鼠标放在全部分类这里时,自动弹出导航表单。当鼠标离开时,显示的是相关的网页内容




*说明:

代码只给出js的部分,相关css和html布局只是简单的呃button和对应的div而已

原理就是利用dom获取button控件和div控件,div的display设置为none;当button的onmouseover事件触发时改变div的display状态从而实现动态切换显示。但这里有个问题,就是当鼠标放在button弹出div时,鼠标离开button移动到div上,这时候div也不应该隐藏,只有当鼠标同时离开这两个控件的时候div才隐藏。具体看代码 //控件加载监控部分。


//变量区
    var oTypeButton=document.getElementById("allbook_type_button");
    var oBookTypeDiv=document.getElementById("all_type_book");
    var oBookTypeLeftDiv=document.getElementById("leftbox");
    var oBookTypeLeftLi=oBookTypeLeftDiv.getElementsByTagName("li");
    var oBookTypeRightDiv=oBookTypeDiv.getElementsByTagName("div");
var oBookTypeRightUl=oBookTypeRightDiv[1].getElementsByTagName("ul");


//函数区
function booktypeul_none(){
      for(var j=0;j<oBookTypeRightUl.length;j++)
      {
        oBookTypeRightUl[j].style.border="";

      }
}
function booktypeul_show(obj1,i){
    obj1.οnmοuseοver=function(){
      booktypeul_none();
      if(obj1!=oBookTypeLeftLi[0])
      oBookTypeRightUl[i].style.border="1px solid #EBE4E4";
  }
}


//控件加载监听
window.οnlοad=function(){
  //------------booktype_button
  oTypeButton.οnmοuseοver=function(){
    booktypeul_none();
    oBookTypeDiv.style.display="block";
    oBookTypeRightDiv[1].style.display="block";
  }
  oBookTypeDiv.οnmοuseοver=function(){
    oBookTypeDiv.style.display="block";
  }
 oTypeButton.οnmοuseοut=function(){
   oBookTypeDiv.style.display="none";
  }
  oBookTypeDiv.οnmοuseοut=function(){
       oBookTypeDiv.style.display="none";
  }

   oBookTypeLeftLi[0].οnmοuseοut=function(){
       oBookTypeRightUl[0].style.border="none";
  }

  for(var i=1;i<oBookTypeLeftLi.length;i++)
  {
    booktypeul_show(oBookTypeLeftLi[i],(i-1)%9);
  }  
}




  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue Admin Template 的导航菜单是通过路由配置来控制显示和隐藏的。具体来说,可以在路由配置文件中设置 `meta` 属性来指定当前路由所对应的菜单是否需要显示。例如: ```javascript { path: '/dashboard', component: Dashboard, name: 'Dashboard', meta: { requiresAuth: true, // 是否需要登录才能访问 menu: true, // 是否显示在导航菜单中 iconClass: 'el-icon-s-home' // 菜单图标 } } ``` 在导航菜单组件中,可以通过遍历路由配置文件来动态渲染菜单,并根据 `meta.menu` 属性来判断是否需要显示当前菜单项。例如: ```html <template> <div class="sidebar-menu"> <el-menu :default-active="$route.path" :collapse="isCollapse" :unique-opened="true" router :collapse-transition="false" class="el-menu-vertical-demo" > <template v-for="item in menuList"> <sidebar-menu-item :item="item" :key="item.path"></sidebar-menu-item> </template> </el-menu> </div> </template> <script> import routes from '@/router/routes' export default { name: 'SidebarMenu', data() { return { menuList: [] } }, created() { this.menuList = this.filterMenu(routes) }, methods: { filterMenu(routes) { return routes.filter(route => { if (route.meta && route.meta.menu) { if (route.children) { route.children = this.filterMenu(route.children) } return true } return false }) } } } </script> ``` 在上面的代码中,`filterMenu` 方法会递归遍历路由配置文件,根据 `meta.menu` 属性来筛选出需要显示的菜单项,并将其存储到 `menuList` 中。然后在模板中通过遍历 `menuList` 来动态渲染菜单

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值