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 相关文章推荐
Web版彷 Visual Studio 2003 颜色选择器
Jan 09 Javascript
从阿里妈妈发现的几个不错的表单验证函数
Sep 21 Javascript
控制input输入框中提示信息的显示和隐藏的方法
Feb 12 Javascript
javascript中HTMLDOM操作详解
Dec 11 Javascript
jQuery多级弹出菜单插件ZoneMenu
Dec 18 Javascript
angularjs学习笔记之简单介绍
Sep 26 Javascript
理解javascript正则表达式
Mar 08 Javascript
javascript实现随机生成DIV背景色
Jun 20 Javascript
react-native-video实现视频全屏播放的方法
Mar 19 Javascript
详解keep-alive + vuex 让缓存的页面灵活起来
Apr 19 Javascript
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
Sep 10 jQuery
Javascript和jquery在selenium的使用过程
Oct 31 jQuery
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
Drupal7连接多个数据库及常见问题解决
2014/03/02 PHP
新浪微博OAuth认证和储存的主要过程详解
2015/03/27 PHP
改进版通过Json对象实现深复制的方法
2012/10/24 Javascript
js关闭父窗口时关闭子窗口
2013/04/01 Javascript
简单的jquery左侧导航栏和页面选中效果
2014/08/21 Javascript
JavaScript函数模式详解
2014/11/07 Javascript
javascript 动态创建表格
2015/01/08 Javascript
JQuery select(下拉框)操作方法汇总
2015/04/15 Javascript
jQuery Real Person验证码插件防止表单自动提交
2015/11/06 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
jQuery侧边栏实现代码
2016/05/06 Javascript
js获取html的span标签的值方法(超简单)
2016/07/26 Javascript
form+iframe解决跨域上传文件的方法
2016/11/18 Javascript
js判断输入框不能为空格或null值的实现方法
2018/03/02 Javascript
详解mpvue开发小程序小总结
2018/07/25 Javascript
ES6中let、const的区别及变量的解构赋值操作方法实例分析
2019/10/15 Javascript
JavaScript中layim之整合右键菜单的示例代码
2021/02/06 Javascript
[54:29]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第二场
2018/04/09 DOTA
Django读取Mysql数据并显示在前端的实例
2018/05/27 Python
解决Django migrate No changes detected 不能创建表的问题
2018/05/27 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
2019/02/13 Python
Python中psutil的介绍与用法
2019/05/02 Python
Python实现打砖块小游戏代码实例
2019/05/18 Python
python Pandas如何对数据集随机抽样
2019/07/29 Python
Python数据存储之 h5py详解
2019/12/26 Python
Python3运算符常见用法分析
2020/02/14 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
2021/03/03 Python
CSS3 伪类选择器 nth-child()说明
2010/07/10 HTML / CSS
基于css3实现漂亮便签样式
2013/03/18 HTML / CSS
大学学年自我鉴定
2013/10/28 职场文书
2014年五一劳动节社区活动总结
2014/04/14 职场文书
供应链金融服务方案
2014/05/25 职场文书
植树节口号
2014/06/21 职场文书
试用期解除劳动合同通知书
2015/04/16 职场文书
道歉信范文
2015/05/12 职场文书
GO中sync包自由控制并发示例详解
2022/08/05 Golang