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 相关文章推荐
图片自动缩小的js代码,用以防止图片撑破页面
Mar 12 Javascript
jQuery 学习6 操纵元素显示效果的函数
Feb 07 Javascript
jQuery如何将选中的对象转化为原始的DOM对象
Jun 09 Javascript
jquery实现简单的全选和反选功能
Jan 02 Javascript
JS使用单链表统计英语单词出现次数
Jun 16 Javascript
AngularJs concepts详解及示例代码
Sep 01 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
Dec 21 Javascript
vue.js中mint-ui框架的使用方法
May 12 Javascript
Javascript实现倒计时时差效果
May 18 Javascript
详解vue-resource promise兼容性问题
Jun 20 Javascript
vue组件watch属性实例讲解
Nov 07 Javascript
vue项目中引入noVNC远程桌面的方法
Mar 05 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动态生成虚拟现实VRML网页
2006/10/09 PHP
php shell超强免杀、减少体积工具实现代码
2012/10/16 PHP
php随机显示指定文件夹下图片的方法
2015/07/13 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
PHP whois查询类定义与用法示例
2019/04/03 PHP
XML的代替者----JSON
2007/07/21 Javascript
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
关于javascript中的parseInt使用技巧
2009/09/03 Javascript
javascript dom 基本操作小结
2010/04/11 Javascript
javascript dom追加内容实现示例
2013/09/21 Javascript
js字符串转成JSON
2013/11/07 Javascript
使用js获取图片原始尺寸
2014/12/03 Javascript
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
Javascript中的arguments与重载介绍
2015/03/15 Javascript
Javascript监视变量变化的方法
2015/06/09 Javascript
jquery实现简单Tab切换菜单效果
2020/07/17 Javascript
jQuery简单实现列表隐藏和显示效果示例
2016/09/12 Javascript
JS常见创建类的方法小结【工厂方式,构造器方式,原型方式,联合方式等】
2017/04/01 Javascript
Vue组件模板形式实现对象数组数据循环为树形结构(实例代码)
2017/07/31 Javascript
js+css实现红包雨效果
2018/07/12 Javascript
jQuery中each和js中forEach的区别分析
2019/02/27 jQuery
[02:31]《DAC最前线》之选手酒店现场花絮
2015/01/30 DOTA
[39:53]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.19
2020/11/19 DOTA
简单介绍Python中的几种数据类型
2016/01/02 Python
Python 私有化操作实例分析
2019/11/21 Python
python实现while循环打印星星的四种形状
2019/11/23 Python
为什么称python为胶水语言
2020/06/16 Python
Champion澳大利亚官网:美国冠军运动服装
2018/05/07 全球购物
自荐信范文
2013/12/10 职场文书
前台文员个人求职信范文
2014/01/05 职场文书
办理居住证介绍信
2014/01/15 职场文书
行政监察建议书
2014/05/19 职场文书
不错的求职信范文
2014/07/20 职场文书
关于做家务的心得体会
2016/01/23 职场文书
vue-router中hash模式与history模式的区别
2021/06/23 Vue.js
MySQL外键约束(FOREIGN KEY)案例讲解
2021/08/23 MySQL