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 相关文章推荐
老鱼 浅谈javascript面向对象编程
Mar 04 Javascript
js 内存释放问题
Apr 25 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
Dec 13 Javascript
js实现二代身份证号码验证详解
Nov 20 Javascript
JavaScript中使用Math.floor()方法对数字取整
Jun 15 Javascript
基于jQuery的Web上传插件Uploadify使用示例
May 19 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
Feb 08 Javascript
基于JavaScript实现全选、不选和反选效果
Feb 15 Javascript
JS对象创建的几种方式整理
Feb 28 Javascript
基于Node.js模板引擎教程-jade速学与实战1
Sep 17 Javascript
vue:el-input输入时限制输入的类型操作
Aug 05 Javascript
JavaScript实现拖动对话框效果的实现代码
Oct 12 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
SONY SRF-22W(33W)的电路分析和维修案例
2021/03/02 无线电
小偷PHP+Html+缓存
2006/12/20 PHP
在Yii框架中使用PHP模板引擎Twig的例子
2014/06/13 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
2016/03/21 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
2019/10/20 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
jQuery操作Select选择的Text和Value(获取/设置/添加/删除)
2013/03/06 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
2013/08/01 Javascript
Node.js中调用mysql存储过程示例
2014/12/20 Javascript
javascript实现模拟时钟的方法
2015/05/13 Javascript
JS实现队列的先进先出功能示例
2017/05/10 Javascript
Vue.js组件高级特性实例详解
2018/12/24 Javascript
ES6中Set和Map用法实例详解
2020/03/02 Javascript
nuxt+axios实现打包后动态修改请求地址的方法
2020/04/22 Javascript
为react组件库添加typescript类型提示的方法
2020/06/15 Javascript
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
Python遍历文件夹和读写文件的实现代码
2016/08/28 Python
python 不以科学计数法输出的方法
2018/07/16 Python
python 3调用百度OCR API实现剪贴板文字识别
2018/09/04 Python
Python对切片命名的实现方法
2018/10/16 Python
Python3从零开始搭建一个语音对话机器人的实现
2019/08/23 Python
Django中提示消息messages的设置方式
2019/11/15 Python
Pytorch中的自动求梯度机制和Variable类实例
2020/02/29 Python
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
2014/03/30 面试题
大学生的创业计划书就该这么写
2014/01/30 职场文书
大学生素质拓展活动方案
2014/02/11 职场文书
妇女儿童发展规划实施方案
2014/03/16 职场文书
公开服务承诺制度
2014/03/26 职场文书
中餐厅经理岗位职责
2014/04/11 职场文书
感恩小明星事迹材料
2014/05/23 职场文书
普通党员对照检查材料
2014/08/28 职场文书
工作时间调整通知
2015/04/24 职场文书
培训讲师开场白
2015/06/01 职场文书
信用卡工资证明范本
2015/06/19 职场文书
地震捐款简报
2015/07/21 职场文书
MySQL的安装与配置详细教程
2021/06/26 MySQL