JavaScript+CSS无限极分类效果完整实现方法


Posted in Javascript onDecember 22, 2015

本文实例讲述了JavaScript+CSS无限极分类效果完整实现方法。分享给大家供大家参考,具体如下:

CSS样式:

a {text-decoration:none;}
a,a:visited {color:#000;background:inherit;}
body {margin:0;padding:20px;font:12px tahoma,宋体,sans-serif;}
dt {font-size:22px;font-weight:bold;margin:0 0 0 15px;}
dd {margin:0 0 0 15px;}
h4 {margin:0;padding:0;font-size:18px;text-align:center;}
p {margin:0;padding:0 0 0 18px;}
p a,p a:visited {color:#00f;background:inherit;}
/*CNLTreeMenu Start*/
.CNLTreeMenu img.s {cursor:pointer;vertical-align:middle;}
.CNLTreeMenu ul {padding:0;}
.CNLTreeMenu li {list-style:none;padding:0;}
.Closed ul {display:none;}
.Child img.s {background:none;cursor:default;}
#CNLTreeMenu1 ul {margin:0 0 0 17px;}
#CNLTreeMenu1 img.s {width:20px;height:15px;}
#CNLTreeMenu1 .Opened img.s {background:url(skin1/opened.gif) no-repeat 0 0;}
#CNLTreeMenu1 .Closed img.s {background:url(skin1/closed.gif) no-repeat 0 0;}
#CNLTreeMenu1 .Child img.s {background:url(skin1/child.gif) no-repeat 3px 5px;}
#CNLTreeMenu2 ul {margin:0 0 0 17px;}
#CNLTreeMenu2 img.s {width:17px;height:15px;}
#CNLTreeMenu2 .Opened img.s {background:url(skin2/opened.gif) no-repeat 4px 6px;}
#CNLTreeMenu2 .Closed img.s {background:url(skin2/closed.gif) no-repeat 3px 6px;}
#CNLTreeMenu2 .Child img.s {background:url(skin2/child.gif) no-repeat 3px 5px;}
#CNLTreeMenu3 ul {margin:0 0 0 17px;}
#CNLTreeMenu3 img.s {width:34px;height:18px;}
#CNLTreeMenu3 .Opened img.s {background:url(skin3/opened.gif) no-repeat 0 1px;}
#CNLTreeMenu3 .Closed img.s {background:url(skin3/closed.gif) no-repeat 0 1px;}
#CNLTreeMenu3 .Child img.s {background:url(skin3/child.gif) no-repeat 13px 2px;}
/*CNLTreeMenu End*/
/*Temp CSS for View Demo*/
#CNLTreeMenu1,#CNLTreeMenu2,#CNLTreeMenu3 {float:left;width:249px;border:1px solid #99BEEF;background:#D2E4FC;color:inherit;margin:3px;padding:3px;}
#CNLTreeMenu1,#CNLTreeMenu2 {padding-bottom:15px;}
.ViewCode {
 clear:both;
 border:1px solid #FFB900;background:#FFFFCC;color:inherit;margin:3px;padding:3px;
}
.ViewCode h6 {color:#00f;}

JavaScript代码:

function Ob(o){
 var o=document.getElementById(o)?document.getElementById(o):o;
 return o;
}
function Hd(o) {
 Ob(o).style.display="none";
}
function Sw(o) {
 Ob(o).style.display="";
}
function ExCls(o,a,b,n){
 var o=Ob(o);
 for(i=0;i<n;i++) {o=o.parentNode;}
 o.className=o.className==a?b:a;
}
function CNLTreeMenu(id,TagName0) {
 this.id=id;
 this.TagName0=TagName0==""?"li":TagName0;
 this.AllNodes = Ob(this.id).getElementsByTagName(TagName0);
 this.InitCss = function (ClassName0,ClassName1,ClassName2,ImgUrl) {
 this.ClassName0=ClassName0;
 this.ClassName1=ClassName1;
 this.ClassName2=ClassName2;
 this.ImgUrl=ImgUrl || "css/s.gif";
 this.ImgBlankA ="<img src=\""+this.ImgUrl+"\" class=\"s\" onclick=\"ExCls(this,'"+ClassName0+"','"+ClassName1+"',1);\" alt=\"展开/折叠\" />";
 this.ImgBlankB ="<img src=\""+this.ImgUrl+"\" class=\"s\" />";
 for (i=0;i<this.AllNodes.length;i++ ) {
  this.AllNodes[i].className==""?this.AllNodes[i].className=ClassName1:"";
  this.AllNodes[i].innerHTML=(this.AllNodes[i].className==ClassName2?this.ImgBlankB:this.ImgBlankA)+this.AllNodes[i].innerHTML;
  }
 }
 this.SetNodes = function (n) {
 var sClsName=n==0?this.ClassName0:this.ClassName1;
 for (i=0;i<this.AllNodes.length;i++ ) {
  this.AllNodes[i].className==this.ClassName2?"":this.AllNodes[i].className=sClsName;
 }
 }
}

HTML页面:

<!--CNLTreeMenu Start:-->
<div class="CNLTreeMenu" id="CNLTreeMenu1">
<h4>CNL Tree Menu1</h4>
<p><a id="AllOpen_1" href="#" onclick="MyCNLTreeMenu1.SetNodes(0);Hd(this);Sw('AllClose_1');">全部展开</a><a id="AllClose_1" href="#" onclick="MyCNLTreeMenu1.SetNodes(1);Hd(this);Sw('AllOpen_1');" style="display:none;">全部折叠</a></p>
<ul>
 <li class="Opened"><a href="https://3water.com">JB51.Net</a>
 <ul>
  <li><a href="#1">技术区</a>
   <ul>
    <li><a href="#">网页技术</a>
    <ul>
     <li class="Child"><a href="#">JavaScript</a></li><!--Child Node-->
     <li class="Child"><a href="#">HTML/XHTML/CSS</a></li>
     <li class="Child"><a href="#">Ajax</a></li>
     <li class="Child"><a href="#">网页制作工具</a></li>
     <li class="Child"><a href="#">设计/图形</a></li>
     <li class="Child"><a href="#">Flash/多媒体</a></li>
     <li class="Child"><a href="#">VML/Web3D</a></li>
    </ul></li><!--Sub Node 3-->
    <li><a href="#">Web编程</a>
    <ul>
     <li class="Child"><a href="#">Java</a></li><!--Child Node-->
     <li class="Child"><a href="#">.Net</a></li>
     <li class="Child"><a href="#">ASP/VBScript</a></li>
     <li class="Child"><a href="#">PHP</a></li>
     <li class="Child"><a href="#">Perl/Python</a></li>
     <li class="Child"><a href="#">Web综合/开源</a></li>
    </ul></li><!--Sub Node 3-->
    <li><a href="#">数据库</a>
    <ul>
     <li class="Child"><a href="#">Access/SQLServer</a></li><!--Child Node-->
     <li class="Child"><a href="#">MySQL/PostgreSQL</a></li>
     <li class="Child"><a href="#">Oracle/DB2/Sybase</a></li>
    </ul></li><!--Sub Node 3-->
    <li><a href="#">服务器</a>
    <ul>
     <li class="Child"><a href="#">Windows/IIS</a></li><!--Child Node-->
     <li class="Child"><a href="#">Unix/Linux/Apache</a></li>
     <li class="Child"><a href="#">应用服务器</a></li>
    </ul></li><!--Sub Node 3-->
   </ul></li><!--Sub Node 2-->
  <li><a href="#1">二级目录</a>
   <ul>
    <li><a href="#">三级目录</a>
    <ul>
     <li><a href="#">四级目录</a>
     <ul>
      <li><a href="#">五级目录</a>
      <ul>
       <li><a href="#"></a>
       <ul>
        <li><a href="#">第n级目录</a>
         <ul>
          <li class="Child"><a href="#">叶结点1</a></li><!--Child Node-->
          <li class="Child"><a href="#">叶结点2</a></li>
          <li class="Child"><a href="#">叶结点3</a></li>
          </ul></li><!--Sub Node n -->
       </ul></li><!--Sub Node 6 -->
      </ul></li><!--Sub Node 5 -->
     </ul></li><!--Sub Node 4-->
    </ul></li><!--Sub Node 3-->
   </ul></li><!--Sub Node 2-->
  <li><a href="#1">二级目录</a>
   <ul>
    <li><a href="#">三级目录</a>
    <ul>
     <li><a href="#">四级目录</a>
     <ul>
      <li><a href="#">五级目录</a>
      <ul>
       <li><a href="#"></a>
       <ul>
        <li><a href="#">第n级目录</a>
         <ul>
          <li class="Child"><a href="#">叶结点1</a></li><!--Child Node-->
          <li class="Child"><a href="#">叶结点2</a></li>
          <li class="Child"><a href="#">叶结点3</a></li>
          </ul></li><!--Sub Node n -->
       </ul></li><!--Sub Node 6 -->
      </ul></li><!--Sub Node 5 -->
     </ul></li><!--Sub Node 4-->
    </ul></li><!--Sub Node 3-->
   </ul></li><!--Sub Node 2-->
 </ul></li><!--Sub Node 1 -->
</ul>
</div><!-- CNLTreeMenu -->
<!--CNLTreeMenu1 End!-->

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

Javascript 相关文章推荐
ExtJs使用IFrame的实现代码
Mar 24 Javascript
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
Aug 03 Javascript
jQuery的:parent选择器定义和用法
Jul 01 Javascript
jQuery读取XML文件内容的方法
Mar 09 Javascript
分享Javascript实用方法二
Dec 13 Javascript
使用jquery.qrcode.min.js实现中文转化二维码
Mar 11 Javascript
JS实现静态页面搜索并高亮显示功能完整示例
Sep 19 Javascript
AngularJs 最新验证手机号码的实例,成功测试通过
Nov 26 Javascript
javascript实现数字配对游戏的实例讲解
Dec 14 Javascript
细说webpack源码之compile流程-rules参数处理技巧(2)
Dec 26 Javascript
Node.js应用设置安全的沙箱环境
Apr 23 Javascript
通过实例讲解JS如何防抖动
Jun 15 Javascript
JS实现的表格操作类详解(添加,删除,排序,上移,下移)
Dec 22 #Javascript
JS控制按钮10秒钟后可用的方法
Dec 22 #Javascript
js实现C#的StringBuilder效果完整实例
Dec 22 #Javascript
JavaScript判断对象是否为数组
Dec 22 #Javascript
javascript中类的定义方式详解(四种方式)
Dec 22 #Javascript
jquery获取select选中值的方法分析
Dec 22 #Javascript
JS设置下拉列表框当前所选值的方法
Dec 22 #Javascript
You might like
PHP编写的图片验证码类文件分享
2016/06/06 PHP
php 如何设置一个严格控制过期时间的session
2017/05/05 PHP
javascript基础的动画教程,直观易懂
2007/01/10 Javascript
分析 JavaScript 中令人困惑的变量赋值
2007/08/13 Javascript
Javascript实现的鼠标经过时播放声音
2010/05/18 Javascript
初窥JQuery(二) 事件机制(1)
2010/11/25 Javascript
javascript检测两个数组是否相似
2015/05/19 Javascript
Angular实现form自动布局
2016/01/28 Javascript
JS+CSS3实现超炫的散列画廊特效
2016/07/16 Javascript
整理关于Bootstrap过渡动画的慕课笔记
2017/03/29 Javascript
使用Browserify来实现CommonJS的浏览器加载方法
2017/05/14 Javascript
JS实现图片放大镜插件详解
2017/11/06 Javascript
解决vue中对象属性改变视图不更新的问题
2018/02/23 Javascript
JS出现404错误原理及解决方案
2020/07/01 Javascript
JavaScript枚举选择jquery插件代码实例
2020/11/17 jQuery
vue实现按钮切换图片
2021/01/20 Vue.js
python通过字典dict判断指定键值是否存在的方法
2015/03/21 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
Python使用random.shuffle()打乱列表顺序的方法
2018/11/08 Python
Python面向对象之类的内置attr属性示例
2018/12/14 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
2019/08/05 Python
通过实例了解python property属性
2019/11/01 Python
python base64库给用户名或密码加密的流程
2020/01/02 Python
python 通过邮件控制实现远程控制电脑操作
2020/03/16 Python
如何安装并在pycharm使用selenium的方法
2020/04/30 Python
Python Excel vlookup函数实现过程解析
2020/06/22 Python
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
物流专业毕业生推荐信范文
2013/11/18 职场文书
3.12植树节活动总结2014
2014/03/13 职场文书
大学生演讲稿
2014/04/25 职场文书
省文明单位申报材料
2014/05/08 职场文书
中职生求职信
2014/07/01 职场文书
仓库管理员岗位职责
2015/02/03 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
教你怎么用PyCharm为同一服务器配置多个python解释器
2021/05/31 Python