vue-Split 面板分割

在这里插入图片描述

<template>
  <div class="split-pane-wrapper">
    <div class="pane pane-left" :style="{width:leftOffsetPercent}">
      <button @click="handleClick">点击减少左侧宽度</button>
    </div>
    <div class="pane-trigger-con" :style="{left:triggerLeft,width:triggerWidthPx}"></div>
    <div class="pane pane-right" :style="{left:leftOffsetPercent}"></div>
  </div>
</template>

<script>
export default {
    
    
  components: {
    
    },

  data() {
    
    
    return{
    
    
      // 在这定义一个值。这样用户可以直接指定占比的值
      // 在页面css 布局使用的值 使用计算属性拼接即可
      leftOffset:0.3,
      triggerWidth:8
    }
  },
  computed:{
    
    
    // 动态属性去拼接生成css 实际需要的代%形式的数据
    leftOffsetPercent(){
    
    
      return `${
      
      this.leftOffset * 100}%`
    },
    triggerWidthPx(){
    
    
      return `${
      
      this.triggerWidth}px`
    },
    triggerLeft(){
    
    
      return `calc(${
      
      this.leftOffset * 100}% - ${
      
      this.triggerWidth/2}px)`
    },
  },

  methods: {
    
    
    handleClick(){
    
    
      this.leftOffset -= 0.02
    }
  },
}
</script> 

<style lang="scss" scoped>
  .split-pane-wrapper{
    
    
    width: 100%;
    height: 100%;
    position: relative;
    .pane{
    
    
      position: absolute;
      height: 100%;
      top:0;
      &-left{
    
    
        /*width: 30%;*/
        background: brown;
      }
      &-right{
    
    
        right: 0;
        bottom: 0;
        /*left: 30%;*/
        background: chartreuse;
      }
      &-trigger-con{
    
    
        z-index: 100;
        height: 100%;
        background: red;
        position: absolute;
        top: 0;
      }
    }
  }
</style>

猜你喜欢

转载自blog.csdn.net/weixin_43843679/article/details/119648189