VUX中x-header和tabbar因内容过长无法固定的问题

VUX中x-header和tabbar因内容过长无法固定的问题

vux官方文档中x-headertabbar的定位方式分别是relativeabsolute。文档中有给出解决方案,但觉得太麻烦,或者说我还没有get到精髓。
官方方案:结合view-box使用,给bodyhtml加样式,还要设置所有父级divheight: 100%。我哪里知道有几个父级div?真叫人头痛。

个人方案

所以就琢磨一下,想到了overflow: scroll。我就把除掉headertabbar的部分设置这个样式,高度用浏览器高度减掉这二者的高度。废话不都说,看效果图:
在这里插入图片描述在这里插入图片描述
对比,发现二者,headertabbar并没有移动,而中间的过长内容成功地滚动。

代码

废话少说,上代码:

<template>
    <div>
        <x-header :left-options="{showBack: false}">header</x-header>
        <router-view :style="routerViewClass"></router-view>
        <tabbar v-model="index">
            <tabbar-item>
                <span slot="label">tab1</span>
            </tabbar-item>
            <tabbar-item>
                <span slot="label">tab2</span>
            </tabbar-item>
            <tabbar-item>
                <span slot="label">tab3</span>
            </tabbar-item>
        </tabbar>
    </div>
</template>

<script>
import { XHeader, Tabbar, TabbarItem, ViewBox } from "vux"
export default {
    name: "Home",
    components: {
        XHeader, Tabbar, TabbarItem, ViewBox
    },
    props: {},
    data() {
        return {
            index: 0,
            routerViewClass: {
                height: "",
                overflow: "scroll"
            }
        }
    },
    watch:{
        index: {
            handler(newV, oldV) {
               	// 部分代码被删除
            },
            immediate: true
        }
    },
    computed: {},
    methods: {
        setHeight() {
            this.routerViewClass.height = window.innerHeight - 96 + "px"
            console.log(this.routerViewClass)
        }
    },
    created() {},
    mounted() {
    	// 在DOM加载后,执行,获得window的高度,并减去header和tabbar的高度,
    	// 96是自己在开发者模式看到的,header的height为 40,上下padding为 3,
    	// tabbar的height为 50
        this.setHeight()
    }
}
</script>

<style scoped>

</style>

这就是我的方法,大家如果想到了更好的方法,可以留言,教教我。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值