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 相关文章推荐
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
May 24 Javascript
IE6/7 and IE8/9/10(IE7模式)依次隐藏具有absolute或relative的父元素和子元素后再显示父元素
Jul 31 Javascript
javascript中有趣的反柯里化深入分析
Dec 05 Javascript
JavaScript中的setUTCDate()方法使用详解
Jun 11 Javascript
Jsonp post 跨域方案
Jul 06 Javascript
JavaScript中数组的合并以及排序实现示例
Oct 24 Javascript
关于微信jssdk实现多图片上传的一点心得分享
Dec 13 Javascript
angular2中router路由跳转navigate的使用与刷新页面问题详解
May 07 Javascript
详解js的视频和音频采集
Aug 09 Javascript
JavaScript实用代码小技巧
Aug 23 Javascript
vue各种事件监听实例(小结)
Jun 24 Javascript
ES6中的Javascript解构的实现
Oct 30 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 压缩文件夹的类代码
2009/11/05 PHP
解决ajax+php中文乱码的方法详解
2013/06/09 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
PHP 之 写时复制介绍(Copy On Write)
2014/05/13 PHP
PHP函数按引用传递参数及函数可选参数用法示例
2018/06/04 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
Firefox div高度自适应
2009/04/28 Javascript
validator验证控件使用代码
2010/11/23 Javascript
基于jquery的回到页面顶部按钮
2011/06/27 Javascript
window.requestAnimationFrame是什么意思,怎么用
2013/01/13 Javascript
jQuery中next()方法用法实例
2015/01/07 Javascript
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
jquery操作ul的一些操作笔记整理(干货)
2017/08/31 jQuery
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
用React-Native+Mobx做一个迷你水果商城APP(附源码)
2017/12/25 Javascript
vue 表单输入格式化中文输入法异常问题
2018/05/30 Javascript
Vue 路由 过渡动效 数据获取方法
2018/07/31 Javascript
jQuery+PHP实现上传裁剪图片
2020/06/29 jQuery
vue elementui form表单验证的实现
2018/11/11 Javascript
vue 根据选择条件显示指定参数的例子
2019/11/09 Javascript
浅析vue中的provide / inject 有什么用处
2019/11/10 Javascript
JS实现轮播图效果
2020/01/11 Javascript
JavaScript实现飞舞的泡泡效果
2020/02/07 Javascript
[01:03:50]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第二场 2月7日
2021/03/11 DOTA
Python实现代码统计工具(终极篇)
2016/07/04 Python
Python中元组,列表,字典的区别
2017/05/21 Python
在Python 不同级目录之间模块的调用方法
2019/01/19 Python
python命名空间(namespace)简单介绍
2019/08/10 Python
python每天定时运行某程序代码
2019/08/16 Python
python读取raw binary图片并提取统计信息的实例
2020/01/09 Python
python+Selenium自动化测试——输入,点击操作
2020/03/06 Python
python 两种方法删除空文件夹
2020/09/29 Python
擅自离岗检讨书
2014/09/12 职场文书
2014年新教师工作总结
2014/11/08 职场文书
大学生暑期实践报告
2015/07/13 职场文书
java泛型通配符详解
2021/07/25 Java/Android