持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情
一、【基础】基础树结构
ElementUI 提供了基础的树结构,Element - The world's most popular Vue UI framework 默认效果为:(1)点击节点展开或者收起 (2)hover有默认颜色效果。结合案例给出我们的基础树结构,效果代码如下:
已给出整个页面的代码,包含HTML,JS,CSS.其中给出了资源数据,为接口返回数据。
二、优化tree前端样式
step1.【基础】添加箭头
效果说明: (1)包含子节点的需要添加箭头;没有子节点的不需要箭头(2)未展开状态为:右箭头;(3)展开状态为:下箭头;(4)箭头有旋转效果;
// 没有展开且有子节点
.el-tree ::v-deep .el-icon-caret-right:before {
background: url("~@/assets/images/tree/arrow-right1.png") no-repeat 0 0;
content: "";
display: inline-block;
width: 12px;
height: 12px;
margin-left: 3px;
background-size: 8px 12px;
}
// 已经展开且有子节点
.el-tree
::v-deep
.el-tree-node__expand-icon.expanded.el-icon-caret-right:before {
background: url("~@/assets/images/tree/arrow-right1.png") no-repeat 0 0;
content: "";
display: inline-block;
width: 12px;
height: 12px;
background-size: 8px 12px;
}
// 没有子节点
.el-tree ::v-deep.el-tree-node__expand-icon.is-leaf::before {
background: none;
}
说明:
没有展开且有子节点的类.el-tree ::v-deep .el-icon-caret-right:before
已经展开且有子节点的类 .el-tree ::v-deep .el-tree-node__expand-icon.expanded.el-icon-caret-right:before
没有子节点的类 .el-tree ::v-deep.el-tree-node__expand-icon.is-leaf::before
step2.【进阶】添加分级图标
说明:(暂且最多五层)五层每一层对应不同的图标。
(存在一个小问题:同级目录含有子目录和未含有子目录没有对其(由于箭头区分))
// 添加图标
.el-tree ::v-deep .el-tree-node__content .el-tree-node__label {
color: black;
padding-left: 22px;
background: url("../../../src/assets/images/tree/icon11.png") no-repeat 0 3px;
background-size: 13px 13px;
}
.el-tree ::v-deep .el-tree-node__children .el-tree-node__label {
padding-left: 22px;
background: url("../../../src/assets/images/tree/icon21.png") no-repeat 0 3px;
background-size: 13px 13px;
}
说明:
一级目录类.el-tree ::v-deep .el-tree-node__content .el-tree-node__label
二级目录类.el-tree ::v-deep .el-tree-node__children .el-tree-node__label
三级目录类.el-tree ::v-deep .el-tree-node__children .el-tree-node__children .el-tree-node__label
四级目录类.el-tree ::v-deep .el-tree-node__children .el-tree-node__children .el-tree-node__children .el-tree-node__label
五级目录类.el-tree ::v-deep .el-tree-node__children .el-tree-node__children .el-tree-node__children .el-tree-node__children .el-tree-node__label
以此类推
step3.【基础】添加颜色样式
效果说明:(1)添加头部效果 (2)添加tree背景颜色 (3)修改hover颜色和选中节点颜色
// 资源树-头部标签样式
.treeHead {
text-align: center;
// color: #fff;
font-size: 14px;
padding: 10px;
align-items: center;
border: 1px solid #8db2f3;
background-color: #8db2f3;
}
step4.【进阶】添加引导线
效果说明:添加一个目录线,如图
// -------------4.添加引导线-----------
.treeBox {
width: 100%;
}
.treeBox ::v-deep .el-tree > .el-tree-node:after {
border-top: none;
}
.tree ::v-deep .el-tree-node {
position: relative;
}
// 节点左边距
.tree ::v-deep .el-tree-node__children {
padding-left: 15px;
}
.tree ::v-deep .el-tree-node :last-child:before {
height: 38px;
}
.tree ::v-deep .el-tree > .el-tree-node:before {
border-left: none;
}
.treeBox ::v-deep .el-tree > .el-tree-node:after {
border-top: none;
}
// 添加
.tree ::v-deep .el-tree-node:before {
content: "";
left: -4px;
position: absolute;
right: auto;
border-width: 1px;
}
.tree ::v-deep .el-tree-node:after {
content: "";
left: -4px;
position: absolute;
right: auto;
border-width: 1px;
}
.tree ::v-deep .el-tree-node:before {
border-left: 1px dashed #ffffff;
bottom: 0px;
height: 100%;
top: -26px;
width: 1px;
}
.tree ::v-deep .el-tree-node:after {
border-top: 1px dashed #ffffff;
height: 20px;
top: 12px;
width: 12px;
}
说明: 主要使用.treeBox ::v-deep .el-tree > .el-tree-node:after修改
三、【基础】修改tree配置效果
default-expand-all 默认展开全部节点
:expand-on-click-node="false" 点选节点不做”展开“”收起“操作
node-key="id" 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的
:indent="0" 相邻级节点间的水平缩进,单位为像素
:data="resourceData.data"
node-key="id"
ref="tree"
default-expand-all
:expand-on-click-node="false"
:props="defaultProps"
:indent="0"
class="tree"
style="width: 100%"
>
</el-tree>