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 事件记录使用说明
Oct 20 Javascript
jquery获取URL中参数解决中文乱码问题的两种方法
Dec 18 Javascript
Firefox下无法正常显示年份的解决方法
Sep 04 Javascript
JavaScript使用循环和分割来替换和删除元素实例
Oct 13 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
May 31 Javascript
AngularJS模仿Form表单提交的实现代码
Dec 08 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
Jun 13 Javascript
javascript数组定义的几种方法
Oct 06 Javascript
vue2.0 常用的 UI 库实例讲解
Dec 12 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
Apr 04 Javascript
用js编写留言板
Mar 17 Javascript
解决vue中provide inject的响应式监听
Apr 19 Vue.js
谈谈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
PHP4实际应用经验篇(6)
2006/10/09 PHP
理解php原理的opcodes(操作码)
2010/10/26 PHP
php语言流程控制中的主动与被动
2012/11/05 PHP
为指定元素增加样式的js代码
2009/12/09 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
2012/03/01 Javascript
Jquery操作radio的简单实例
2014/01/06 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
jQuery晃动层特效实现方法
2015/03/09 Javascript
jQuery提示插件alertify使用指南
2015/04/21 Javascript
JS组件Bootstrap Select2使用方法解析
2016/05/30 Javascript
jQuery获取this当前对象子元素对象的方法
2016/11/29 Javascript
JavaScript组成、引入、输出、运算符基础知识讲解
2016/12/08 Javascript
前端JS面试中常见的算法问题总结
2016/12/23 Javascript
canvas实现简易的圆环进度条效果
2017/02/28 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
jQuery Tree Multiselect使用详解
2017/05/02 jQuery
微信小程序如何获知用户运行小程序的场景教程
2017/05/17 Javascript
使用node.js搭建服务器
2017/05/20 Javascript
深入浅析AngularJs模版与v-bind
2018/07/06 Javascript
浅谈监听单选框radio改变事件(和layui中单选按钮改变事件)
2019/09/10 Javascript
[03:32]2014DOTA2西雅图邀请赛 CIS外卡赛赛前black专访
2014/07/09 DOTA
Python 开发Activex组件方法
2009/11/08 Python
打开电脑上的QQ的python代码
2013/02/10 Python
Python递归遍历列表及输出的实现方法
2015/05/19 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
2019/08/28 Python
python用opencv完成图像分割并进行目标物的提取
2020/05/25 Python
python中Array和DataFrame相互转换的实例讲解
2021/02/03 Python
pytorch 计算Parameter和FLOP的操作
2021/03/04 Python
CPB肌肤之钥美国官网:Clé de Peau Beauté
2017/09/05 全球购物
完美实现CSS垂直居中的11种方法
2021/03/27 HTML / CSS
汉语言文学专业自荐信
2014/06/11 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
学生保证书
2015/01/16 职场文书
农村环境卫生倡议书
2015/04/29 职场文书
实习单位鉴定意见
2015/06/04 职场文书