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 相关文章推荐
js innerHTML 改变div内容的方法
Aug 03 Javascript
删除select中所有option选项jquery代码
Aug 12 Javascript
JavaScript实现维吉尼亚(Vigenere)密码算法实例
Nov 22 Javascript
jQuery对下拉框,单选框,多选框的操作
Feb 21 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
Dec 10 Javascript
JavaScript中的依赖注入详解
Mar 18 Javascript
JS组件系列之JS组件封装过程详解
Apr 28 Javascript
JS实现点击Radio动态更新table数据
Jul 18 Javascript
JS简单判断是否在微信浏览器打开的方法示例
Jan 08 Javascript
vue实现鼠标移入移出事件代码实例
Mar 27 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
Apr 02 Javascript
js时间转换毫秒的实例代码
Aug 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
Yii2分页的使用及其扩展方法详解
2016/05/23 PHP
Zend Framework入门教程之Zend_View组件用法示例
2016/12/09 PHP
PHP实现生成推广海报的方法详解
2018/03/14 PHP
Javascript 自定义类型方法小结
2010/03/02 Javascript
jquery下利用jsonp跨域访问实现方法
2010/07/29 Javascript
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
比较不错的JS/JQuery显示或隐藏文本的方法
2014/02/13 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
2014/09/04 Javascript
详解AngularJS过滤器的使用
2016/03/11 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
2017/09/16 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
AngularJS中ng-options实现下拉列表的数据绑定方法
2018/08/13 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
Phaser.js实现简单的跑酷游戏附源码下载
2018/10/26 Javascript
如何利用vue+vue-router+elementUI实现简易通讯录
2019/05/13 Javascript
解决jquery validate 验证不通过后验证正确的信息仍残留在label上的方法
2019/08/27 jQuery
AutoJs实现刷宝短视频的思路详解
2020/05/22 Javascript
python开发的小球完全弹性碰撞游戏代码
2013/10/15 Python
Selenium定位元素操作示例
2018/08/10 Python
django DRF图片路径问题的解决方法
2018/09/10 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
python内存动态分配过程详解
2019/07/15 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
Python3实现mysql连接和数据框的形成(实例代码)
2020/01/17 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
2020/10/23 Python
Python OpenCV中的numpy与图像类型转换操作
2020/12/11 Python
纯CSS3实现圆圈动态发光特效动画的示例代码
2021/03/08 HTML / CSS
Expedia印度:您的一站式在线旅游网站
2017/08/24 全球购物
求职自荐信范文格式
2013/11/29 职场文书
求职简历的自我评价
2014/01/31 职场文书
毕业生自荐书
2014/02/02 职场文书
销售队伍口号
2014/06/11 职场文书
2014年人事部工作总结
2014/12/03 职场文书
Windows Server 2019 配置远程控制以及管理方法
2022/04/28 Servers
SpringBoot详解自定义Stater的应用
2022/07/15 Java/Android