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 相关文章推荐
几个有趣的Javascript Hack
Jul 24 Javascript
jquery验证手机号码、邮箱格式是否正确示例代码
Jul 28 Javascript
extjs表格文本启用选择复制功能具体实现
Oct 11 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
Aug 24 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
Jun 17 Javascript
JQuery DIV 动态隐藏和显示的方法
Jun 23 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
Dec 22 Javascript
JS 插件dropload下拉刷新、上拉加载使用小结
Apr 13 Javascript
BetterScroll 在移动端滚动场景的应用
Sep 18 Javascript
使用JS获取SessionStorage的值
Jan 12 Javascript
微信小程序点击图片实现长按预览、保存、识别带参数二维码、转发等功能
Jul 20 Javascript
jQuery实现颜色打字机的完整代码
Mar 19 jQuery
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
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
2017/06/17 PHP
JavaScript学习笔记(十)
2010/01/17 Javascript
基于jQuery的弹出消息插件 DivAlert之旅(一)
2010/04/01 Javascript
如何将php数组或者对象传递给javascript
2014/03/20 Javascript
浅谈Javascript的静态属性和原型属性
2015/05/07 Javascript
jquery.flot.js简单绘制折线图用法示例
2017/03/13 Javascript
jquery.validate表单验证插件使用详解
2017/06/21 jQuery
jQuery+Datatables实现表格批量删除功能【推荐】
2018/10/24 jQuery
小程序中canvas的drawImage方法参数使用详解
2019/07/04 Javascript
JavaScript对象原型链原理详解
2020/02/05 Javascript
VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)
2020/04/03 Javascript
Vue3+elementui plus创建项目的方法
2020/12/01 Vue.js
[03:56]显微镜下的DOTA2第十一期——鬼畜的死亡先知播音员
2014/06/23 DOTA
在Django的URLconf中使用多个视图前缀的方法
2015/07/18 Python
深入讲解Python编程中的字符串
2015/10/14 Python
python多线程方式执行多个bat代码
2016/06/07 Python
Tensorflow 合并通道及加载子模型的方法
2018/07/26 Python
Python简单过滤字母和数字的方法小结
2019/01/09 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
2019/07/09 Python
解决Django后台ManyToManyField显示成Object的问题
2019/08/09 Python
使用Python函数进行模块化的实现
2019/11/15 Python
卡西欧G-SHOCK英国官网: 防水防震手表
2018/01/08 全球购物
如何整合JQuery和Prototype
2014/01/31 面试题
生态学毕业生自荐信
2013/10/27 职场文书
中学生运动会入场词
2014/02/12 职场文书
三项教育活动实施方案
2014/03/30 职场文书
努力学习演讲稿
2014/05/10 职场文书
2014教育局对照检查材料思想汇报
2014/09/23 职场文书
2014幼儿园大班工作总结
2014/11/10 职场文书
保管员岗位职责
2015/02/14 职场文书
2015年生活老师工作总结
2015/05/27 职场文书
Python还能这么玩之只用30行代码从excel提取个人值班表
2021/06/05 Python
详解NodeJS模块化
2021/06/15 NodeJs
vue判断按钮是否可以点击
2022/04/09 Vue.js
Python万能模板案例之matplotlib绘制直方图的基本配置
2022/04/13 Python
postgresql中如何执行sql文件
2023/05/08 PostgreSQL