小白总结写代码遇到问题怎么办(uniapp自定义导航被滚动内容覆盖)附动图

案例

被自己蠢哭了,先看出现的问题:

顶部导航,滑动到最后导航被覆盖了?

到这里,本人先总结了一个很有用的道理:

写代码遇到问题很正常,但遇到问题该怎么解决呢,最重要的是分析问题,能够找到问题出在哪里,有报错找报错,没有报错找具体出问题的地方以及代码部分,很重要!

分析问题

因为没有报错,来分析出现的问题及写的代码

问题代码如下:

<template>
	<view class="container">
		<view class="tabs-container">
			<view v-for="(tab, index) in tabList" :key="index" @tap="tabsOn(index)"
				:class="{ active: tabsId === index }" class="tab">{{ tab.title }}</view>
		</view>
		<swiper @change="slideOn" :current="tabsId">
			<swiper-item v-for="(tab, index) in tabList" :key="index">
				<find></find>
			</swiper-item>
		</swiper>
	</view>
</template>

<script setup>
	import {
		ref
	} from 'vue';
	// 导入页面组件
	import find from "../../pages/community/find.vue"

	const tabList = [{
			title: "关注",
			index: "0"
		},
		{
			title: "推荐",
			index: "1"
		}
	];

	const tabsId = ref(0);

	const slideOn = (e) => {
		tabsId.value = e.detail.current;
	};

	const tabsOn = (index) => {
		tabsId.value = index;
	};
</script>

<style scoped lang="scss">
	.container {
		height: 100vh;
		width: 100%;

		.tabs-container {
			position: fixed;
			left: 0;
			/* 添加足够的高度来确保导航栏不会被内容遮挡 */
			height: 50px;
			width: 100%;
			display: flex;
			justify-content: space-around;

			.tab {
				padding: 20px;
			}

			.active {
				color: #7e9de2;
			}
		}

		swiper {
			height: calc(100vh - var(--status-bar-height) - 50px);
			/* 调整高度以适应导航 */
			padding-top: calc(var(--status-bar-height) + 50px);
			/* 调整 margin 以向下推 swiper 内容 */
		}
	}
</style>

组件页面内容没有展示,我用的<scroll-view>标签来包裹内容,并设置好了高度,组件页面的内容滚动一切正常,直到滑到底部时,覆盖了导航,这说明超出了设定的容器高度,可以确定,组件页面内容是没有问题的,是主页面高度的问题

我把组件页面暂时注释,问题看的更清楚:

看最右侧的滚动条,正常应该不出现滚动条,这说明我们自定义的导航超出了容器高度

解决问题

问题分析完毕,我们将之前的容器高度height:100vh;改成height: calc(100vh - 50px);  (50px是我们定义导航栏的高度),问题解决。

效果如下:

最后

自己总结的时候才发现问题是多么的简单,但是最初的时候绕了一圈,查百度问gpt,一顿乱搜,考虑监听页面高度的变化方法,禁止原始页面滚动方法,以及是不是触摸穿透问题等等,,静下心来,不要把问题复杂化,往往问题没有想象那么复杂。

需要代码可直接复制,把高度改一下就好~

  • 19
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值