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操作文本框readOnly
May 15 Javascript
jquery异步循环获取功能实现代码
Sep 19 Javascript
js限制textarea每行输入字符串长度的代码
Oct 31 Javascript
js中的时间转换—毫秒转换成日期时间的示例代码
Jan 26 Javascript
基于JavaScript实现简单的随机抽奖小程序
Jan 05 Javascript
AngularJS 输入验证详解及实例代码
Jul 28 Javascript
js实现各种复制到剪贴板的方法(分享)
Oct 27 Javascript
浅析Vue中method与computed的区别
Mar 06 Javascript
vue项目上传Github预览的实现示例
Nov 06 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
Jun 18 jQuery
关于layui 下拉列表的change事件详解
Sep 20 Javascript
vue pages 多入口项目 + chainWebpack 全局引用缩写说明
Sep 21 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
ecshop 订单确认中显示省市地址信息的方法
2010/03/15 PHP
使用swoole扩展php websocket示例
2014/02/13 PHP
php获取mysql字段名称和其它信息的例子
2014/04/14 PHP
PHP动态编译出现Cannot find autoconf的解决方法
2014/11/05 PHP
在Laravel中使用DataTables插件的方法
2018/05/29 PHP
JS小框架 fly javascript framework
2009/11/26 Javascript
讨论javascript(一)工厂方式 js面象对象的定义方法
2009/12/15 Javascript
JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)
2014/10/17 Javascript
jQuery基础语法实例入门
2014/12/23 Javascript
js读取csv文件并使用json显示出来
2015/01/09 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
2015/06/23 Javascript
JS实现网页右侧带动画效果的伸缩窗口代码
2015/10/29 Javascript
xtemplate node.js 的使用方法实例解析
2016/08/22 Javascript
微信小程序实战之登录页面制作(5)
2020/03/30 Javascript
JS解决IOS中拍照图片预览旋转90度BUG的问题
2017/09/13 Javascript
jQuery Validate插件ajax方式验证输入值的实例
2017/12/21 jQuery
jQuery图片查看插件Magnify开发详解
2017/12/25 jQuery
NodeJS 中Stream 的基本使用
2018/07/30 NodeJs
JavaScript实现简单音乐播放器
2020/04/17 Javascript
JavaScript数组去重的方法总结【12种方法,号称史上最全】
2019/02/28 Javascript
layui实现二维码弹窗、并下载到本地的方法
2019/09/25 Javascript
react用Redux中央仓库实现一个todolist
2019/09/29 Javascript
Python通过DOM和SAX方式解析XML的应用实例分享
2015/11/16 Python
Python简单爬虫导出CSV文件的实例讲解
2018/07/06 Python
python 使用多线程创建一个Buffer缓存器的实现思路
2020/07/02 Python
python 获取剪切板内容的两种方法
2020/11/28 Python
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
英国外籍人士的在线超市:British Corner Shop
2019/06/03 全球购物
业务员薪酬管理制度
2014/01/15 职场文书
敬老院献爱心活动总结
2014/07/08 职场文书
部门活动策划方案
2014/08/16 职场文书
肖申克的救赎观后感
2015/06/02 职场文书
公司要求试用期员工提交“述职报告”,该怎么写?
2019/07/17 职场文书
《正面管教》读后有感:和善而坚定的旅程
2019/12/19 职场文书
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技
css常用字体属性与背景属性介绍
2022/02/28 HTML / CSS