autoHeight.vue 高度自適應


autoHeight.vue 高度自適應

<!--
* @description 自適應高度
* @fileName autoHeight.vue
* @author 彭成剛
* @date 2019/03/11 09:45:38
* @version V1.0.0
<autoHeight v-model="s1Height"
                  :allHeight='0'
                  :precent='20'
                  :diffHeight='0'>
  <table-s1 :height="s1Height"></table-s1>
</autoHeight>
!-->
<template>
  <div :style='styleHeight'>
    <slot></slot>
  </div>
</template>

<script>
export default {
  data () {
    return {
      allHeightData: 0,
      styleHeight: ''
    }
  },
  props: {
    value: {
      type: Number,
      default: 0
    },
    noStyle: {
      type: Boolean,
      default: false
    },
    allHeight: {
      type: Number,
      default: 0
    },
    precent: {
      type: Number,
      default: 100
    },
    diffHeight: {
      type: Number,
      default: 0
    }
  },

  components: {},

  computed: {},

  mounted () {
    this.calcHeight()
    window.addEventListener('resize', () => {
      this.calcHeight()
    })
    // window.innerHeight
  },
  watch: {
    'allHeight' (to, from) {
      this.calcHeight()
    },
    '$route' (to, from) {
      this.calcHeight()
    }
  },
  methods: {
    calcHeight () {
      let retHeight
      if (this.allHeight === 0) {
        this.allHeightData = window.innerHeight
      } else {
        this.allHeightData = this.allHeight
      }

      retHeight = (this.allHeightData * this.precent / 100) - this.diffHeight
      this.$emit('input', retHeight)

      if (!this.noStyle) {
        this.styleHeight = 'height: ' + retHeight + 'px; overflow-y:auto;'
      }
    }

  }
}

</script>
<style lang='less' scoped>
</style>

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM