JavaScript实现横向滑出的多级菜单效果


Posted in Javascript onOctober 09, 2015

本文实例讲述了JavaScript实现横向滑出的多级菜单效果。分享给大家供大家参考。具体如下:

这是一款JavaScript横向滑出的多级菜单,只用鼠标放上就可以动画出现二级菜单,整体设计精美,大气,博客上也可以用哦。

运行效果截图如下:

JavaScript实现横向滑出的多级菜单效果

在线演示地址如下:

具体代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>JavaScript横向滑出的多级菜单</title>
<style>
* {padding:0; margin:0}
body {font:12px Verdana, Arial, Helvetica}
#wrapper {width:750px; padding:25px; margin:0 auto}
#leftcolumn {float:left; width:225px}
#rightcolumn {float:left; width:525px}
.dropdown {display:block; position:relative}
.dropdown dt {width:188px; border:2px solid #9ac1c9; padding:8px; font-weight:bold; cursor:pointer; background:url(images/header.gif)}
.dropdown .upperdd {border-bottom:none}
.dropdown dt:hover {background:url(images/header_over.gif)}
.dropdown dd {position:absolute; top:0; overflow:hidden; width:208px; display:none; background:#fff; opacity:0}
.dropdown ul {width:204px; border:2px solid #9ac1c9; list-style:none}
.dropdown li {display:inline}
.dropdown a, .dropdown a:active, .dropdown a:visited {display:block; padding:5px; color:#333; text-decoration:none; background:#eaf0f2; width:194px}
.dropdown a:hover {background:#d9e1e4; color:#000}
.dropdown .underline {border-bottom:1px solid #b9d6dc}
</style>
<script type="text/javascript">
var DDSPEED = 10;
var DDTIMER = 15;
var OFFSET = -2;
var ZINT = 100;
function ddMenu(id,d){
 var h = document.getElementById(id + '-ddheader');
 var c = document.getElementById(id + '-ddcontent');
 clearInterval(c.timer);
 if(d == 1){
  clearTimeout(h.timer);
  c.style.display = 'block';
  if(c.maxh && c.maxh <= c.offsetHeight){return}
  else if(!c.maxh){
   c.style.left = (h.offsetWidth + OFFSET) + 'px';
   c.style.height = 'auto';
   c.maxh = c.offsetHeight;
   c.style.height = '0px';
  }
  ZINT = ZINT + 1;
  c.style.zIndex = ZINT;
  c.timer = setInterval(function(){ddSlide(c,1)},DDTIMER);
 }else{
  h.timer = setTimeout(function(){ddCollapse(c)},50);
 }
}
function ddCollapse(c){
 c.timer = setInterval(function(){ddSlide(c,-1)},DDTIMER);
}
function cancelHide(id){
 var h = document.getElementById(id + '-ddheader');
 var c = document.getElementById(id + '-ddcontent');
 clearTimeout(h.timer);
 clearInterval(c.timer);
 if(c.offsetHeight < c.maxh){
  c.timer = setInterval(function(){ddSlide(c,1)},DDTIMER);
 }
}
function ddSlide(c,d){
 var currh = c.offsetHeight;
 var dist;
 if(d == 1){
  dist = Math.round((c.maxh - currh) / DDSPEED);
 }else{
  dist = Math.round(currh / DDSPEED);
 }
 if(dist <= 1 && d == 1){
  dist = 1;
 }
 c.style.height = currh + (dist * d) + 'px';
 c.style.opacity = currh / c.maxh;
 c.style.filter = 'alpha(opacity=' + (currh * 100 / c.maxh) + ')';
 if(currh > (c.maxh - 2) && d == 1){
  clearInterval(c.timer);
 }else if(dist < 1 && d != 1){
  clearInterval(c.timer);
  c.style.display = 'none';
 }
}
</script>
</head>
<body>
<div id="wrapper">
<div id="leftcolumn">
 <dl class="dropdown">
  <dt id="one-ddheader" class="upperdd" onmouseover="ddMenu('one',1)" onmouseout="ddMenu('one',-1)">我们首页</dt>
  <dd id="one-ddcontent" onmouseover="cancelHide('one')" onmouseout="ddMenu('one',-1)">
   <ul>
    <li><a href="#" class="underline">脚本主页</a></li>
    <li><a href="#" class="underline">网页特效</a></li>
    <li><a href="#">脚本下载</a></li>
   </ul>
  </dd>
 </dl>
 <dl class="dropdown">
  <dt id="two-ddheader" class="upperdd" onmouseover="ddMenu('two',1)" onmouseout="ddMenu('two',-1)">网站导航</dt>
  <dd id="two-ddcontent" onmouseover="cancelHide('two')" onmouseout="ddMenu('two',-1)">
   <ul>
    <li><a href="#" class="underline">ASP</a></li>
    <li><a href="#" class="underline">PHP</a></li>
    <li><a href="#" class="underline">.NET</a></li>
    <li><a href="#">网站留言</a></li>
   </ul>
  </dd>
 </dl>
 <dl class="dropdown">
  <dt id="three-ddheader" class="upperdd">最新下载</dt>
 </dl>
 <dl class="dropdown">
  <dt id="four-ddheader" onmouseover="ddMenu('four',1)" onmouseout="ddMenu('four',-1)">欢迎回来</dt>
  <dd id="four-ddcontent" onmouseover="cancelHide('four')" onmouseout="ddMenu('four',-1)">
   <ul>
    <li><a href="#" class="underline">欢迎再来</a></li>
    <li><a href="#">慢走,不送</a></li>
   </ul>
  </dd>
 </dl>
</div>
</div>
</body>
</html>

希望本文所述对大家的JavaScript程序设计有所帮助。

Javascript 相关文章推荐
学习ExtJS form布局
Oct 08 Javascript
再谈javascript 动态添加样式规则 W3C校检
Dec 25 Javascript
两种方法实现文本框输入内容提示消失
Mar 17 Javascript
使用js dom和jquery分别实现简单增删改
Sep 11 Javascript
Webwork 实现文件上传下载代码详解
Feb 02 Javascript
Node.js模块封装及使用方法
Mar 06 Javascript
再谈javascript常见错误及解决方法
Sep 16 Javascript
JavaScript编写一个简易购物车功能
Sep 17 Javascript
jQuery无刷新上传之uploadify简单代码
Jan 17 Javascript
vuex的使用及持久化state的方式详解
Jan 23 Javascript
Vue-cli Eslint在vscode里代码自动格式化的方法
Feb 23 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
Aug 07 Javascript
JS实现样式清新的横排下拉菜单效果
Oct 09 #Javascript
jQuery表格行上移下移和置顶的实现方法
Oct 08 #Javascript
Jquery中使用show()与hide()方法动画显示和隐藏图片
Oct 08 #Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
Oct 08 #Javascript
js小数运算出现多位小数如何解决
Oct 08 #Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
Oct 08 #Javascript
js实现超酷的照片墙展示效果图附源码下载
Oct 08 #Javascript
You might like
PHP下几种删除目录的方法总结
2007/08/19 PHP
分割GBK中文遭遇乱码的解决方法
2013/08/09 PHP
php将图片文件转换成二进制输出的方法
2015/06/10 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
2017/01/30 PHP
event.keyCode键码值表 附只能输入特定的字符串代码
2009/05/15 Javascript
JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述
2010/04/15 Javascript
JavaScript的Module模式编程深入分析
2013/08/13 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
JS获取浏览器语言动态加载JS文件示例代码
2014/10/31 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
2015/09/17 Javascript
JS实现alert中显示换行的方法
2015/12/17 Javascript
JavaScript中数组常见操作技巧
2017/09/01 Javascript
vue实现组件之间传值功能示例
2018/07/13 Javascript
命令行批量截图Node脚本示例代码
2019/01/25 Javascript
详解基于Wepy开发小程序插件(推荐)
2019/08/01 Javascript
微信小程序以ssm做后台开发的实现示例
2020/04/08 Javascript
[44:15]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第二局
2016/03/06 DOTA
Python如何为图片添加水印
2016/11/25 Python
Django实现支付宝付款和微信支付的示例代码
2018/07/25 Python
python 高效去重复 支持GB级别大文件的示例代码
2018/11/08 Python
python组合无重复三位数的实例
2018/11/13 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
Python字典dict常用方法函数实例
2020/11/09 Python
python3实现简单飞机大战
2020/11/29 Python
卫校毕业生自我鉴定
2013/10/31 职场文书
施工班组长岗位职责
2014/01/05 职场文书
春节联欢晚会主持词
2014/03/24 职场文书
工地标语大全
2014/06/18 职场文书
个人违纪检讨书
2014/09/15 职场文书
2014年机关党建工作总结
2014/11/11 职场文书
六一儿童节主持开场白
2015/05/28 职场文书
导游词之丽江普济寺
2019/10/22 职场文书
python urllib库的使用详解
2021/04/13 Python
python实现局部图像放大
2021/11/17 Python
MySQL磁盘碎片整理实例演示
2022/04/03 MySQL