JavaScript下拉菜单功能实例代码
本文给大家分享一段实例代码关于js实现下拉菜单功能,具体代码如下所示:
<!doctypehtml>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>下拉菜单</title>
<styletype="text/css">
body,
ul,
li{
margin:0;
padding:0;
font-size:13px;
}
ul,
li{
list-style:none;
}
#divselect{
width:186px;
margin:80pxauto;
position:relative;
z-index:10000;
}
#divselectcite{
width:150px;
height:24px;
line-height:24px;
display:block;
color:#807a62;
cursor:pointer;
font-style:normal;
padding-left:4px;
padding-right:30px;
border:1pxsolid#333333;
/*background:url(xjt.png)no-repeatrightcenter;*/
}
cite:before{
content:'';
position:absolute;
right:7px;
bottom:7px;
width:0;
height:0;
border-width:4px;
border-style:solid;
border-color:#888transparenttransparenttransparent;
transition:all0.2s;
-webkit-transition:all0.2s;
-moz-transition:all0.2s;
-o-transition:all0.2s;
-ms-transition:all0.2s;
transform-origin:50%25%;
-ms-transform-origin:50%25%;
-moz-transform-origin:50%25%;
-webkit-transform-origin:50%25%;
-o-transform-origin:50%25%;
}
.extendedcite:before{
transform:rotate(180deg);
-webkit-transform:rotate(180deg);
-moz-transform:rotate(180deg);
-o-transform:rotate(180deg);
-ms-transform:rotate(180deg);
}
#divselectul{
width:184px;
border:1pxsolid#333333;
background-color:#ffffff;
position:absolute;
z-index:20000;
margin-top:-1px;
display:none;
}
#divselectulli{
height:24px;
line-height:24px;
}
#divselectullia{
display:block;
height:24px;
color:#333333;
text-decoration:none;
padding-left:10px;
padding-right:10px;
}
.animated{
animation-fill-mode:both;
-webkit-animation-fill-mode:both;
-moz-animation-fill-mode:both;
-o-animation-fill-mode:both;
-ms-animation-fill-mode:both;
}
.speed_fast{
animation-duration:.3s;
/*-webkit-animation-duration:0.2s;
-moz-animation-duration:0.2s;
-o-animation-duration:0.2s;
-ms-animation-duration:0.2s;*/
}
.anim_extendDown{
animation-name:extendDown;
-webkit-animation-name:extendDown;
-moz-animation-name:extendDown;
-o-animation-name:extendDown;
-ms-animation-name:extendDown;
}
@keyframesextendDown{
0%{
border-bottom-color:transparent;
height:0;
}
100%{
border-bottom-color:#333;
height:120px;
}
}
@-webkit-keyframesextendDown{
0%{
border-bottom-color:transparent;
height:0;
}
100%{
border-bottom-color:#333;
height:120px;
}
}
@-moz-keyframesextendDown{
0%{
border-bottom-color:transparent;
height:0;
}
100%{
border-bottom-color:#333;
height:120px;
}
}
@-o-keyframesextendDown{
0%{
border-bottom-color:transparent;
height:0;
}
100%{
border-bottom-color:#333;
height:120px;
}
}
@-ms-keyframesextendDown{
0%{
border-bottom-color:transparent;
height:0;
}
100%{
border-bottom-color:#333;
height:120px;
}
}
</style>
</head>
<body>
<divid="divselect">
<cite>请选择分类</cite>
<ul>
<liid="li">
<ahref="javascript:;"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"selectid="1">ASP开发</a>
</li>
<li>
<ahref="javascript:;"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"selectid="2">.NET开发</a>
</li>
<li>
<ahref="javascript:;"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"selectid="3">PHP开发</a>
</li>
<li>
<ahref="javascript:;"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"selectid="4">Javascript开发</a>
</li>
<li>
<ahref="javascript:;"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"rel="externalnofollow"selectid="5">Java特效</a>
</li>
</ul>
</div>
<scripttype="text/javascript">
window.onload=function(){
varbox=document.getElementById('divselect'),
title=box.getElementsByTagName('cite')[0],
menu=box.getElementsByTagName('ul')[0],
as=box.getElementsByTagName('a'),
index=-1;
//初始样式
functionresetM(){
box.className="";
menu.className="";
menu.style.display="none";
index=-1;
resetA();
}
//清空a选项样式
functionresetA(){
for(vari=0;i<as.length;i++){
as[i].style.background="#fff";
}
}
//点击三角时
title.onclick=function(event){
//阻止事件冒泡
event=event||window.event;
event.stopPropagation?event.stopPropagation():event.cancelBubble=true;
if(box.className=="extended"){
resetM();
}else{
box.className="extended";//给box加类名让三角旋转
menu.className="animatedspeed_fastanim_extendDown";//下拉菜单的下拉动画
menu.style.display="block";
}
}
document.onkeydown=function(event){
event=event||window.event;
if(box.className=="extended"){
if(event.keyCode==38){//向上键
event.preventDefault?event.preventDefault():event.returnValue=false;
index--;
if(index==-1){
index=as.length-1;
}
resetA();
as[index].style.background="#ccc";
}elseif(event.keyCode==40){//向下键
event.preventDefault?event.preventDefault():event.returnValue=false;
index++;
if(index==as.length){
index=0;
}
resetA();
as[index].style.background="#ccc";
}elseif(event.keyCode==13){//回车键
event.preventDefault?event.preventDefault():event.returnValue=false;
title.innerHTML=as[index].innerHTML;
resetM();
}
}
}
//滑过滑过、离开、点击每个选项时
for(vari=0;i<as.length;i++){
as[i].onmouseover=function(){
resetA();
this.style.background="#ccc";
index=this.getAttribute('selectid')-1;
}
as[i].onclick=function(){
resetM();
title.innerHTML=this.innerHTML;
}
}
//点击页面空白处时
document.onclick=function(){
resetM();
}
}
</script>
</body>
</html>
1、要阻止事件冒泡
2、键盘事件,用index索引
3、通过设置类名或清空类名的方式给元素增加动画和恢复原有样式
以上所述是小编给大家介绍的JavaScript下拉菜单功能实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!