【zTree】修改节点图标

2024-03-07 16:30
文章标签 修改 节点 图标 ztree

本文主要是介绍【zTree】修改节点图标,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【需求】

                 

        如图所示:在一个页面里,左右两棵树,要求右侧的树正常用“文件夹”和“纸张”图标显示树的父子节点,左侧的树由于只有子节点,用其他样式图标来替换“纸张”样式图标。

        

实现

       思路一:

       由于该项目前端使用easu-ui,则修改easy-ui中的tree的css样式即可(微博中看到的说牛一点的人都是直接修改框架然后自己用的),通过查询jquery-easyui的源码,“jquery-easyui-1.2.4.rar\jquery-easyui-1.2.4\themes\default\easyui.css”文件中,关于tree的样式是这样的:

.tree{font-size:12px;margin:0;padding:0;list-style-type:none;
}
.tree li{white-space:nowrap;
}
.tree li ul{list-style-type:none;margin:0;padding:0;
}
.tree-hit{cursor:pointer;
}
.tree-expanded{display:inline-block;width:16px;height:18px;vertical-align:middle;background:url('images/tree_arrows.gif') no-repeat -18px 0px;
}
.tree-expanded-hover{background:url('images/tree_arrows.gif') no-repeat -50px 0px;
}
.tree-collapsed{display:inline-block;width:16px;height:18px;vertical-align:middle;background:url('images/tree_arrows.gif') no-repeat 0px 0px;
}
.tree-collapsed-hover{background:url('images/tree_arrows.gif') no-repeat -32px 0px;
}
.tree-folder{display:inline-block;background:url('images/tree_folder.gif') no-repeat;width:16px;height:18px;vertical-align:middle;
}
.tree-folder-open{background:url('images/tree_folder_open.gif') no-repeat;
}
.tree-file{display:inline-block;background:url('images/tree_file.gif') no-repeat;width:16px;height:18px;vertical-align:middle;
}
.tree-loading{background:url('images/tree_loading.gif') no-repeat;
}
.tree-title{display:inline-block;text-decoration:none;vertical-align:middle;padding:1px 2px 1px 2px;white-space:nowrap;
}.tree-node-hover{background:#fafafa;
}
.tree-node-selected{background:#FBEC88;
}
.tree-checkbox{display:inline-block;width:16px;height:18px;vertical-align:middle;
}
.tree-node-append .tree-title{border:1px dotted red;
}
.tree-editor{border:1px solid #ccc;font-size:12px;line-height:16px;width:80px;position:absolute;top:0;
}
        在jsp页面当中覆盖“.tree-file”的css样式即可(将tree-file样式下的图片换为tree-folder的图片路径),代码如下:

<style type="text/css">
.tree-file{
display:inline-block;
background:url('images/tree_folder.gif') no-repeat;
width:16px;
height:18px;
vertical-align:middle;
}

</style>

        然后惊呆我了,竟然页面没有动静,吃鲸啊,怎么办?难倒不是easyui控制的css样式吗?


      思路二:

      由于思路一走不通,发现在WEB-INF文件夹下,有针对zTree自己封装的css样式的文件夹"zTreeStyle",则想着对这个文件夹中的样式进行修改。

       zTreeStyle中的代码样式如下:

.ztree li span.button.chk {width:13px; height:13px; margin:0 3px 0 0; cursor: auto}
.ztree li span.button.chk.checkbox_false_full {background-position:0 0}
.ztree li span.button.chk.checkbox_false_full_focus {background-position:0 -14px}
.ztree li span.button.chk.checkbox_false_part {background-position:0 -28px}
.ztree li span.button.chk.checkbox_false_part_focus {background-position:0 -42px}
.ztree li span.button.chk.checkbox_false_disable {background-position:0 -56px}
.ztree li span.button.chk.checkbox_true_full {background-position:-14px 0}
.ztree li span.button.chk.checkbox_true_full_focus {background-position:-14px -14px}
.ztree li span.button.chk.checkbox_true_part {background-position:-14px -28px}
.ztree li span.button.chk.checkbox_true_part_focus {background-position:-14px -42px}
.ztree li span.button.chk.checkbox_true_disable {background-position:-14px -56px}
.ztree li span.button.chk.radio_false_full {background-position:-28px 0}
.ztree li span.button.chk.radio_false_full_focus {background-position:-28px -14px}
.ztree li span.button.chk.radio_false_part {background-position:-28px -28px}
.ztree li span.button.chk.radio_false_part_focus {background-position:-28px -42px}
.ztree li span.button.chk.radio_false_disable {background-position:-28px -56px}
.ztree li span.button.chk.radio_true_full {background-position:-42px 0}
.ztree li span.button.chk.radio_true_full_focus {background-position:-42px -14px}
.ztree li span.button.chk.radio_true_part {background-position:-42px -28px}
.ztree li span.button.chk.radio_true_part_focus {background-position:-42px -42px}
.ztree li span.button.chk.radio_true_disable {background-position:-42px -56px}
        zTreeStyle将所有图标集中到一张图片,然后通过坐标来确定具体的节点图标,如图:

                             
          那么如何确定文件夹的坐标以及文件夹图标在css中的名称?一个小的技巧,跑起来服务器上的程序,通过firebug查看该图片的样式,最终确定所选文件夹的样式为:

.ztree li span.button.ico_docu {background-position: -110px 0;margin-right: 2px;vertical-align: top;
}
        之后在jsp中覆盖叶子节点的样式如下:

<style type="text/css">.ztree li span.button.ico_docu {background-position: -110px 0;margin-right: 2px;vertical-align: top;
}
</style>
          之后,奇迹出现了,无论是父节点还是子节点,都成了文件夹,再次吃鲸!!!(问题在于一个jsp页面中有两棵树,现在仅仅对于一棵树进行修改),so,只要在样式前通过id选择器进行细化即可,代码如下:

#tree.ztree li span.button.ico_docu {}


      至此,一个页面中两颗tree中的子节点显示不同样式即实现:

         


           这次尝试修改了easyui源码,包括查询CSS的API文档,对于前台样式的理解收获非常大,多动手真实王道。


这篇关于【zTree】修改节点图标的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/784132

相关文章

Docker镜像修改hosts及dockerfile修改hosts文件的实现方式

《Docker镜像修改hosts及dockerfile修改hosts文件的实现方式》:本文主要介绍Docker镜像修改hosts及dockerfile修改hosts文件的实现方式,具有很好的参考价... 目录docker镜像修改hosts及dockerfile修改hosts文件准备 dockerfile 文

macOS无效Launchpad图标轻松删除的4 种实用方法

《macOS无效Launchpad图标轻松删除的4种实用方法》mac中不在appstore上下载的应用经常在删除后它的图标还残留在launchpad中,并且长按图标也不会出现删除符号,下面解决这个问... 在 MACOS 上,Launchpad(也就是「启动台」)是一个便捷的 App 启动工具。但有时候,应

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

Linux修改pip和conda缓存路径的几种方法

《Linux修改pip和conda缓存路径的几种方法》在Python生态中,pip和conda是两种常见的软件包管理工具,它们在安装、更新和卸载软件包时都会使用缓存来提高效率,适当地修改它们的缓存路径... 目录一、pip 和 conda 的缓存机制1. pip 的缓存机制默认缓存路径2. conda 的缓

Linux修改pip临时目录方法的详解

《Linux修改pip临时目录方法的详解》在Linux系统中,pip在安装Python包时会使用临时目录(TMPDIR),但默认的临时目录可能会受到存储空间不足或权限问题的影响,所以本文将详细介绍如何... 目录引言一、为什么要修改 pip 的临时目录?1. 解决存储空间不足的问题2. 解决权限问题3. 提

Linux文件名修改方法大全

《Linux文件名修改方法大全》在Linux系统中,文件名修改是一个常见且重要的操作,文件名修改可以更好地管理文件和文件夹,使其更具可读性和有序性,本文将介绍三种在Linux系统下常用的文件名修改方法... 目录一、引言二、使用mv命令修改文件名三、使用rename命令修改文件名四、mv命令和rename命

mybatis-plus 实现查询表名动态修改的示例代码

《mybatis-plus实现查询表名动态修改的示例代码》通过MyBatis-Plus实现表名的动态替换,根据配置或入参选择不同的表,本文主要介绍了mybatis-plus实现查询表名动态修改的示... 目录实现数据库初始化依赖包配置读取类设置 myBATis-plus 插件测试通过 mybatis-plu

Linux下修改hostname的三种实现方式

《Linux下修改hostname的三种实现方式》:本文主要介绍Linux下修改hostname的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下修改ho编程stname三种方式方法1:修改配置文件方法2:hFvEWEostnamectl命

Git如何修改已提交人的用户名和邮箱

《Git如何修改已提交人的用户名和邮箱》文章介绍了如何修改Git已提交人的用户名和邮箱,包括注意事项和具体步骤,确保操作正确无误... 目录git修改已提交人的用户名和邮箱前言第一步第二步总结git修改已提交人的用户名和邮箱前言需注意以下两点内容:需要在顶层目录下(php就是 .git 文件夹所在的目

Python使用PIL库将PNG图片转换为ICO图标的示例代码

《Python使用PIL库将PNG图片转换为ICO图标的示例代码》在软件开发和网站设计中,ICO图标是一种常用的图像格式,特别适用于应用程序图标、网页收藏夹图标等场景,本文将介绍如何使用Python的... 目录引言准备工作代码解析实践操作结果展示结语引言在软件开发和网站设计中,ICO图标是一种常用的图像