自定义Mega菜单的巧妙实现
查看了《云制造》官网源码,为其mega菜单的巧妙实现打call。
其另辟蹊径,采取父级主控分支的方法,仅对父级“增加/删除”控制标识,从而控制子层显示。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<style>
body{
padding: 0;
margin: 0;
}
.navbar{
height: 70px;
min-width: 1280px;
display: flex;
flex-flow: row nowrap;/*水平不换行*/
align-items: center;
background-color: #343a40;
position: relative;
}
.change_container{
width: 1250px;
margin: 0 auto;
display: flex;
flex-flow: row nowrap;
align-items: center;
}
.navbar-nav{
display: flex;
flex-flow: row nowrap;
align-items: center;
padding: 0;
margin: 0;
list-style-type: none;
}
.navbar-nav li{
height: 70px;
color:#fff;
}
.navbar-nav li>a{
line-height: 70px;
padding-left: 8px;
padding-right: 30px;
display: inline-block;
background-image: url('https://www.yungongchang.com/Common/Images/newHome/nav_up.png');
background-repeat: no-repeat;
background-position: 80px 30px;
}
.dropdown-menu{
position: absolute;
top: 67px;
width: 100%;
left: 0;
background: #000;
}
.dropdown-menu a{
display: inline-block;
padding: 10px;
}
/*实现父子级联动的控制样式类*/
.nav-item>div.dropdown-menu{
display: none;
}
.nav-item.open>div.dropdown-menu{
display: block;
} </style>
<script>
window.onload = function(){
/*实现父级标识class的设置*/
let triggers = document.querySelectorAll(".navbar-nav>li.nav-item");
triggers.forEach( el=>{
el.addEventListener('mouseenter',function(){
this.classList.add( 'open' );
});
el.addEventListener('mouseleave',function(){
this.classList.remove( 'open' );
});
} );
}
</script>
<body>
<nav class="navbar">
<div class="change_container">
<a class="navbar-brand">
<img src="https://www.yungongchang.com/Common/Images/newHome/logo.png" />
</a>
<ul class="navbar-nav">
<li class="nav-item">
<a>关于我们</a>
<div class="dropdown-menu">
<a>公司介绍</a>
<a>主创团队</a>
<a>核心技术</a>
<a>公司动态</a>
<a>强大制造产能</a>
</div>
</li>
<li class="nav-item">
<a>关于我们</a>
<div class="dropdown-menu">
<a>1</a>
<a>2</a>
<a>3</a>
</div>
</li>
<li class="nav-item">
<a>关于我们</a>
<div class="dropdown-menu">
<a>4</a>
<a>5</a>
<a>6</a>
</div>
</li>
<li class="nav-item">
<a>关于我们</a>
<div class="dropdown-menu">
<a>7</a>
<a>8</a>
<a>9</a>
</div>
</li>
<li class="nav-item">
<a>关于我们</a>
<div class="dropdown-menu">
<a>10</a>
<a>11</a>
<a>12</a>
</div>
</li>
<li class="nav-item">
<a>关于我们</a>
<div class="dropdown-menu">
<a>13</a>
<a>14</a>
<a>15</a>
</div>
</li>
</ul>
</div>
</nav> </body>
</html>
——学无止境,保持好奇。May stars guide your way.
自定义Mega菜单的巧妙实现的更多相关文章
- ASP.NET Aries 入门开发教程8:树型列表及自定义右键菜单
前言: 前面几篇重点都在讲普通列表的相关操作. 本篇主要讲树型列表的操作. 框架在设计时,已经把树型列表和普通列表全面统一了操作,用法几乎是一致的. 下面介绍一些差距化的内容: 1:树型列表绑定: v ...
- SharePoint 2013 自定义扩展菜单
在对SharePoint进行开发或者功能扩展的时候,经常需要对一些默认的菜单进行扩展,以使我们开发的东西更适合SharePoint本身的样式.SharePoint的各种功能菜单,像网站设置.Ribbo ...
- SharePoint 2013 自定义扩展菜单(二)
接博文<SharePoint 2013 自定义扩展菜单>,多加了几个例子,方便大家理解. 例七 列表设置菜单扩展(listedit.aspx) 扩展效果 XML描述 <CustomA ...
- JavaScript自定义右键菜单
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- SharePoint开发 - 自定义导航菜单(一)菜单声明与配置
博客地址 http://blog.csdn.net/foxdave 本篇描述自定义sharepoint菜单的一种方式,自定义菜单适用于一些门户等需求的网站 自定义的菜单有自己的数据源,可以是数据表,可 ...
- 自定义右键菜单,禁用浏览器自带的右键菜单[右键菜单实现--Demo]
许多从事Web开发的会发现有些事,我们需要禁用浏览器本事自带的右键菜单,而实现自定义的右键菜单下面我们也来实现一个自定义的右键菜单 首先来创建JSP页面 <%@ page language=&q ...
- jquery easyui鼠标右击显示自定义的菜单
1.datagrid表格中,对某一行鼠标右击,显示出如下的自定义的菜单: 在html页面中写: <div id="menu" class="easyui-menu& ...
- 为SharePoint网站创建自定义导航菜单
转:http://kaneboy.blog.51cto.com/1308893/397779 相信不少人都希望把SharePoint网站内置的那个顶部导航菜单,换成自己希望的样式.由于SharePoi ...
- js禁止默认的右键菜单或出现自定义右键菜单
1.屏蔽默认的右键菜单 js: document.getElementById('myimg').oncontextmenu=function(){return false;} jquery: $(' ...
随机推荐
- vue-router 获得上一级路由以及返回上一级路由的方法
if (this.$store.state.previousRouter.name) { this.$router.push({name: this.$store.state.previousRout ...
- ab-如何提交post请求
ab -n 1 -c 1 -p post.txt http://***********/ 文件post.txt中存放要post的数据
- bootStrap效果图
http://www.ziqiangxuetang.com/bootstrap/bootstrap-tutorial.html
- Codeforces Round #408( Div2)
Bank Hacking 阅读题,读完之后手算一下可以发现每一个bank被hack所需要的strength无非分为三种情况. 1. $a_i$,当且仅当i为第一个选择的点. 2. $a_i+1$,当且 ...
- int和Integer及拆箱与装箱
int和Integer 如果面试官问Integer与int的区别:估计大多数人只会说道两点,Ingeter是int的包装类,int的初值为0,Ingeter的初值为null.但是如果面试官再问一下In ...
- java如何写接口给别人调用
参考:https://blog.csdn.net/greatkendy123/article/details/52818466 java web开发(二) 接口开发
- A - Set of Strings
Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Description You ar ...
- jquery 快速入门二
---恢复内容开始--- 操作标签 样式操作 样式类 addClass();//添加指定的CSS类名. removeClass();//移除指定的类名. hasClass();//判断样式不存在 to ...
- 区间sum 和为k的连续区间-前缀和
区间sum 描述 有一个长度为n的正整数序列a1--an,candy想知道任意区间[L,R]的和,你能告诉他吗? 输入 第一行一个正整数n(0<n<=1e6),第二行为长度为n的正整数序列 ...
- jquery 点击某一行,得到这一行的每个列的数据
<html><head> <title>test</title> <script src="../Scripts/jquery-1.8. ...