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 相关文章推荐
JavaScript常用全局属性与方法记录积累
Jul 03 Javascript
Angularjs注入拦截器实现Loading效果
Dec 28 Javascript
使用Angular.js开发的注意事项
Oct 19 Javascript
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
Dec 14 Javascript
JS解决position:sticky的兼容性问题的方法
Oct 17 Javascript
20行JS代码实现粘贴板复制功能
Feb 06 Javascript
jQuery利用FormData上传文件实现批量上传
Dec 04 jQuery
JavaScript ES6中的简写语法总结与使用技巧
Dec 30 Javascript
JS实现的简单tab切换功能完整示例
Jun 20 Javascript
JS扁平化输出数组的2种方法解析
Sep 17 Javascript
vue简单练习 桌面时钟的实现代码实例
Sep 19 Javascript
vscode中使用npm安装babel的方法
Aug 02 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+MYSQL 出现乱码的解决方法
2008/08/08 PHP
PHP提示Cannot modify header information - headers already sent by解决方法
2014/09/22 PHP
PHP生成json和xml类型接口数据格式
2015/05/17 PHP
js变量以及其作用域详解
2020/07/18 Javascript
jQuery focus和blur事件的应用详解
2014/01/26 Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
2014/05/02 Javascript
深入分析JSONP跨域的原理
2014/12/10 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
jQuery中Ajax的get、post等方法详解
2015/01/20 Javascript
javascript作用域问题实例分析
2015/07/13 Javascript
jQuery仿360导航页图标拖动排序效果代码分享
2015/08/24 Javascript
AngularJS入门教程之AngularJS表达式
2016/04/18 Javascript
JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端
2016/10/08 Javascript
jQuery给指定的table动态添加删除行的操作方法
2016/10/12 Javascript
获取当前按钮或者html的ID名称实例(推荐)
2017/06/23 Javascript
小程序中this.setData的使用和注意事项
2019/08/28 Javascript
javascript 数组精简技巧小结
2020/02/26 Javascript
SpringBoot在yml配置文件中配置druid的操作
2020/11/16 Javascript
[02:38]DOTA2 夜魇暗潮2020活动介绍官方视频
2020/11/04 DOTA
Python 分析Nginx访问日志并保存到MySQL数据库实例
2014/03/13 Python
详解Python命令行解析工具Argparse
2016/04/20 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
2017/06/09 Python
python3实现基于用户的协同过滤
2018/05/31 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
使用pytorch实现论文中的unet网络
2020/06/24 Python
CSS3田字格列表的样式编写方法
2018/11/22 HTML / CSS
座谈会主持词
2014/03/20 职场文书
经济担保书范文
2014/04/02 职场文书
公务员诚信承诺书
2014/05/26 职场文书
品质口号大全
2014/06/17 职场文书
个人查摆问题整改措施
2014/10/04 职场文书
2015年收银员个人工作总结
2015/04/01 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书
2016医师资格考试考生诚信考试承诺书
2016/03/25 职场文书
浅谈PHP7中的一些小技巧
2021/05/29 PHP
Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
2021/08/23 MySQL