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 相关文章推荐
javascript html 静态页面传参数
Apr 10 Javascript
常用Extjs工具:Extjs.util.Format使用方法
Mar 22 Javascript
基于jquery &amp; json的省市区联动代码
Jun 26 Javascript
当json键为数字时的取值方法解析
Nov 15 Javascript
jQuery中index()方法用法实例
Dec 27 Javascript
使用纯javascript实现放大镜效果
Mar 18 Javascript
Node.js 文件夹目录结构创建实例代码
Jul 08 Javascript
ionic实现可滑动的tab选项卡切换效果
Apr 15 Javascript
JavaScript获取服务器端时间的方法
Nov 29 Javascript
原生js 封装get ,post, delete 请求的实例
Aug 11 Javascript
JS实现数组深拷贝的方法分析
Mar 06 Javascript
小程序开发之模态框组件封装
Apr 23 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中文分词的简单实现代码分享
2011/07/17 PHP
php中Array2xml类实现数组转化成XML实例
2014/12/08 PHP
微信接口生成带参数的二维码
2017/07/31 PHP
jquery获取input表单值的代码
2010/04/19 Javascript
js控制表单操作的常用代码小结
2013/08/15 Javascript
自己使用jquery写的一个无缝滚动的插件
2014/04/30 Javascript
js实现弹出窗口、页面变成灰色并不可操作的例子分享
2014/05/10 Javascript
js实现多选项切换导航菜单的方法
2015/02/06 Javascript
javascript常用函数(2)
2015/11/05 Javascript
详解JavaScript for循环中发送AJAX请求问题
2020/06/23 Javascript
使用jQuery处理AJAX请求的基础学习教程
2016/05/10 Javascript
JavaScript语言精粹经典实例(整理篇)
2016/06/07 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
2016/06/12 Javascript
微信小程序 教程之引用
2016/10/18 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
JS实现动态给标签控件添加事件的方法示例
2017/05/13 Javascript
vue组件父与子通信详解(一)
2017/11/07 Javascript
深入理解 webpack 文件打包机制(小结)
2018/01/08 Javascript
Angular脚手架开发的实现步骤
2019/04/09 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
element ui分页多选,翻页记忆的实例
2019/09/03 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
Python制作CSDN免积分下载器
2015/03/10 Python
django通过ajax发起请求返回JSON格式数据的方法
2015/06/04 Python
Python入门_浅谈for循环、while循环
2017/05/16 Python
对python制作自己的数据集实例讲解
2018/12/12 Python
python+numpy实现的基本矩阵操作示例
2019/07/19 Python
python通过实例讲解反射机制
2019/10/17 Python
基于Python实现船舶的MMSI的获取(推荐)
2019/10/21 Python
使用CSS3的appearance属性改变任何元素的浏览器默认风格
2012/12/24 HTML / CSS
CSS中的字体大小设置属性总结
2016/05/24 HTML / CSS
初中生三年学习生活的自我评价
2013/11/03 职场文书
在宿舍喝酒的检讨书
2014/09/28 职场文书
父亲节寄语大全
2015/02/27 职场文书
dubbo集成zipkin获取Traceid的实现
2021/07/26 Java/Android
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis