JS+CSS实现大气清新的滑动菜单效果代码


Posted in Javascript onOctober 22, 2015

本文实例讲述了JS+CSS实现大气清新的滑动菜单效果代码。分享给大家供大家参考,具体如下:

这是一款比较大气清新的滑动导航菜单,CSS和JavaScript配合完成,鼠标放到一级菜单上,会滑出二级的菜单,兼容性也不错,适合大多数网站使用,用到两张背景图片,请拷贝图片地址下载图片。

运行效果截图如下:

JS+CSS实现大气清新的滑动菜单效果代码

在线演示地址如下:

具体代码如下:

<!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>滑动导航菜单</title>
<style>
body {margin:25px; font:12px Verdana, Arial, Helvetica}
* {padding:0; margin:0}
.dropdown {float:left; padding-right:5px}
.dropdown dt {width:188px; border:2px solid #9ac1c9; padding:8px; font-weight:bold; cursor:pointer; background:url(images/header.gif)}
.dropdown dt:hover {background:url(images/header_over.gif)}
.dropdown dd {position:absolute; overflow:hidden; width:208px; display:none; background:#fff; z-index:200; opacity:0}
.dropdown ul {width:204px; border:2px solid #9ac1c9; list-style:none; border-top: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;
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);
  if(c.maxh && c.maxh <= c.offsetHeight){return}
  else if(!c.maxh){
   c.style.display = 'block';
   c.style.height = 'auto';
   c.maxh = c.offsetHeight;
   c.style.height = '0px';
  }
  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 < 2 && d != 1) || (currh > (c.maxh - 2) && d == 1)){
  clearInterval(c.timer);
 }
}
</script>
</head>
<body>
<dl class="dropdown">
 <dt id="one-ddheader" 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="#" class="underline">脚本资源</a></li>
   <li><a href="#">Ajax实例</a></li>
  </ul>
 </dd>
</dl>
<dl class="dropdown">
 <dt id="two-ddheader" 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">菜单导航</a></li>
   <li><a href="#" class="underline">层和布局</a></li>
   <li><a href="#" class="underline">图片特效</a></li>
  </ul>
 </dd>
</dl>
</body>
</html>

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

Javascript 相关文章推荐
iframe子页面获取父页面元素的方法
Nov 05 Javascript
JS判断对象是否存在的10种方法总结
Dec 23 Javascript
JS小游戏之宇宙战机源码详解
Sep 25 Javascript
基于javascript实现根据身份证号码识别性别和年龄
Jan 22 Javascript
Node.js实现JS文件合并小工具
Feb 02 Javascript
JS只能输入正整数的简单实例
Oct 07 Javascript
JavaScript模仿Pinterest实现图片预加载功能
Oct 25 Javascript
详解使用nvm安装node.js
Jul 18 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
Sep 10 Javascript
vue轮播组件实现$children和$parent 附带好用的gif录制工具
Sep 26 Javascript
Vue管理系统前端之组件拆分封装详解
Aug 23 Javascript
Element-ui upload上传文件限制的解决方法
Jan 22 Javascript
Webpack 实现 Node.js 代码热替换
Oct 22 #Javascript
JS+CSS实现仿msn风格选项卡效果代码
Oct 22 #Javascript
Node.js巧妙实现Web应用代码热更新
Oct 22 #Javascript
深入剖析JavaScript编程中的对象概念
Oct 21 #Javascript
JavaScript中Boolean对象的属性解析
Oct 21 #Javascript
深入解析JavaScript中的数字对象与字符串对象
Oct 21 #Javascript
jQuery无刷新切换主题皮肤实例讲解
Oct 21 #Javascript
You might like
用php实现的获取网页中的图片并保存到本地的代码
2010/01/05 PHP
php实现的DateDiff和DateAdd时间函数代码分享
2014/08/16 PHP
Laravel框架实现多个视图共享相同数据的方法详解
2019/07/09 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
2019/10/16 PHP
用JavaScript事件串连执行多个处理过程的方法
2007/03/09 Javascript
javascript 单例/单体模式(Singleton)
2011/04/07 Javascript
JavaScript 更严格的相等 [译]
2012/09/20 Javascript
jquery slibings选取同级其他元素的实现代码
2013/11/15 Javascript
js获取input长度并根据页面宽度设置其大小及居中对齐
2014/08/22 Javascript
JavaScript把数组作为堆栈使用的方法
2015/03/20 Javascript
适用于手机端的jQuery图片滑块动画
2016/12/09 Javascript
JS动态修改网页body的背景色实例代码
2017/10/07 Javascript
详解Angular5 服务端渲染实战
2018/01/04 Javascript
详解webpack打包后如何调试的方法步骤
2018/11/07 Javascript
Vue项目移动端滚动穿透问题的实现
2020/05/19 Javascript
Python跳出循环语句continue与break的区别
2014/08/25 Python
python和bash统计CPU利用率的方法
2015/07/10 Python
python字典的常用操作方法小结
2016/05/16 Python
python基础教程之五种数据类型详解
2017/01/12 Python
python itchat实现微信自动回复的示例代码
2017/08/14 Python
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
2019/07/30 Python
在python image 中安装中文字体的实现方法
2019/08/22 Python
Python 导入文件过程图解
2019/10/15 Python
Python中顺序表原理与实现方法详解
2019/12/03 Python
Django User 模块之 AbstractUser 扩展详解
2020/03/11 Python
Python验证码截取识别代码实例
2020/05/16 Python
python redis存入字典序列化存储教程
2020/07/16 Python
意大利奢华内衣制造商:Cosabella
2017/08/29 全球购物
集体婚礼策划方案
2014/02/22 职场文书
出国留学担保书
2014/05/20 职场文书
机关作风建设工作总结
2014/10/23 职场文书
2014年学校团委工作总结
2014/12/20 职场文书
Go语言中的UTF-8实现
2021/04/26 Golang
Java常用函数式接口总结
2021/06/29 Java/Android
Win10服务主机占用内存怎么办?Win10服务主机进程占用大量内存解决方法
2022/09/23 数码科技