JS实现光滑展开合拢的菜单效果代码


Posted in Javascript onSeptember 16, 2015

本文实例讲述了JS实现光滑展开合拢的菜单效果代码。分享给大家供大家参考。具体如下:

这是一个光滑展开又合拢的JS菜单效果,无jQuery插件,完全JavaScript代码实现,没有过多修饰,有兴趣的美化一下,肯定是款不错的折叠菜单。

运行效果截图如下:

JS实现光滑展开合拢的菜单效果代码

在线演示地址如下:

具体代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="html/txt; charset=utf-8" />
<title>光滑展开合拢的JS菜单效果</title>
<style>
*{margin:0;padding:0;}
ul,li{list-style:none;}
#con{width:164px; margin:50px auto 0;}
#con h4.top{ height:4px; width:164px; overflow:hidden;}
#con h4.bottom{height:4px; width:164px;overflow:hidden;}
#con div{height:0px; overflow:hidden;}
#con h3{border-top:2px solid #fff; border-bottom:1px solid #D6EFFF;}
</style>
<script language="javascript">
var speed = 30;
var oCon = null; 
var oH3List = null;
var oDivList = null;
var oUlList = null;
var oldNum = null;
var clickNum = null;
var hideTimer=null;
var showTimer=null;
window.onload=function(){
 oCon = document.getElementById("con");
 oH3List = oCon.getElementsByTagName("h3");
 oUlList = oCon.getElementsByTagName("ul");
 oDivList = oCon.getElementsByTagName("div");
 for(var i=0;i<oUlList.length;i++){
  oH3List[i].xuhao=i;
  oH3List[i].onclick=function(){
   clickNum =this.xuhao;
   changeCatalog();
  };
 }
} 
function changeCatalog(){
 var old_num_2,click_num_2;
 old_num_2 = null;
 click_num_2= null;
 if(oldNum==null){
  click_Num_2=clickNum;
  showTimer = setInterval("showUl("+click_Num_2+")",speed);
 }else if(oldNum == clickNum){
  old_num_2=oldNum;
  hideTimer = setInterval("hideUl("+old_num_2+")",speed);
 }else{
  old_num_2=oldNum;
  click_num_2=clickNum;
  hideTimer = setInterval("hideUl("+old_num_2+")",speed);
  showTimer = setInterval("showUl("+click_num_2+")",speed);
 }
}
function showUl(num){
 var move_num1 =Math.ceil((oUlList[num].offsetHeight-oDivList[num].offsetHeight)/10);
 if(move_num1>=1){
  oDivList[num].style.height = oDivList[num].offsetHeight+move_num1+"px";
 }else{
  oldNum=num;
  clearInterval(showTimer);
 }
}
function hideUl(num){
 var move_num2=Math.ceil((oDivList[num].offsetHeight)/10);
 if(move_num2>0){
  oDivList[num].style.height=oDivList[num].offsetHeight -move_num2+"px";
 }else{
  clearInterval(hideTimer);
  if(clickNum==num){
   oldNum=null;
  }
 }
}
</script>
</head> 
<body>
<div id="con">
 <h4 class="top"></h4>
 <h1></h1>
 <h3>设计素材</h3>
 <div>
  <ul>
   <li>精品图标</li>
   <li>图片幻灯</li>
   <li>网页播放器</li>
  </ul>
 </div>
 <h3>模板素材</h3>
 <div>
  <ul>
   <li>企业网站</li>
   <li>儿童网站</li>
   <li>音乐网站</li>
   <li>Discuz模板</li>
  </ul>
 </div>
 <h3>脚本下载</h3>
 <div>
  <ul>
   <li>jQuery</li>
   <li>Ajax</li>
   <li>PHP</li>
  </ul>
 </div>
 <h3>网页特效</h3>
 <div>
  <ul>
   <li>菜单</li>
   <li>表单</li>
   <li>浏览器</li>
  </ul>
 </div>
 <h4 class="bottom"></h4>
</div> 
</body>
</html>

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

Javascript 相关文章推荐
javascript 动态设置已知select的option的value值的代码
Dec 16 Javascript
javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
Mar 14 Javascript
php对mongodb的扩展(小试牛刀)
Nov 11 Javascript
解析javascript 实用函数的使用详解
May 10 Javascript
JavaScript中的迭代器和生成器详解
Oct 29 Javascript
JavaScript定义类和对象的方法
Nov 26 Javascript
Bootstrap3学习笔记(三)之表格
May 20 Javascript
angularjs 源码解析之injector
Aug 22 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
Sep 06 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
Jan 08 Javascript
基于Vue框架vux组件库实现上拉刷新功能
Nov 28 Javascript
JS运算符简单用法示例
Jan 19 Javascript
jQuery实现两款有动画功能的导航菜单代码
Sep 16 #Javascript
javascript中的previousSibling和nextSibling的正确用法
Sep 16 #Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
Sep 16 #Javascript
JS+CSS实现的经典tab选项卡效果代码
Sep 16 #Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
Sep 16 #Javascript
jQuery实现的超酷苹果风格图标滑出菜单效果代码
Sep 16 #Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
Sep 16 #Javascript
You might like
php 数组使用详解 推荐
2011/06/02 PHP
php中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
PHP防止sql注入小技巧之sql预处理原理与实现方法分析
2019/12/13 PHP
jQuery中add实现同时选择两个id对象
2010/10/22 Javascript
js获取select标签选中值的两种方式
2014/01/09 Javascript
JS HTML5实现拖拽移动列表效果
2020/08/27 Javascript
javascript基础知识之html5轮播图实例讲解(44)
2017/02/17 Javascript
vuejs响应用户事件(如点击事件)
2017/03/14 Javascript
Javascript实现时间倒计时效果
2017/07/15 Javascript
用js实现before和after伪类的样式修改的示例代码
2017/09/07 Javascript
详解Vue.js Mixins 混入使用
2017/09/15 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
2018/03/01 Javascript
DatePickerDialog 自定义样式及使用全解
2019/07/09 Javascript
关于ligerui子页面关闭后,父页面刷新,重新加载的方法
2019/09/27 Javascript
python中执行shell命令的几个方法小结
2014/09/18 Python
python通过pil为png图片填充上背景颜色的方法
2015/03/17 Python
批量将ppt转换为pdf的Python代码 只要27行!
2018/02/26 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
Django实现单用户登录的方法示例
2019/03/28 Python
python制作填词游戏步骤详解
2019/05/05 Python
Python Pillow.Image 图像保存和参数选择方式
2020/01/09 Python
.dcm格式文件软件读取及python处理详解
2020/01/16 Python
详解PyQt5信号与槽的几种高级玩法
2020/03/24 Python
在echarts中图例legend和坐标系grid实现左右布局实例
2020/05/16 Python
使用before和:after伪类制作css3圆形按钮
2014/04/08 HTML / CSS
HTML5表格_动力节点Java学院整理
2017/07/11 HTML / CSS
爱他美官方海外旗舰店:Aptamil奶粉
2017/12/22 全球购物
澳大利亚玩具剧场:Toy Playhouse
2019/03/03 全球购物
2013年办公室秘书的个人自我鉴定
2013/10/24 职场文书
煤矿班组长岗位职责
2013/12/29 职场文书
廉政教育心得体会
2014/01/01 职场文书
基层党员公开承诺书
2014/05/29 职场文书
公司出纳岗位职责
2015/03/31 职场文书
成品仓管员岗位职责
2015/04/01 职场文书
贫民窟的百万富翁观后感
2015/06/09 职场文书
干货干货!2019最新优秀创业计划书
2019/03/21 职场文书