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 多种搜索引擎集成的页面实现代码
Jan 02 Javascript
jquery uploadify隐藏上传进度的实现方法
Feb 06 Javascript
Vue调试神器vue-devtools安装方法
Dec 12 Javascript
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
Apr 17 jQuery
elementUI select组件默认选中效果实现的方法
Mar 25 Javascript
js实现继承的方法及优缺点总结
May 08 Javascript
微信小程序开发实现消息推送
Nov 18 Javascript
layer iframe 设置关闭按钮的方法
Sep 12 Javascript
微信小程序修改数组长度的问题的解决
Dec 17 Javascript
JavaScript 严格模式(use strict)用法实例分析
Mar 04 Javascript
JavaScript实现矩形块大小任意缩放
Aug 25 Javascript
超详细小程序定位地图模块全系列开发教学
Nov 24 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 攻击方法之谈php+mysql注射语句构造
2009/10/30 PHP
php+xml编程之xpath的应用实例
2015/01/24 PHP
yii,CI,yaf框架+smarty模板使用方法
2015/12/29 PHP
JavaScript 克隆数组最简单的方法
2009/02/12 Javascript
ExtJs的Date格式字符代码
2010/12/30 Javascript
js禁止回车提交表单的示例代码
2013/12/23 Javascript
js实现缓冲运动效果的方法
2015/04/10 Javascript
JavaScript简单实现弹出拖拽窗口(二)
2016/06/17 Javascript
Node.js v8.0.0正式发布!看看带来了哪些主要新特性
2017/06/02 Javascript
vue watch深度监听对象实现数据联动效果
2018/08/16 Javascript
微信小程序开发之自定义tabBar的实现
2018/09/06 Javascript
vue2.0中set添加属性后视图不能更新的解决办法
2019/02/22 Javascript
详解Vue 如何监听Array的变化
2019/06/06 Javascript
Vue的Options用法说明
2020/08/14 Javascript
js实现滚动条自动滚动
2020/12/13 Javascript
[02:15]你好,这就是DOTA!
2015/08/05 DOTA
[07:01]DOTA2-DPC中国联赛正赛 Aster vs Magma 3月5日 赛后选手采访
2021/03/11 DOTA
python删除列表中重复记录的方法
2015/04/28 Python
rabbitmq(中间消息代理)在python中的使用详解
2017/12/14 Python
python实现自动登录
2018/09/17 Python
Python pandas RFM模型应用实例详解
2019/11/20 Python
python scrapy重复执行实现代码详解
2019/12/28 Python
django 多数据库及分库实现方式
2020/04/01 Python
python:HDF和CSV存储优劣对比分析
2020/06/08 Python
css3和jquery实现自定义checkbox和radiobox组件
2014/04/22 HTML / CSS
新加坡网上花店:FlowerAdvisor新加坡
2018/10/05 全球购物
军校大学生个人的自我评价
2014/02/17 职场文书
中班开学寄语
2014/04/04 职场文书
常务副总经理任命书
2014/06/05 职场文书
营销与策划专业求职信
2014/06/20 职场文书
教育局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
就业协议书范本
2014/10/08 职场文书
老人再婚离婚协议书范本
2014/10/27 职场文书
试用期辞职信范文
2015/03/02 职场文书
2016高考寄语或鼓励的话语
2015/12/04 职场文书
DQL数据查询语句使用示例
2022/12/24 MySQL