根据屏幕高度盒子自适应高度vue

1.需求

pc端开发的时候,比如有个盒子需要跟着屏幕的高度变化而变化,那么就需要设置他的高度
这个只适用于一个页面只有一个盒子内容时,比如整个页面只有一个表格

在这里插入图片描述

2.实现

在template中,以设置穿梭框的高度为例

<div>
    <span>选择收件角色</span>
    <el-transfer
        :titles="['所有角色', '已选角色']"
        filterable
        :filter-method="filterMethod"
        filter-placeholder="请输入用户"
        v-model="reseveValue"
        :data="data"
        :style="{height: transferHeight + 'px'}">
    </el-transfer>
</div>

在这里插入图片描述
此时我这个transferHeight高度变量不需要在data中声明,直接在computed中声明即可,自己调高度,减去上面【长江5号】盒子所占用的高度即可

computed: {
    transferHeight: function () {
        return window.innerHeight - 330
    }
},

用法和created、mounted、watch、methods放在同级即可
在这里插入图片描述
然后就可以啦,上面这种只适合于一个页面只有一张表的,如果有表单也有表格呢?

3.如果页面中还有其他内容时,对盒子表格的高度进行自适应,如果页面还有其他内容,表格高度就高,如果没有其他盒子,表格高度就高。

在这里插入图片描述
那么就需要用页面高度 - 表格的高度
template中

<el-table
    ref="singleTable"
    :data="tableData"
    :height="tableHeight + 'px'"
    border
    highlight-current-row
    style="width: 100%"
>
    <el-table-column
        width="80"
        type="index"
        label="序号"
        align="center">
    </el-table-column>
    <el-table-column
        :show-overflow-tooltip="true"
        prop="name"
        label="名称"
        align="center"
    >
    </el-table-column>
</el-table>

在data中

data () {
	tableHeight: 0
}

在mounted中

mounted: function () {
    this.$nextTick(() => {
        this.tableHeight = this.getTreeHeight(this.$refs['singleTable'].$el) - 50;
    })
},

在methods中

//  计算高度
getTreeHeight (dom) {
    return window.innerHeight - dom.offsetTop;
},

这样就完成了在页面中如果加了东西,表格高度就低,如果页面少了东西,表格高度就高

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值