微信小程序简单树状图的实现

由于微信没有树状图这个组件,自己做了个简简单单的树状图,有需要的可以参考下我这个。
先上图
在这里插入图片描述
实现了三级,如果有更多级别的需求,可以参考我的规律进行添加。
下面是wxml的代码

<view>
    <view class="box_1" bindtap="change_box1">
      <view style="transform: rotate({{du1}}deg);">
        <image  class="sjx" src="../../images/sjx.png"></image>
      </view>
      <view style="margin-left:5px">
        所有电表
      </view>
    </view>
    <view wx:for="{{box_2}}" hidden="{{box2_hidden}}">
      <view class="box_2" bindtap="box3_show" data-index="{{index}}">
        <view style="transform: rotate({{item.du2}}deg);">
          <image class="sjx" src="../../images/sjx.png"></image>
        </view>
        <view style="margin-left:5px">{{item.name}}</view>
      </view>
       
      <view hidden="{{item.box3_hidden}}" >
        <view wx:for="{{item.son}}" class="box_3">
          <view style="transform: rotate({{du3}}deg);">
            <image class="sjx" src="../../images/sjx.png"></image>
          </view>
          <view>{{item}}</view>
        </view>
      </view>
    </view>
  </view>

看到这里,可能就有人问了,这个图片是个啥?那我就好人做到底,上图!
在这里插入图片描述
没错,这个图片就是三角形,需要的可以下载然后改下图片路径或名称!
下面就是js代码了
先来看data里的数据有哪些

	du1:0,
    box_2:[
      {
        'name':'深圳1',
        "box3_hidden":true,
        "du2":0,
        son:['电表1','电表2']
      },
      {
        'name':'深圳2',
        "box3_hidden":true,
        "du2":0,
        son:['电表3','电表4']
      },
      {
        'name':'深圳3',
        "box3_hidden":true,
        "du2":0,
        son:[]
      }
    ],
    
    box2_hidden:true,
    du3:0,

然后下面是函数

box3_show:function(res){
    var that=this
    var index=res.currentTarget.dataset.index
    var box_2=JSON.parse(JSON.stringify(that.data.box_2))
    if(box_2[index].du2==90){
      box_2[index].du2=0
      box_2[index].box3_hidden=true
    }else{
      if(box_2[index].son){
        box_2[index].box3_hidden=false
        box_2[index].du2=90
      }
    }
    that.setData({
      box_2
    })
  },
  change_box1:function(){
    var du1=this.data.du1
    if(du1==0){
      du1=90
    }else{
      du1=0
    }
    this.setData({
      du1
    })
    var hidden=this.data.box2_hidden
    if(hidden==true &&this.data.box_2){
      hidden=false
    }else{
      hidden=true
    }
    this.setData({
      box2_hidden:hidden
    })
  },

下面是wxss代码

.sjx{
  width: 15px;
  height: 15px;
}
.box_1{
  display: flex;
}
.box_2{
  display: flex;
  margin: 10px 0 10px 20px;
}
.box_3{
  display: flex;
  margin: 10px 0 10px 40px;
}

看到这里,就知道这个demo真的很简单,本人也是一枚小白,有什么不足的地方还请大家多多指教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值