【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

相关文章

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

MySQL修改密码的四种实现方式

《MySQL修改密码的四种实现方式》文章主要介绍了如何使用命令行工具修改MySQL密码,包括使用`setpassword`命令和`mysqladmin`命令,此外,还详细描述了忘记密码时的处理方法,包... 目录mysql修改密码四种方式一、set password命令二、使用mysqladmin三、修改u

使用Python在Excel中插入、修改、提取和删除超链接

《使用Python在Excel中插入、修改、提取和删除超链接》超链接是Excel中的常用功能,通过点击超链接可以快速跳转到外部网站、本地文件或工作表中的特定单元格,有效提升数据访问的效率和用户体验,这... 目录引言使用工具python在Excel中插入超链接Python修改Excel中的超链接Python

macOS怎么轻松更换App图标? Mac电脑图标更换指南

《macOS怎么轻松更换App图标?Mac电脑图标更换指南》想要给你的Mac电脑按照自己的喜好来更换App图标?其实非常简单,只需要两步就能搞定,下面我来详细讲解一下... 虽然 MACOS 的个性化定制选项已经「缩水」,不如早期版本那么丰富,www.chinasem.cn但我们仍然可以按照自己的喜好来更换

python修改字符串值的三种方法

《python修改字符串值的三种方法》本文主要介绍了python修改字符串值的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录第一种方法:第二种方法:第三种方法:在python中,字符串对象是不可变类型,所以我们没办法直接

Mysql8.0修改配置文件my.ini的坑及解决

《Mysql8.0修改配置文件my.ini的坑及解决》使用记事本直接编辑my.ini文件保存后,可能会导致MySQL无法启动,因为MySQL会以ANSI编码读取该文件,解决方法是使用Notepad++... 目录Myhttp://www.chinasem.cnsql8.0修改配置文件my.ini的坑出现的问题

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点