把zTree前的展开收起图标改为三角形,且只有在点击三角形图标时才展开子节点解决方案
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Title</title>
<link href="JS/tool/zTree/css/zTreeStyle/zTreeStyle.css" rel="stylesheet" />
<script src="JS/jquery-1.11.1.min.js"></script>
<script src="JS/tool/zTree/js/jquery.ztree.core-3.5.js"></script>
<script src="JS/tool/zTree/js/jquery.ztree.excheck-3.5.js"></script>
<style>
.mainbody-left {
position: absolute;
top: 0;
left: 0;
padding-top: 52px;
width: 230px;
height: 100%;
background: #292929;
z-index: 99;
overflow: auto;
}
.ztree {
padding: 0;
}
.ztree * {
font-size: 14px;
font-family: "microsoft yahei";
}
.ztree li a {
display: block;
padding: 4px 18px;
color: #fff;
border: 1px #292929 solid;
}
.ztree li a:hover {
background: #484848;
border: 1px #484848 solid;
text-decoration: none;
}
.ztree span, .ztree li ul.line {
background: none;
}
.ztree li a.curSelectedNode {
padding-top: 4px;
background-color: #000;
color: black;
border: 1px #000 solid;
opacity: 0.8;
}
.ztree li ul {
padding: 0;
}
.ztree > li > a {
padding-left: 36px;
}
.ztree > li > ul > li > a {
padding-left: 54px;
}
.ztree > li > ul > li > ul > li > a {
padding-left: 72px;
}
.ztree li a span.ico_open, .ztree li a span.ico_close, .ztree li a span.ico_docu {
background: none;
}
.ztree li a span.ico_open::after {
width: 0;
height: 0;
border: 4px solid transparent;
border-left: 4px solid #808080;
content: "";
margin: 0;
cursor: pointer;
display: inline-block;
position: relative;
left: 0px;
top: 6px;
transform: rotate(90deg);
}
.ztree li a span.ico_close::after {
width: 0;
height: 0;
border: 4px solid transparent;
border-left: 4px solid #808080;
content: "";
margin: 0;
cursor: pointer;
display: inline-block;
position: relative;
left: 2px;
top: 4px;
transform: rotate(0deg);
}
.switch {
display: none !important;
}
</style>
</head>
<body>
<div class="mainbody-left">
<div class="vvtree dept-tree left">
<ul id="menu_tree_left" class="ztree"></ul>
</div>
</div>
<script>
var settingLeft = {
view: {
dblClickExpand: false,//双击节点时,是否自动展开父节点的标识
showLine: false,//是否显示节点之间的连线
showIcon: true,
fontCss: { 'color': 'white', 'font-weight': 'normal' },//字体样式函数
selectedMulti: false //设置是否允许同时选中多个节点
},
check: {
//chkboxType: { "Y": "ps", "N": "ps" },
chkStyle: "checkbox",//复选框类型
enable: false //每个节点上是否显示 CheckBox
},
data: {
simpleData: {//简单数据模式
enable: true,
idKey: "id",
pIdKey: "pId",
rootPId: ""
}
},
callback: {
beforeClick: function (treeId, treeNode) {
zTree = $.fn.zTree.getZTreeObj("menu_tree_left");
if (!treeNode.isParent) {
zTree.checkNode(treeNode, !treeNode.checked, true, true);//单击勾选,再次单击取消勾选
}
},
onClick: function (event, treeId, treeNode) {
zTree = $.fn.zTree.getZTreeObj("menu_tree_left");
if ($(event.target).hasClass('ico_close') || $(event.target).hasClass('ico_open')) {
zTree.expandNode(treeNode);//如果是父节点,则展开该节点
} else {
return;
}
},
onDblClick: function (treeId, treeNode) {
//code
}
}
}; $(function () {
//初始化菜单树
var zNodes = [
{ id: 0, pId: -1, name: "一级部门", open: true },
{ id: 1, pId: 0, name: "二级部门1", open: false },
{ id: 2, pId: 1, name: "三级部门1" },
{ id: 3, pId: 1, name: "三级部门2" },
{ id: 4, pId: 0, name: "二级部门2", open: false },
{ id: 5, pId: 4, name: "三级部门3" },
{ id: 6, pId: 4, name: "三级部门4", open: false },
{ id: 7, pId: 6, name: "四级部门1" },
{ id: 8, pId: 6, name: "四级部门2" },
{ id: 9, pId: 0, name: "二级部门3" },
{ id: 10, pId: 0, name: "二级部门4" }
];
$.fn.zTree.init($("#menu_tree_left"), settingLeft, zNodes);
});
</script>
</body>
</html>
修改beforeClick,并添加了onClick方法,当点击的对象target拥有class:ico_close或ico_open时(也就是三角形图标),才展开子节点,否则return(也可以做其他操作,自行选择)。
onDblClick是双击事件。
以下是效果图:

补充:
谢谢这位热心的朋友@爱吃渔的熊 指出样式存在点小问题:当渲染到四级菜单时,显示不正常。
非常抱歉没有详细描述使用场景,这里做下补充。
分两种情况:
1.如果是想把ztree菜单放在网页左侧导航区,确定子菜单不超过的级数(假设是4级),且想要在每个子菜单hover的时候修改背景颜色和占满整行,可以采用以上的方法(逐步设置li a的padding值)
上面写少了一级的样式,这里加上:
.ztree li ul {
padding:;
}
.ztree > li > a {
padding-left: 36px;
}
.ztree > li > ul > li > a {
padding-left: 54px;
}
.ztree > li > ul > li > ul > li > a {
padding-left: 72px;
}
.ztree > li > ul > li > ul > li > ul > li > a {
padding-left: 90px;
}
2.其他的就归为第二种情况了,直接设置li ul的padding,菜单样式无限制,逐级缩进
.ztree li ul {
margin:;
padding: 0 0 0 18px;
}
以上,请按需选取方案,谢谢阅读~
把zTree前的展开收起图标改为三角形,且只有在点击三角形图标时才展开子节点解决方案的更多相关文章
- 把图标改成web字体
一.下载自己想要的矢量图标,然后在AI中打开二.在AI中将有瑕疵的图标修改一下,再分别另存为svg格式的图标三.打开IcoMoon Web app网页,然后点击左上角的+Import Icons添加你 ...
- HTML-003-模拟IDE代码展开收起功能简单示例
当先我们在日常的编程开发工作中使用编程工具(例如 Eclipse.Sublime 等等)都有相应的代码折叠展开功能,如下图所示,极大的方便了我们的编码工作.
- 问题-某个程序改了ICO图标后编译后还是显示老图标?
问题现象:某个程序改了ICO图标后编译后还是显示老图标? 问题原原:可能是因为系统的缓存问题. 问题处理:把程序的EXE放在别的路径下打开就可以了. 问题相关人员:QQ253120114(朋友) Q ...
- 跨平台移动开发 Xuijs超轻量级的框架 Dom与Event简洁代码实现文本展开收起
Dom与Event简洁代码实现文本展开收起 Xuijs超轻量级的框架 Dom与Event实现文本展开收起 效果图 示例代码 <!DOCTYPE html PUBLIC "-//W3C/ ...
- css实现侧边展开收起
前言:因为突然想研究研究侧边栏滑动展开收起怎么做的,就去baidu了一下transition. 详情 内容1 内容1 内容1 内容1 内容1 右侧有实现demo.就是那个绿色的详情 先来看一下我的代码 ...
- [TimLinux] CSS 纯CSS实现动画展开/收起功能
内容转自CSS世界,理解之后进行了简化,简化后代码: <!DOCTYPE html> <html> <head> <meta charset=utf-8 /& ...
- Vue 实现点击展开收起
Vue 展开收起功能实现 之前写项目的时候提到了一个需求 展开/收起 所有内容的需求 .因之前一值是重构,自己写功能还是比较少的,于是网上搜了一下,发现很多东西其实是jq的功能 虽然可以拿过来用,但是 ...
- javasript简单实现文字的展开收起(无动画)
今天在工作遇到展开和收起的需求,在网上找了很多方法,今天来写一下我觉得比较简单的方法 在项目中需要达到如图这种效果 首先想的是使用overflow简单且粗暴,在需要展开的的文字定义样式 { overf ...
- vue.js 实现点击展开收起动画
最近公司项目加了个页面,其中要求是这样的,点击对应列表,展开和收起, 其实就是显示和隐藏内容部分:说来惭愧,我花了半天时间才搞出来(自黑一下~), ,,接下来分享给大家,先上效果图: .vue页面: ...
随机推荐
- Android 使用Intent
使用intent可以吊起其他应用 例如发送电子邮件 public void sendEmail(View view){ Intent intent = new Intent(Intent.ACTION ...
- Ionic4.x 中的 UI 组件(UI Components) 日期组件
1.日期组件的基本使用 官方文档:https://ionicframework.com/docs/api/datetime 模板中: <ion-datetime display-format=& ...
- RabbitMQ 3.7.X集群:从入门到精通,这一篇就够了
RabbitMQ是流行的开源消息队列系统,本身已经具备了较强的并发处理速度及运行稳定性,然而在大规模的实际应用中,往往还需要使用集群配置来保证系统中消息通信部分的高可用性,并发处理性能及异常恢复能力. ...
- osg机械臂施工模拟
线程 0x2278 已退出,返回值为 0 (0x0). =====IfcTreeWidget==slotObjectsSelected1IfcObjectAttributeExtraction === ...
- 阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_06-用户认证-认证服务查询数据库-Bcrypt介绍
演示MD5加密的方式 数据库内的数据密码虽然都是6个1但是 每次加密出来的字符串是不一样的 加盐 测试BCrpty 循环10次加密 密码的校验 比人工的加盐要方便的多 这是创建的一个Spring的Be ...
- warning: deleting 'void *' is undefined 错误
如果我们new出来的指针是一个基本类型,没什么关系,内存还是会被释放的,但是如果是一个类对象指针,在处理过程中转成了void*,那就有问题了,析构函数将不会被调用. 故new的指针类型要和delete ...
- (五)UML之协作图
一.什么是协作图? 顾名思义协作图就是合作图,有合作就涉及到多个对象. 协作图(Collaboration Diagram /Communication Diagram,也叫合作图)是一种交互图(in ...
- Java使用JDBC连接数据库逐条插入数据、批量插入数据、以及通过SQL语句批量导入数据的效率对比
测试用的示例java代码: package com.zifeiy.test.normal; import java.io.File; import java.io.FileOutputStream; ...
- MySQL设置可以远程连接
在MySQL命令行执行如下: use mysql; grant all privileges on *.* to root@'%' identified by "password" ...
- Paper reading: High-Fidelity Pose and Expression Normalization for Face Recognition in the Wild(HPEN)
1. Introduction 人脸识别受到各种因素影响,其中最重要的两个影响是 pose 和 expression, 这两个因素会对 intra-person 变化产生极大的影响, 有时候甚至会超过 ...