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 相关文章推荐
Add Formatted Data to a Spreadsheet
Jun 12 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
May 14 Javascript
JavaScript中诡异的delete操作符
Mar 12 Javascript
原创jQuery弹出层插件分享
Apr 02 Javascript
jQuery插件制作之全局函数用法实例
Jun 01 Javascript
全系IE支持Bootstrap的解决方法
Oct 19 Javascript
javascript简单实现等比例缩小图片的方法
Jul 27 Javascript
原生Javascript和jQuery做轮播图简单例子
Oct 11 Javascript
Angular4 中常用的指令入门总结
Jun 12 Javascript
AngularJS使用ocLazyLoad实现js延迟加载
Jul 05 Javascript
详解Vue2.0 事件派发与接收
Sep 05 Javascript
在Vuex使用dispatch和commit来调用mutations的区别详解
Sep 18 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 is_file()和is_dir()用于遍历目录时用法注意事项
2010/03/02 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
2014/05/28 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
2014/10/14 PHP
Javascript 获取链接(url)参数的方法
2009/02/15 Javascript
JQuery 前台切换网站的样式实现
2009/06/22 Javascript
自己的js工具_Form 封装
2009/08/21 Javascript
JS面向对象编程之对象使用分析
2010/08/19 Javascript
无缝滚动改进版支持上下左右滚动(封装成函数)
2012/12/04 Javascript
获取offsetTop和offsetLeft值的js代码(兼容)
2013/04/16 Javascript
JS实现div居中示例
2014/04/17 Javascript
实例解析jQuery中proxy()函数的用法
2016/05/24 Javascript
Angular懒加载机制刷新后无法回退的快速解决方法
2016/08/30 Javascript
JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端
2016/10/08 Javascript
js HTML5上传示例代码完整版
2016/10/10 Javascript
Javascript Function.prototype.bind详细分析
2016/12/29 Javascript
微信小程序 在线支付功能的实现
2017/03/14 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
2017/05/30 Javascript
vue 运用mock数据的示例代码
2017/11/07 Javascript
jquery实现进度条状态展示
2020/03/26 jQuery
Python创建系统目录的方法
2015/03/11 Python
python实现颜色rgb和hex相互转换的函数
2015/03/19 Python
python中map、any、all函数用法分析
2015/04/21 Python
今天 平安夜 Python 送你一顶圣诞帽 @微信官方
2017/12/25 Python
python 实现多线程下载视频的代码
2019/11/15 Python
keras的load_model实现加载含有参数的自定义模型
2020/06/22 Python
python如何导入依赖包
2020/07/13 Python
python爬虫数据保存到mongoDB的实例方法
2020/07/28 Python
canvas实现扭蛋机动画效果的示例代码
2018/10/17 HTML / CSS
Canvas获取视频第一帧缩略图的实现
2020/11/11 HTML / CSS
Dyson戴森波兰官网:Dyson.pl
2019/08/05 全球购物
同学聚会欢迎辞
2014/01/14 职场文书
领导班子自我剖析材料
2014/08/16 职场文书
六年级语文下册教学计划
2015/01/22 职场文书
教师节感谢信
2015/01/22 职场文书
《火烧云》教学反思
2016/02/23 职场文书
星际争霸:毕姥爷vs解冻03
2022/04/01 星际争霸