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 相关文章推荐
ASP.NET jQuery 实例4(复制TextBox的文本到本地剪贴板上)
Jan 13 Javascript
jquery.validate.js插件使用经验记录
Jul 02 Javascript
微信小程序 页面跳转和数据传递实例详解
Jan 19 Javascript
Node.js操作redis实现添加查询功能
May 25 Javascript
bootstrap选项卡扩展功能详解
Jun 14 Javascript
手把手教你写一个微信小程序(推荐)
Oct 17 Javascript
vue项目每30秒刷新1次接口的实现方法
Dec 04 Javascript
vue实现的下拉框功能示例
Jan 29 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
Sep 11 Javascript
vue项目出现页面空白的解决方案
Oct 31 Javascript
JS中的模糊查询功能
Dec 08 Javascript
JavaScript鼠标拖拽事件详解
Apr 03 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设计模式 Singleton(单例模式)
2011/06/26 PHP
PHP中使用循环实现的金字塔图形
2014/11/08 PHP
PHP中Closure类的使用方法及详解
2015/10/09 PHP
php面向对象编程self和static的区别
2016/05/08 PHP
jQuery源码分析-04 选择器-Sizzle-工作原理分析
2011/11/14 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
IE 下Enter提交表单存在重复提交问题的解决方法
2014/05/04 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
JavaScript判断文件上传类型的方法
2014/09/02 Javascript
生成二维码方法汇总
2014/12/26 Javascript
代码分析jQuery四种静态方法使用
2015/07/23 Javascript
详解iframe与frame的区别
2016/01/13 Javascript
Bootstrap学习笔记之css样式设计(1)
2016/06/07 Javascript
使用jquery给指定的table动态添加一行、删除一行
2016/10/13 Javascript
过期软件破解办法实例详解
2017/01/04 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
2017/02/20 Javascript
js实现返回顶部效果
2017/03/10 Javascript
ES6下React组件的写法示例代码
2017/05/04 Javascript
浅谈js中的bind
2019/03/18 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
[01:10:02]IG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python字典多条件排序方法实例
2014/06/30 Python
python批量生成本地ip地址的方法
2015/03/23 Python
python最小生成树kruskal与prim算法详解
2019/01/17 Python
Python使用sax模块解析XML文件示例
2019/04/04 Python
Python实现word2Vec model过程解析
2019/12/16 Python
Django如何批量创建Model
2020/09/01 Python
惠普新加坡官方商店:HP Singapore
2020/04/17 全球购物
行政管理专业推荐信
2013/11/02 职场文书
公司财务自我评价分享
2013/12/17 职场文书
进步之星获奖感言
2014/02/22 职场文书
乡镇四风对照检查材料
2014/08/31 职场文书
高中生个性发展自我评价
2015/03/09 职场文书
民事上诉状范文
2015/05/22 职场文书
用Java实现简单计算器功能
2021/07/21 Java/Android
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android