设计导航下拉菜单三部曲
一、html:
1、编码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>欢迎访问中国建设银行网站-个人客户-信用卡</title>
</head>
<body>
<!-- li>a回车得到:<li><a href=""></a></li> -->
<!-- ul#nav回车得到: <ul id="nav"></ul>-->
<ul id="nav">
<li><a href="">信用卡</a>
<ul>
<li>业务办理
</li>
<li>人气产品
</li>
<li>热门推荐</li>
<br>
<li><a href="">行用卡申请</a></li>
<li><a href="">办卡进度查询</a></li>
<li><a href="">龙卡热购卡 </a></li>
<li><a href="">全球支付信用卡</a></li>
<li><a href="">更多特惠活动</a></li>
<br>
<li><a href="">在线开卡 </a></li>
<li><a href="">积分商城 </a></li>
<li><a href="">欧洲旅行信用卡</a></li>
<li><a href="">EMV信用卡</a></li>
<br>
<li><a href="">账单查询 </a></li>
<li><a href="">分期理财 </a></li>
<li><a href="">日本旅行信用卡</a></li>
<li><a href="">更多</a></li>
<br>
<li><a href="">额度调整 </a></li>
<li><a href="">在线挂失</a></li>
</ul>
</li>
<li><a href="">投资理财</a></li>
<li><a href="">存款及银行卡</a></li>
<li><a href="">电子银行</a>
<ul>
<li>业务办理</li>
<br>
<li><a href="">开通网上银行</a></li>
<br>
<li><a href="">消息服务定制</a></li>
<br>
<li><a href="">开通e账户</a></li>
<br>
<li><a href="">云闪付销户</a></li>
<br>
</ul>
<li><a href="">悦享生活</a></li>
<li><a href="">优智规划</a></li>
</ul>
</body>
</html>
2、效果图:
二、html+css
1、编码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>欢迎访问中国建设银行网站-个人客户-信用卡</title>
<style>
/* 元素样式初始化 */
* {
margin:0;
padding: 0;
box-sizing: border-box;
}
a {
/* color:rgba(255, 255, 255, 0.7) */
color:#bbb;
text-decoration: none;
}
#nav {
background-color:rgb(60, 42, 230);
height: 50px;
line-height: 50px;
}
li {
list-style:none;
margin: 0 10px;
float: left;
}
#nav >li>a:hover{
color:red;
}
/* 将父级设置为子菜单的定位容器,即转为定位元素即可 */
#nav>li{
position: relative;
}
#nav>li>ul{
position: absolute;
top: 50px;
width: 600px;
border: 1px solid #aaa;
border-top:none;
}
#nav>li>ul>li a{
display: inline-block;
height: 50px;
color: #444;
}
ul.sub li:hover {
background-color: #eee;
}
/* 初始化时不要显示子菜单 */
#nav>li>ul{
display: none;
}
</style>
</head>
<body>
<!-- li>a回车得到:<li><a href=""></a></li> -->
<!-- ul#nav回车得到: <ul id="nav"></ul>-->
<ul id="nav">
<li><a href="">信用卡</a>
<ul>
<li= >业务办理
</li=>
<li>人气产品
</li>
<li>热门推荐</li>
<br>
<li><a href="">行用卡申请</a></li>
<li><a href="">办卡进度查询</a></li>
<li><a href="">龙卡热购卡 </a></li>
<li><a href="">全球支付信用卡</a></li>
<li><a href="">更多特惠活动</a></li>
<br>
<li><a href="">在线开卡 </a></li>
<li><a href="">积分商城 </a></li>
<li><a href="">欧洲旅行信用卡</a></li>
<li><a href="">EMV信用卡</a></li>
<br>
<li><a href="">账单查询 </a></li>
<li><a href="">分期理财 </a></li>
<li><a href="">日本旅行信用卡</a></li>
<li><a href="">更多</a></li>
<br>
<li><a href="">额度调整 </a></li>
<li><a href="">在线挂失</a></li>
</ul>
</li>
<li><a href="">投资理财</a></li>
<li><a href="">存款及银行卡</a></li>
<li><a href="">电子银行</a>
<ul>
<li>业务办理</li>
<br>
<li><a href="">开通网上银行</a></li>
<br>
<li><a href="">消息服务定制</a></li>
<br>
<li><a href="">开通e账户</a></li>
<br>
<li><a href="">云闪付销户</a></li>
<br>
</ul>
<li><a href="">悦享生活</a></li>
<li><a href="">优智规划</a></li>
</ul>
</body>
</html>
2、效果图:
三 、html+css+js
1、编码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>欢迎访问中国建设银行网站-个人客户-信用卡</title>
<style>
/* 元素样式初始化: */
* {
margin:0;
padding: 0;
box-sizing: border-box;
}
a {
/* color:rgba(255, 255, 255, 0.7) */
color:#bbb;
text-decoration: none;
}
#nav {
background-color:rgb(60, 42, 230);
height: 50px;
line-height: 50px;
}
li {
list-style:none;
margin: 0 10px;
float: left;
}
#nav >li>a:hover{
color:red;
}
/* 将父级设置为子菜单的定位容器,即转为定位元素即可 */
#nav>li{
position: relative;
}
#nav>li>ul{
position: absolute;
top: 50px;
width: 600px;
border: 1px solid #aaa;
border-top:none;
}
#nav>li>ul>li a{
display: inline-block;
height: 50px;
color: #444;
}
ul.sub li:hover {
background-color: #eee;
}
/* 初始化时不要显示子菜单 */
#nav>li>ul{
display: none;
}
</style>
</head>
<body>
<!-- li>a回车得到:<li><a href=""></a></li> -->
<!-- ul#nav回车得到: <ul id="nav"></ul>-->
<ul id="nav">
<li><a href="">信用卡</a>
<ul>
<li style="color:blue";>业务办理
</li>
<li style="color:blue";>人气产品
</li>
<li style="color:blue"; >热门推荐 </li>
<br>
<li><a href="">行用卡申请</a></li>
<li><a href="">办卡进度查询</a></li>
<li><a href="">龙卡热购卡 </a></li>
<li><a href="">全球支付信用卡</a></li>
<li><a href="">更多特惠活动</a></li>
<br>
<li><a href="">在线开卡 </a></li>
<li><a href="">积分商城 </a></li>
<li><a href="">欧洲旅行信用卡</a></li>
<li><a href="">EMV信用卡</a></li>
<br>
<li><a href="">账单查询 </a></li>
<li><a href="">分期理财 </a></li>
<li><a href="">日本旅行信用卡</a></li>
<li><a href="">更多</a></li>
<br>
<li><a href="">额度调整 </a></li>
<li><a href="">在线挂失</a></li>
</ul>
</li>
<li><a href="">投资理财</a></li>
<li><a href="">存款及银行卡</a></li>
<li><a href="">电子银行</a>
<ul>
<li style="color:blue";>业务办理</li>
<br>
<li><a href="">开通网上银行</a></li>
<br>
<li><a href="">消息服务定制</a></li>
<br>
<li><a href="">开通e账户</a></li>
<br>
<li><a href="">云闪付销户</a></li>
<br>
</ul>
<li><a href="">悦享生活</a></li>
<li><a href="">优智规划</a></li>
</ul>
</body>
<script>
// 获取所有的主导航
const navs=document.querySelectorAll('#nav> li');
navs.forEach(function(nav){
// 鼠标移入时显示子菜单 nav.addEventListener('mouseover',showSubMenu);
// 鼠标移出时关闭子菜 nav.addEventListener('mouseout',closeSubMenu);
});
// 显示子菜单
function showSubMenu(ev){
console.log(ev.target);
// 当前导航有没有子菜单?
if(ev.target.nextElementSibling !==null) {
ev.target.nextElementSibling.style.display ="block";
}
}
// 关掉子菜单
function closeSubMenu(ev){
if(ev.target.nodeName==="A" &&
ev.target.nextElementSibling !==null) {
ev.target.nextElementSibling.style.display ="none";
}
}
// 重点:链接+无序列表+事件监听+事件代理/委托
</script>
</html>
2、效果图:
2.1 初始页面
2.2 鼠标移到导航菜单条时,菜单颜色变红色显。
如果该菜单有下拉菜单,则显示下拉菜单;
2.3 鼠标移到导航菜单条时,菜单颜色变红色显。
如果该菜单没有下拉菜单,则不显示。
三、重点小结
1. const navs=document.querySelectorAll(‘#nav> li’);
—获取所有的主导航
2. 子菜单
navs.forEach(function(nav){
鼠标移入时显示子菜单: nav.addEventListener(‘mouseover’,showSubMenu);
鼠标移出时关闭子菜 : nav.addEventListener(‘mouseout’,closeSubMenu);
});
函数实现功能:
显示子菜单:
function showSubMenu(ev){
console.log(ev.target);
当前导航有没有子菜单?
if(ev.target.nextElementSibling !==null) {
ev.target.nextElementSibling.style.display ="block";
}
}
关掉子菜单:
function closeSubMenu(ev){
if(ev.target.nodeName==="A" &&
ev.target.nextElementSibling !==null) {
ev.target.nextElementSibling.style.display ="none";
}
}