jquery+CSS实现的多级竖向展开树形TRee菜单效果


Posted in Javascript onAugust 24, 2015

本文实例讲述了jquery+CSS实现的多级竖向展开树形TRee菜单效果。分享给大家供大家参考。具体如下:

这里演示垂直的树形菜单,应用CSS和jquery技术来实现,显示在网页左侧比较合适,考虑到简洁,没有使用图片之类的作修饰。本效果兼容IE、火狐等主流浏览器。

运行效果截图如下:

jquery+CSS实现的多级竖向展开树形TRee菜单效果

在线演示地址如下:

具体代码如下:

<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery多级层叠树形菜单效果</title>
<style>
.topnav {
 width: 213px;
 padding: 40px 28px 25px 0;
 font-family: "CenturyGothicRegular", "Century Gothic", Arial, Helvetica, sans-serif;
}
ul.topnav {
 padding: 0;
 margin: 0;
 font-size: 1em;
 line-height: 0.5em;
 list-style: none;
}
ul.topnav li {}
ul.topnav li a {
 line-height: 10px;
 font-size: 11px;
 padding: 10px 5px;
 color: #000;
 display: block;
 text-decoration: none;
 font-weight: bolder;
}
ul.topnav li a:hover {
 background-color:#675C7C;
 color:white;
}
ul.topnav ul {
 margin: 0;
 padding: 0;
 display: none;
}
ul.topnav ul li {
 margin: 0;
 padding: 0;
 clear: both;
}
ul.topnav ul li a {
 padding-left: 20px;
 font-size: 10px;
 font-weight: normal;
 outline:0;
}
ul.topnav ul li a:hover {
 background-color:#D3C99C;
 color:#675C7C;
}
ul.topnav ul ul li a {
 color:silver;
 padding-left: 40px;
}
ul.topnav ul ul li a:hover {
 background-color:#D3CEB8;
 color:#675C7C;
}
ul.topnav span{
 float:right;
}
</style>
<script type="text/javascript" src="jquery-1.6.2.min.js"></script>
<script type="text/javascript">
(function($){
 $.fn.extend({
 accordion: function(options) {
  var defaults = {
   accordion: 'true',
   speed: 300,
   closedSign: '[+]',
   openedSign: '[-]'
  };
  var opts = $.extend(defaults, options);
   var $this = $(this);
   $this.find("li").each(function() {
    if($(this).find("ul").size() != 0){
     $(this).find("a:first").append("<span>"+ opts.closedSign +"</span>");
     if($(this).find("a:first").attr('href') == "#"){
      $(this).find("a:first").click(function(){return false;});
     }
    }
   });
   $this.find("li.active").each(function() {
    $(this).parents("ul").slideDown(opts.speed);
    $(this).parents("ul").parent("li").find("span:first").html(opts.openedSign);
   });
   $this.find("li a").click(function() {
    if($(this).parent().find("ul").size() != 0){
     if(opts.accordion){
      if(!$(this).parent().find("ul").is(':visible')){
       parents = $(this).parent().parents("ul");
       visible = $this.find("ul:visible");
       visible.each(function(visibleIndex){
        var close = true;
        parents.each(function(parentIndex){
         if(parents[parentIndex] == visible[visibleIndex]){
          close = false;
          return false;
         }
        });
        if(close){
         if($(this).parent().find("ul") != visible[visibleIndex]){
          $(visible[visibleIndex]).slideUp(opts.speed, function(){
           $(this).parent("li").find("span:first").html(opts.closedSign);
          });
         }
        }
       });
      }
     }
     if($(this).parent().find("ul:first").is(":visible")){
      $(this).parent().find("ul:first").slideUp(opts.speed, function(){
       $(this).parent("li").find("span:first").delay(opts.speed).html(opts.closedSign);
      });
     }else{
      $(this).parent().find("ul:first").slideDown(opts.speed, function(){
       $(this).parent("li").find("span:first").delay(opts.speed).html(opts.openedSign);
      });
     }
    }
   });
 }
});
})(jQuery);
</script>
<script language="JavaScript">
$(document).ready(function() {
 $(".topnav").accordion({
  accordion:false,
  speed: 500,
  closedSign: '[+]',
  openedSign: '[-]'
 });
});
</script>
<ul class="topnav">
 <li><a href="#" target="scriptbreaker">Home</a></li>
 <li><a href="#">JavaScript</a>
  <ul>
    <li><a href="#">Cookies</a></li>
    <li><a href="#">Events</a></li>
    <li><a href="#">Forms</a></li>
    <li><a href="#">Games</a></li>
    <li><a href="#">Images</a></li>
    <li><a href="#">Navigations</a>
    <ul>
     <li><a href="#">CSS</a></li>
     <li><a href="#">JavaScript</a></li>
     <li><a href="#">JQuery</a></li>
    </ul>
   </li>
    <li><a href="#">Tabs</a></li>
  </ul>
 </li>
 <li><a href="#">Tutorials</a>
  <ul>
    <li class="active"><a href="#">HTML</a></li>
    <li><a href="#">CSS</a></li>
    <li><a href="#">JavaScript</a></li>
    <li><a href="#">Java</a>
    <ul>
     <li><a href="#">JSP</a></li>
     <li><a href="#">JSF</a></li>
     <li><a href="#">JPA</a></li>
     <li><a href="#" target="_blank">Contact</a></li>
    </ul>
   </li>
    <li><a href="#">Tabs</a></li>
  </ul>
 </li>
 <li><a href="#" target="_blank">Contact</a></li>
 <li><a href="#">Upload script</a></li>
</ul>
</body>
</html>

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

Javascript 相关文章推荐
浏览器脚本兼容 文本框中,回车键触发事件的兼容
Jun 21 Javascript
仿猪八戒网左下角的文字滚动效果
Oct 28 Javascript
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
Dec 20 Javascript
javascript模拟地球旋转效果代码实例
Dec 02 Javascript
原生js实现autocomplete插件
Apr 14 Javascript
js仿淘宝和百度文库的评分功能
May 15 Javascript
jquery实现无刷新验证码的简单实例
May 19 Javascript
微信小程序 tabs选项卡效果的实现
Jan 05 Javascript
javascript实现动态显示颜色块的报表效果
Apr 10 Javascript
vue2.0 datepicker使用方法
Feb 04 Javascript
vue项目关闭eslint校验
Mar 21 Javascript
JavaScript实现简单贪吃蛇效果
Mar 09 Javascript
jQuery超酷平面式时钟效果代码分享
Mar 30 #Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
Aug 24 #Javascript
jQuery支持添加事件的日历特效代码分享(3种样式)
Aug 24 #Javascript
jQuery实现的多级下拉菜单效果代码
Aug 24 #Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
Aug 24 #Javascript
jquery马赛克拼接翻转效果代码分享
Aug 24 #Javascript
jquery+CSS实现的水平布局多级网页菜单效果
Aug 24 #Javascript
You might like
PHP音乐采集(部分代码)
2007/02/14 PHP
PHP实现邮件群发的源码
2013/06/18 PHP
PHP 安全检测代码片段(分享)
2013/07/05 PHP
让PHP显示Facebook的粉丝数量方法
2014/01/08 PHP
9条PHP编程小知识及易犯的小错误
2015/01/22 PHP
PHP实现加强版加密解密类实例
2015/07/29 PHP
Yii快速入门经典教程
2015/12/28 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
2016/03/14 PHP
php+html5+ajax实现上传图片的方法
2016/05/14 PHP
JavaScript中的Location地址对象
2008/01/16 Javascript
如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
2015/03/05 Javascript
深入理解JavaScript中的call、apply、bind方法的区别
2016/05/30 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
JavaScript6 let 新语法优势介绍
2016/07/15 Javascript
jQuery绑定事件的四种方式介绍
2016/10/31 Javascript
关于Vue.js一些问题和思考学习笔记(2)
2016/12/02 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
Vue-cli 使用json server在本地模拟请求数据的示例代码
2017/11/02 Javascript
微信小程序实现复选框效果
2018/12/28 Javascript
vue 实现setInterval 创建和销毁实例
2020/07/21 Javascript
JS+CSS实现炫酷光感效果
2020/09/05 Javascript
详解Python中的变量及其命名和打印
2016/03/11 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
Python Web框架之Django框架文件上传功能详解
2019/08/16 Python
利用python 下载bilibili视频
2020/11/13 Python
美国女鞋品牌:naturalizer(娜然)
2016/08/01 全球购物
Muziker英国:中欧最大的音乐家商店
2020/02/05 全球购物
高考自主招生自荐信
2013/10/20 职场文书
实习生求职自荐信
2014/02/07 职场文书
合同和协议有什么区别?
2014/10/08 职场文书
幼儿园教师个人总结
2015/02/05 职场文书
2015年保育员个人工作总结
2015/05/13 职场文书
乡镇团代会开幕词
2016/03/04 职场文书
2019七夕节祝福语36句,快来收藏吧
2019/08/06 职场文书
nginx实现发布静态资源的方法
2021/03/31 Servers
带你彻底理解JavaScript中的原型对象
2021/04/14 Javascript