把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页面: ...
随机推荐
- [Java复习] MQ
1. 为什么要用MQ? 解耦,异步,削峰 2. MQ的优点和缺点? 优点: 解耦.异步.削峰 缺点: 1. 系统可用性降低. 外部依赖越多,越容易挂.如果MQ挂了,怎么处理? 2. 系统复杂度提高. ...
- hadoop格式化
1.hadoop启动时,namenode没有启动起来 1.删除 namenode产生的临时文件 tmp 2.删除datanode的数据,否则也不行.(如果datanode有数据,请自己备份) ./bi ...
- request请求模拟导出文件
ui界面: 实现代码: def export(self,host): '''导出课时券记录''' #测试接口 url='https://'+host+r'/ticket-record/export?t ...
- Swift学习 (三)
3.函数: 在Swift中函数的定义基本与OC一样. 主要区别为: 通过func关键词定义函数 返回值在->关键词后标注 各举一个类方法与实例方法例子. 1 2 + (UIColor*)blac ...
- (2) Java SQL框架(java.sql.*)中常用接口详解
Driver接口:定义了一个驱动程序接口,每一个数据库的JDBC driver都应该实现这个接口,用于访问对应的数据库.比如MySQL的driver为com.mysql.jdbc.Driver.Jav ...
- css调用字体 没装微软雅黑,用css写@font-face让其能显示微软雅黑字体
在设计布局网页时 经常想要用一些比较好看的字体,比如微软雅黑,这个字体在近年来在网页设计中运用越来越平常, 然而所使用的字体也只有自己能看到 到别的机子上 又恢复了原来的宋体神马的. 经过一位高手的提 ...
- Leetcode之148. Sort List Medium
https://leetcode.com/problems/sort-list/ Sort a linked list in O(n log n) time using constant space ...
- C/C++查漏补缺(常更)
一.#define宏定义 如下程序段,则输出结果为: #define MAX 12 int main(){ cout << "20\0MAX019" << ...
- 云计算服务模式(SaaS/PaaS/IaaS)
为什么是云计算,为什么是现在 商用云:商用云的设计初衷是将基础设施商品化,并以较低的成本对外提供,是用户能够获得高扩展性和自服务能力. 企业云:企业级云的目的,则是达到或超过它所要替代的本地基础设施的 ...
- AutoMapper扩展帮助类
/// <summary> /// AutoMapper扩展帮助类 /// </summary> public static class AutoMapperExtension ...