autoHeight.vue 高度自适应

Posted pengchenggang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>

  

以上是关于autoHeight.vue 高度自适应的主要内容,如果未能解决你的问题,请参考以下文章

HTML标签的TABLE高度怎么自适应

怎样让一个div高度自适应浏览器高度

Iframe的代码怎么写才能满足我的自适应内容的高度的要求啊?

vue下iframe怎么自适应高度

iframe高度自适应,终于解决了

jQuery解决iframe高度自适应代码