关于二级菜单显示的问题

来源:5-4 二级菜单的展开与收起

ilfrank

2018-12-21 15:50:52

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>综合练习事例</title>
<link rel="stylesheet" type="text/css" href="./style.css">
<link rel="stylesheet" type="text/css" href="./fontCont/iconfont.css">
</head>
<body>
<div class="main" id="main">
<!--banner区域-->
<div class="banner" id="banner">
<a href="javascript:void(0)">
<div class="banner-side side1 side-active"></div>
</a>
<a href="javascript:void(0)">
<div class="banner-side side2"></div>
</a>
<a href="javascript:void(0)">
<div class="banner-side side3"></div>
</a>
</div>
<!--左右切换图片按钮-->
<!--左边按钮-->
<div class="button left_button"></div>
<!--右边按钮-->
<div class="button right_button"></div>
<!--圆点按钮-->
<div class="dots" id = "dots">
<span class="activeDot"></span>
<span></span>
<span></span>
</div>
<!--菜单栏-->
<div class="menu">
<div class="menu-item">
<a href="">
<span>手机、配件</span>
<i class="icon">&#xe665;</i>
</a>
</div>
<div class="menu-item">
<a href="">
<span>电脑</span>
<i class="icon">&#xe665;</i>
</a>
</div>
<div class="menu-item">
<a href="">
<span>家用电器</span>
<i class="icon">&#xe665;</i>
</a>
</div>
<div class="menu-item">
<a href="">
<span>家具</span>
<i class="icon">&#xe665;</i>
</a>
</div>
</div>
<!--细分项目-->
<div class="menu-box hide" id = "menu-box">
</div>
<!--第一项-->
<div class="menu-content hide">
<div class="title">手机、配件</div>
<div class="content">
<span class="content_one">手机通讯:</span>
<span class="content_two">手机&nbsp;&nbsp;/&nbsp;&nbsp;手机维修&nbsp;&nbsp;/&nbsp;&nbsp;以旧换新</span>
</div>
<div class="content">
<span class="content_one">手机配件:</span>
<span class="content_two">手机壳&nbsp;&nbsp;/&nbsp;&nbsp;手机存储卡&nbsp;&nbsp;/&nbsp;&nbsp;数据线&nbsp;&nbsp;/&nbsp;&nbsp;充电器&nbsp;&nbsp;/&nbsp;&nbsp;电池</span>
</div>
<div class="content">
<span class="content_one">运营商:</span>
<span class="content_two">中国联通&nbsp;&nbsp;/&nbsp;&nbsp;中国移动&nbsp;&nbsp;/&nbsp;&nbsp;中国电信</span>
</div>
<div class="content">
<span class="content_one">智能设备:</span>
<span class="content_two">智能手环&nbsp;&nbsp;/&nbsp;&nbsp;智能家居&nbsp;&nbsp;/&nbsp;&nbsp;智能手表&nbsp;/&nbsp;&nbsp;其他配件</span>
</div>
<div class="content">
<span class="content_one">娱乐:</span>
<span class="content_two">耳机&nbsp;&nbsp;/&nbsp;&nbsp;音响&nbsp;&nbsp;/&nbsp;&nbsp;收音机&nbsp;/&nbsp;&nbsp;麦克风</span>
</div>
</div>
<!--第二项-->
<div class="menu-content hide">
<div class="title">电脑</div>
<div class="content">
<span class="content_one">手机通讯:</span>
<span class="content_two">手机&nbsp;&nbsp;/&nbsp;&nbsp;手机维修&nbsp;&nbsp;/&nbsp;&nbsp;以旧换新</span>
</div>
<div class="content">
<span class="content_one">手机配件:</span>
<span class="content_two">手机壳&nbsp;&nbsp;/&nbsp;&nbsp;手机存储卡&nbsp;&nbsp;/&nbsp;&nbsp;数据线&nbsp;&nbsp;/&nbsp;&nbsp;充电器&nbsp;&nbsp;/&nbsp;&nbsp;电池</span>
</div>
<div class="content">
<span class="content_one">运营商:</span>
<span class="content_two">中国联通&nbsp;&nbsp;/&nbsp;&nbsp;中国移动&nbsp;&nbsp;/&nbsp;&nbsp;中国电信</span>
</div>
<div class="content">
<span class="content_one">智能设备:</span>
<span class="content_two">智能手环&nbsp;&nbsp;/&nbsp;&nbsp;智能家居&nbsp;&nbsp;/&nbsp;&nbsp;智能手表&nbsp;/&nbsp;&nbsp;其他配件</span>
</div>
<div class="content">
<span class="content_one">娱乐:</span>
<span class="content_two">耳机&nbsp;&nbsp;/&nbsp;&nbsp;音响&nbsp;&nbsp;/&nbsp;&nbsp;收音机&nbsp;/&nbsp;&nbsp;麦克风</span>
</div>
</div>
<!--第三项-->
<div class="menu-content hide">
<div class="title">家用电器</div>
<div class="content">
<span class="content_one">手机通讯:</span>
<span class="content_two">手机&nbsp;&nbsp;/&nbsp;&nbsp;手机维修&nbsp;&nbsp;/&nbsp;&nbsp;以旧换新</span>
</div>
<div class="content">
<span class="content_one">手机配件:</span>
<span class="content_two">手机壳&nbsp;&nbsp;/&nbsp;&nbsp;手机存储卡&nbsp;&nbsp;/&nbsp;&nbsp;数据线&nbsp;&nbsp;/&nbsp;&nbsp;充电器&nbsp;&nbsp;/&nbsp;&nbsp;电池</span>
</div>
<div class="content">
<span class="content_one">运营商:</span>
<span class="content_two">中国联通&nbsp;&nbsp;/&nbsp;&nbsp;中国移动&nbsp;&nbsp;/&nbsp;&nbsp;中国电信</span>
</div>
<div class="content">
<span class="content_one">智能设备:</span>
<span class="content_two">智能手环&nbsp;&nbsp;/&nbsp;&nbsp;智能家居&nbsp;&nbsp;/&nbsp;&nbsp;智能手表&nbsp;/&nbsp;&nbsp;其他配件</span>
</div>
<div class="content">
<span class="content_one">娱乐:</span>
<span class="content_two">耳机&nbsp;&nbsp;/&nbsp;&nbsp;音响&nbsp;&nbsp;/&nbsp;&nbsp;收音机&nbsp;/&nbsp;&nbsp;麦克风</span>
</div>
</div>
<!--第四项-->
<div class="menu-content hide">
<div class="title">家具</div>
<div class="content">
<span class="content_one">手机通讯:</span>
<span class="content_two">手机&nbsp;&nbsp;/&nbsp;&nbsp;手机维修&nbsp;&nbsp;/&nbsp;&nbsp;以旧换新</span>
</div>
<div class="content">
<span class="content_one">手机配件:</span>
<span class="content_two">手机壳&nbsp;&nbsp;/&nbsp;&nbsp;手机存储卡&nbsp;&nbsp;/&nbsp;&nbsp;数据线&nbsp;&nbsp;/&nbsp;&nbsp;充电器&nbsp;&nbsp;/&nbsp;&nbsp;电池</span>
</div>
<div class="content">
<span class="content_one">运营商:</span>
<span class="content_two">中国联通&nbsp;&nbsp;/&nbsp;&nbsp;中国移动&nbsp;&nbsp;/&nbsp;&nbsp;中国电信</span>
</div>
<div class="content">
<span class="content_one">智能设备:</span>
<span class="content_two">智能手环&nbsp;&nbsp;/&nbsp;&nbsp;智能家居&nbsp;&nbsp;/&nbsp;&nbsp;智能手表&nbsp;/&nbsp;&nbsp;其他配件</span>
</div>
<div class="content">
<span class="content_one">娱乐:</span>
<span class="content_two">耳机&nbsp;&nbsp;/&nbsp;&nbsp;音响&nbsp;&nbsp;/&nbsp;&nbsp;收音机&nbsp;/&nbsp;&nbsp;麦克风</span>
</div>
</div>
</div>
<script type="text/javascript" src="./javascript.js"></script>
</body>
</html>
*{
	margin:0;
	padding: 0;
}
@font-face {font-family: 'iconfont';
    src: url('./fontCont/iconfont.eot'); 
    src: url('./fontCont/iconfont.eot') format('embedded-opentype'),
    url('./fontCont/iconfont.woff') format('woff'),
    url('./fontCont/iconfont.ttf') format('truetype'),
    url('./fontCont/iconfont.svg#iconfont') format('svg');
}
ul{
	list-style: none;
}
body{
	font-family: "微软雅黑";
	color:#14191e;
}
a{
	text-decoration: none;
}
.main{
	width: 1200px;
	height: 460px;
	margin: 20px auto;
	overflow: hidden;	
	position: relative;
}
.banner{
	width: 1200px;
	height: 460px;
	overflow: hidden;
	position: relative;
}
.banner-side{
	width: 1200px;
	height: 460px;
/*	float: left;*/
    position: absolute;
    background-repeat:no-repeat;
    display: none;
}
.side1{
	background-image: url("./img/bg1.jpg");
}
.side2{
	background-image: url("./img/bg2.jpg");
}
.side3{
	background-image: url("./img/bg3.jpg");
}
.side-active{
	display: block;
}
.button{
	width: 40px;
	height: 80px;
	top: 50%;
	position: absolute;
	background:url(./img/arrow.png) center center no-repeat;
}
.button:hover{
	background-color: #5e5e5e;
	opacity: 0.5;
}
.left_button{
	left: 244px;
	margin-top: -40px;
	transform:rotate(180deg);
}
.right_button{
	right:0px;
	margin-top: -40px;
}
.dots{
	position: absolute;
	right: 20px;
	bottom: 15px;
}
.dots span{
	display: inline-block;
	width: 12px;
	height: 12px;
	margin-right: 5px;
	border-radius:50%; 
	background-color: #000;
	opacity: 0.5;
	cursor: pointer;
	box-shadow:0 0 0 2px rgba(255,255,255,0.6) inset;
}
.dots span.activeDot{
	background-color: #fff;
}
.menu{
	width: 244px;
	height: 460px;
	position: absolute;
	top: 0px;
	left: 0px;
	background-color: rgba(7, 17, 27, 0.2);
	z-index: 999;
}
.menu-item{
	height: 64px;
	line-height: 64px;
	padding: 0 24px;
}
.menu-item a{
	display: block;
	height: 63px;
	padding: 0 5px;
	color: #fff;
	position: relative;
	border-bottom: 1px solid rgba(7, 17, 27, 0.1);

}
.icon{
	font-family: "iconfont";
	font-style:normal;
    font-weight:normal;
	font-size:15px;
	position: absolute;
	right: 4px;
}
.menu-item:hover{
	background-color: rgba(7, 17, 27, 0.4);
}
.menu-box{
	width: 665px;
	height: 458px;
	position: absolute;
	top: 0;
	left: 244px;
	border:1px solid #d9dde1;
	background: url(./img/fe.png) no-repeat;
}
.hide{
	display: none;
}
.menu-content{
	width: 665px;
	height: 458px;
	position: absolute;
	top: 0;
	left: 244px;
	border:1px solid #d9dde1;
}
.title{
	margin:20px 50px;
	color: #FF0000;
	font-weight: bold;
	font-size: 18px;
}
.content{
	margin:20px 50px;
}
.content_one{
	display: inline-block;
	margin-right: 15px;
	font-weight: bold;
}
//获取id
function getId(id){
    return typeof(id) === "string"?document.getElementById(id):id;
}

//全局变量
var index = 0,
    timer = null;
var main = getId("main");
var banner_side = getId("banner").getElementsByTagName("div");
var dot = getId("dots").getElementsByTagName("span");
var left_btn = document.getElementsByClassName("left_button")[0];
var right_btn = document.getElementsByClassName("right_button")[0];
var menu = document.getElementsByClassName("menu")[0];
var menu_items = document.getElementsByClassName("menu-item");
var menu_box = document.getElementsByClassName("menu-box")[0];
var menu_content = document.getElementsByClassName("menu-content");
var len = banner_side.length;


function changeImag(){
	for(var i = 0;i< len;i++){
		banner_side[i].style.display = "none";
		dot[i].className = "";
	}
	banner_side[index].style.display = "block";	
	dot[index].className = "activeDot";
	
}


function sideImage(){
	main.onmouseout = function(){
		timer = setInterval(function(){
			index++;
            if(index>=len){
              index = 0;
            }
            changeImag();
		},2000);
	}
    
	//调用上面的main.onmouseout()方法
	main.onmouseout();
    //onmouseover事件

	main.onmouseover = function(){
		if(timer){
			clearInterval(timer);
		}		
	}
    
	//点击小圆点切换图片
	for(var d = 0 ;d<len;d++){
		dot[d].id = d;
		dot[d].onclick = function(){
    		index = this.id;
    		changeImag();
       }
	}
	//点击左边的按钮
    left_btn.onclick = function(){
    	index--;
    	if(index < 0){
    		index = 2;
    	}
    	changeImag();
    }
    //点击右边的按钮
    right_btn.onclick = function(){
    	index++;
    	if(index>2){
    		index = 0;
    	}
    	changeImag();
    }

    //点击导航图
    for(var i = 0;i< menu_items.length;i++){
    	 menu_items[i].setAttribute("content_index",i);
    	//又是闭包的问题,请注意里面的坑,进入function之后变量的作用域就会发生改变
        menu_items[i].onmouseover = function(){
    	    menu_box.className = "menu-box";
    	    var idx = this.getAttribute("content_index")
    	    for(var j= 0;j<menu_content.length;j++){
    			menu_content[j].style.display = "none";
    	    }
    	    menu_content[idx].style.display = "block";

        }
         	
    }
    menu.onmouseout = function(){
            menu_box.className = "menu-box hide";
            for(var j= 0;j<menu_content.length;j++){
                menu_content[j].style.display = "none";
            }
                
    } 
    menu_box.onmouseover = function(){
    	this.className = "menu-box";
        for(var j= 0;j<menu_content.length;j++){
                menu_content[j].style.display = "block";
        }
    }
    menu_box.onmouseout = function(){
        for(var j= 0;j<menu_content.length;j++){
                menu_content[j].style.display = "none";
        }
    	this.className = "menu-box hide";
    } 
   
    
}


sideImage();

老师,为什么最后我从主菜单左移的时候,二级菜单显示不出来,我看您视频中也有这个bug,但是您添加了一段代码:

 subMenu.onmouseover = function(){

        this.className = "sub-menu ";

    }

然后就解决了这个问题,为啥我的不好使呢???

写回答

1回答

好帮手慕糖

2018-12-21

同学你好,你是指如下这里,在鼠标从主菜单移入到二级菜单的时候,二级菜单显示吗?

http://img.mukewang.com/climg/5c1ccbe8000195be08820408.jpg

若是这里的话,同学的html结构不行哦,这里老师有使用一个大盒子来包裹整体的子菜单内容,而同学的没有哦,如下,建议:同学可以在看下课程,先理下思路,然后调整html结构哦。

http://img.mukewang.com/climg/5c1cccf80001ccd306830409.jpg

若同学指的不是这里,可以详细描述下,再次提问哦。

希望能帮助到你,祝学习愉快!

0
hlfrank
h 谢谢老师!
h018-12-22
共1条回复

0 学习 · 36712 问题

查看课程