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 打印内容方法小结
Nov 04 Javascript
javascript模拟map输出与去除重复项的方法
Feb 09 Javascript
深入探讨JavaScript String对象
Mar 09 Javascript
微信小程序 加载 app-service.js 错误解决方法
Oct 12 Javascript
jQuery实现表格元素动态创建功能
Jan 09 Javascript
vue + element-ui实现简洁的导入导出功能
Dec 22 Javascript
简化vuex的状态管理方案的方法
Jun 02 Javascript
jQuery实现的简单获取索引功能示例
Jun 04 jQuery
通过jquery的ajax请求本地的json文件方法
Aug 08 jQuery
浅谈ElementUI中switch回调函数change的参数问题
Aug 24 Javascript
js实现手表表盘时钟与圆周运动
Sep 18 Javascript
Angular短信模板校验代码
Sep 23 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
使用网络地址转换实现多服务器负载均衡
2006/10/09 PHP
php中导出数据到excel时数字变为科学计数的解决方法
2013/02/03 PHP
PHP attributes()函数讲解
2019/02/03 PHP
用javascript来实现动画导航效果的代码
2007/12/16 Javascript
JS上传前预览图片实例
2013/03/25 Javascript
js获取或设置当前窗口url参数的小例子
2013/10/14 Javascript
json属性名为什么要双引号(个人猜测)
2014/07/31 Javascript
js 通过cookie实现刷新不变化树形菜单
2014/10/30 Javascript
javascript实现的简单计时器
2015/07/19 Javascript
基于JS实现简单的样式切换效果代码
2015/09/04 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
2015/10/26 Javascript
AngularJS 最常用的功能汇总
2016/02/17 Javascript
深入理解js promise chain
2016/05/05 Javascript
微信小程序 网络API Websocket详解
2016/11/09 Javascript
vue监听滚动事件实现滚动监听
2017/04/11 Javascript
webpack2.0配置postcss-loader的方法
2017/08/17 Javascript
详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决
2019/04/14 Javascript
javascript中可能用得到的全部的排序算法
2020/03/05 Javascript
json_decode 索引为数字时自动排序问题解决方法
2020/03/28 Javascript
python处理文本文件并生成指定格式的文件
2014/07/31 Python
python获取文件后缀名及批量更新目录下文件后缀名的方法
2014/11/11 Python
横向对比分析Python解析XML的四种方式
2016/03/30 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
Python实现嵌套列表去重方法示例
2017/12/28 Python
Python中elasticsearch插入和更新数据的实现方法
2018/04/01 Python
python微信撤回监测代码
2019/04/29 Python
Django实现发送邮件找回密码功能
2019/08/12 Python
Django模板导入母版继承和自定义返回Html片段过程解析
2019/09/18 Python
阿提哈德航空官方网站:Etihad Airways
2017/01/06 全球购物
Prototype是怎么扩展DOM的
2014/10/01 面试题
工作个人的自我评价
2014/01/14 职场文书
消防安全检查制度
2014/02/04 职场文书
幼儿园中班下学期评语
2014/04/18 职场文书
行政执法队伍作风整顿个人剖析材料
2014/10/11 职场文书
2014年仓库管理员工作总结
2014/11/18 职场文书
某学校的2019年度工作报告范本
2019/10/11 职场文书