把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页面: ...
随机推荐
- 淘宝npm镜像安装失败的问题
一:背景 心血来潮要简单搞一搞前端运行.打包的东西.结果第一步通过npm安装淘宝npm的时候就出问题了,如图: 二:解决方法 图片显示有点垃圾,但是看出来“Missing write access t ...
- setShadpwLayer实现阴影效果
package com.loaderman.customviewdemo; import android.content.Context; import android.graphics.*; imp ...
- iptables+ipset自动封闭和解封频繁访问web服务的恶意IP
转载于互联网 iptables直接针对ip进行封禁,在ip数量不大的时候是没什么问题的,但当有大量ip的时候性能会严重下降,iptables是O(N)的性能.而ipset就像一个集合,把需要封 ...
- React——嵌入已有项目 && jsx
Add React to a Website React has been designed from the start for gradual adoption, and you can use ...
- Linux/CentOS下修改MAC地址
Linux/CentOS下修改MAC地址 摘自:https://blog.csdn.net/qq_33233768/article/details/64906265 2017年03月22日 11:06 ...
- [opencv] copyTo函数的使用方法
OpenCV中image.copyTo()有两种形式: 1.image.copyTo(imageROI),作用是把image的内容粘贴到imageROI: 2.image.copyTo(imageRO ...
- 移动端APP测试总结
移动APP测试,除了基础功能测试测试方法外,需要额外关注以下方面: 兼容性测试 流量测试 电量测试 弱网络测试 稳定性测试 安全测试 环境相关测试 apk性能测试 兼容性测试 针对App通常会考虑这些 ...
- 基于OpenCV的同态滤波
在4.0.1节中,我们已经介绍了一个简单的图像形成模型,即照射-反射模型.这个模型可以开发一种频率处理程序,该程序可以同时压缩灰度范围和增强对比度来改善一幅图像的表现.图像形成的照射-反射模型的表达式 ...
- utf8 unicode 编码互转
static function utf8_to_unicode($c) { switch(strlen($c)) { case 1: return ord($c); case 2: $n = (ord ...
- 高级UI-RecyclerView拖拽和侧滑
RecyclerView强大的地方在于高度的可定制,正式由于此优点,现在的项目大多使用RecyclerView,这里我们仿照QQ的功能,实现RecyclerView的拖拽和侧滑功能 功能说明 上下拖拽 ...