split.vue 1.55 KB
<template>
  <div class="split-pane-page-wrapper">
    <Split v-model="offset" @on-moving="handleMoving">
      <div slot="left" class="pane left-pane">
        <Split v-model="offsetVertical" mode="vertical" @on-moving="handleMoving">
          <div slot="top" class="pane top-pane"></div>
          <div slot="bottom" class="pane bottom-pane"></div>
          <div slot="trigger" class="custom-trigger">
            <Icon class="trigger-icon" :size="22" type="android-more-vertical" color="#000000"/>
          </div>
        </Split>
      </div>
      <div slot="right" class="pane right-pane"></div>
    </Split>
  </div>
</template>

<script>
export default {
  name: 'split_pane_page',
  data () {
    return {
      offset: 0.6,
      offsetVertical: '250px'
    }
  },
  methods: {
    handleMoving (e) {
      console.log(e.atMin, e.atMax)
    }
  }
}
</script>

<style lang="less">
.center-middle{
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}
.split-pane-page-wrapper{
  height: 600px;
  .pane{
    width: 100%;
    height: 100%;
    &.left-pane{
      background: sandybrown;
    }
    &.right-pane{
      background: palevioletred;
    }
    &.top-pane{
      background: sandybrown;
    }
    &.bottom-pane{
      background: palevioletred;
    }
  }
  .custom-trigger{
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #fff;
    position: absolute;
    .center-middle;
    box-shadow: 0 0 6px 0 rgba(28, 36, 56, 0.4);
    cursor: row-resize;
    i.trigger-icon{
      .center-middle;
    }
  }
}
</style>