vue实现树形结构样式和功能的实例代码


Posted in Javascript onOctober 15, 2019

一、主要运用element封装的控件并封装成组件运用,如图所示

vue实现树形结构样式和功能的实例代码

 代码如图所示:

vue实现树形结构样式和功能的实例代码

 下面是子组件的代码:

<template>
 <ul class="l_tree">
  <li class="l_tree_branch" v-for="item in model" :key="item.id">
   <div class="l_tree_click">
    <button type="button" class="l_tree_children_btn" v-if="item.children" @click="toggle(item)">{{ !item.show ? '-' : '+' }}</button>
    <span class="l_folder" @click="clickSize(item.id)" :class="current === item.id ? 'current' : 'currentSize'">{{ item.name }}</span>
   </div>
   <ew-tree
    v-show="!item.show"
    :model="item.children"
    :current="current"
    @change="changeCurrent"></ew-tree>
  </li>
 </ul>
</template>
<script>
export default {
 name: 'EwTree',
 props: {
  model: {
   type: Array,
   default() {
    return []
   }
  },
  current: {
   type: String,
   default: ''
  }
 },
 methods: {
  toggle(item) {
   console.log(item)
   var idx = this.model.indexOf(item)
   this.$set(this.model[idx], 'show', !item.show)
  },
  clickSize(id) {
   console.log(1, id)
   this.$emit('change', id)
  },
  changeCurrent(id) {
   this.clickSize(id)
  }
 },
 mounted() {
 }
}
</script>
<style lang="less" scoped>
*{
 box-sizing: border-box;
 margin: 0;padding: 0;
}
*:before,*:after{
 box-sizing: border-box;
}
ul,
li {
 list-style: none;
}
.current{
 color: #e9c309 !important
}
.l_tree_container {
 width: 100%;
 height: 100%;
 box-shadow: 0 0 3px #ccc;
 margin: 13px;
 position: relative;
}

.l_tree {
 width: calc(100%);
 padding-left: 15px;
}
.l_tree_branch {
 width: 100%;
 height: 100%;
 display: block;
 padding: 13px;
 position: relative;
}

.l_tree_branch .l_tree_children_btn {
 width: 12px;
 height: 12px;
 background-color: #515a68;
 font-size: 8px;
 text-align: center;
 color: #bbbec1;
 outline: none;
 border: 0;
 cursor: pointer;
 border: 1px solid #bbbec1;
 line-height: 11px;
 margin-left: 5px;
}

ul.l_tree:before {
 content: '';
 border-left: 1px dashed #999999;
 height: calc(100% - 24px);
 position: absolute;
 left: 10px;
 top: 0px;
}
.l_tree,
.l_tree_branch {
 position: relative;
}

.l_tree_branch::after {
 content: '';
 width: 18px;
 height: 0;
 border-bottom: 1px dashed #bbbec1;
 position: absolute;
 right: calc(100% - 10px);
 top: 24px;
 left: -5px;
}

.l_tree_container>.l_tree::before,
.l_tree_container>.l_tree>.l_tree_branch::after {
 display: none;
}
.l_folder {
 font-size:11px;
 margin-left: 5px;
 display: inline;
 color: #bbbec1;
 cursor: pointer;
}
</style>

主要难点是:current传值问题,所以current绑定在父组件

 vue实现树形结构样式和功能的实例代码

 父组件中的值和方法:

 vue实现树形结构样式和功能的实例代码

 vue实现树形结构样式和功能的实例代码

 

 当然在运行npm时是需要安装npm install ewtree -S,实现组件化

最终效果如下:

vue实现树形结构样式和功能的实例代码

总结

以上所述是小编给大家介绍的vue实现树形结构样式和功能的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
jquery cookie插件代码类
May 26 Javascript
LazyForm jQuery plugin 定制您的CheckBox Radio和Select
Oct 24 Javascript
基于jquery的button默认enter事件(回车事件)。
May 18 Javascript
一个JavaScript变量声明的知识点
Oct 28 Javascript
当鼠标移动时出现特效的JQuery代码
Nov 08 Javascript
关于JavaScript中name的意义冲突示例介绍
May 29 Javascript
javascript框架设计读书笔记之模块加载系统
Dec 02 Javascript
jQuery中animate()方法用法实例
Dec 24 Javascript
JS判断是否手机或pad访问实现方法
Dec 09 Javascript
解决vue组件props传值对象获取不到的问题
Jun 06 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
Nov 17 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
Oct 24 Javascript
谈谈IntersectionObserver懒加载的具体使用
Oct 15 #Javascript
js实现开关灯效果
Mar 30 #Javascript
JS实现灯泡开关特效
Mar 30 #Javascript
浅谈微信小程序列表埋点曝光指南
Oct 15 #Javascript
javascript网页随机点名实现过程解析
Oct 15 #Javascript
javascript随机变色实例代码
Oct 15 #Javascript
vue中axios的二次封装实例讲解
Oct 14 #Javascript
You might like
php下连接mssql2005的代码
2011/01/17 PHP
PHP随机字符串生成代码(包括大小写字母)
2013/06/24 PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
2019/11/04 PHP
原生javascript图片自动或手动切换示例附演示源码
2013/09/04 Javascript
javascript获取所有同类checkbox选项(实例代码)
2013/11/07 Javascript
js Date概念详细介绍
2013/11/22 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
javascript RegExp 使用说明
2016/05/21 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
2016/05/28 Javascript
使用jquery.qrcode.js生成二维码插件
2016/10/17 Javascript
Bootstrap进度条学习使用
2017/02/09 Javascript
微信小程序 图片加载(本地,网路)实例详解
2017/03/10 Javascript
Vuex 入门教程
2018/01/10 Javascript
微信、QQ、微博、Safari中使用js唤起App
2018/01/24 Javascript
JavaScript中利用Array filter() 方法压缩稀疏数组
2018/02/24 Javascript
微信小程序6位或多位验证码密码输入框功能的实现代码
2018/05/29 Javascript
vue动态渲染svg、添加点击事件的实现
2020/03/13 Javascript
python实现逆波兰计算表达式实例详解
2015/05/06 Python
简单了解Django模板的使用
2017/12/20 Python
利用Python如何生成便签图片详解
2018/07/09 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
2018/10/15 Python
python调用matlab的m自定义函数方法
2019/02/18 Python
如何使用Python自动控制windows桌面
2019/07/11 Python
jupyter notebook 添加kernel permission denied的操作
2020/04/21 Python
tensorflow转换ckpt为savermodel模型的实现
2020/05/25 Python
在tensorflow以及keras安装目录查询操作(windows下)
2020/06/19 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
2021/01/27 Python
美国婚礼和派对礼品网站:Kate Aspen(新娘送礼会、迎婴派对)
2018/03/28 全球购物
我的珠宝盒:Ma boîte à bijoux
2019/08/27 全球购物
德国净水壶和滤芯品牌:波尔德PearlCo(家用净水器)
2020/04/29 全球购物
销售会计工作职责
2013/12/02 职场文书
汽车专业大学生职业生涯规划范文
2014/01/07 职场文书
成立公司计划书
2014/05/07 职场文书
基层党支部公开承诺书
2014/05/29 职场文书
《女娲补天》读后感5篇
2019/12/31 职场文书
解决Pytorch中关于model.eval的问题
2021/05/22 Python