uni-app中movable-area在app页面超过一屏时,movable-view会跟随滚动问题
uni-app中movable-area在app页面超过一屏时,movable-view会跟随滚动问题
height设为 100vh 而不能设为 100%
<movable-area style="width: 100%; height: 100vh;">
<movable-view class="home-movable-view" :x="movableInfo.x" :y="movableInfo.y" direction="all">
</movable-view>
<!-- swiper -->
<view style="width: 100%; height: 100%; overflow-y: scroll;">
</view>
</movable-area>
开发环境 | 版本号 | 项目创建方式 |
---|
1 回复
在uni-app中,当movable-area
位于超过一屏高度的页面时,movable-view
可能会跟随页面滚动,这通常是由于movable-area
和movable-view
的定位和布局设置不当导致的。为了解决这个问题,我们需要确保movable-area
在页面中具有固定的定位,并且不受页面滚动的影响。以下是一个示例代码,展示了如何在uni-app中实现这一点。
首先,确保你的页面结构大致如下:
<template>
<view class="container">
<scroll-view scroll-y="true" style="height: 100vh;">
<!-- 页面内容 -->
<view class="page-content">
<!-- 其他内容 -->
<view class="fixed-area">
<!-- movable-area 应该位于这个固定区域内 -->
<movable-area class="movable-area">
<movable-view class="movable-view" direction="all" inertia="{{true}}" out-of-bounds="{{true}}">
<!-- movable-view 内容 -->
<view>Drag me</view>
</movable-view>
</movable-area>
</view>
<!-- 其他内容 -->
</view>
</scroll-view>
</view>
</template>
接下来,是对应的样式设置:
<style>
.container {
position: relative;
width: 100%;
height: 100%;
}
.scroll-view {
height: 100vh; /* 确保滚动视图占满整个视口高度 */
overflow: auto;
}
.page-content {
padding-bottom: 100px; /* 为固定区域留出空间,防止被滚动覆盖 */
}
.fixed-area {
position: fixed; /* 固定定位,不受滚动影响 */
bottom: 0;
left: 0;
width: 100%;
height: 100px; /* 固定区域的高度 */
background-color: #fff; /* 背景色,可根据需要调整 */
}
.movable-area {
width: 100%;
height: 100%;
}
.movable-view {
width: 50px;
height: 50px;
background-color: red;
border-radius: 50%;
}
</style>
在这个例子中,.fixed-area
使用了position: fixed;
来确保它始终位于视口的底部,并且不受页面滚动的影响。movable-area
被包含在.fixed-area
中,因此movable-view
也不会随页面滚动。同时,通过调整.page-content
的padding-bottom
来确保内容不会被固定的.fixed-area
覆盖。
这种方法可以有效地解决movable-view
在滚动页面中的跟随滚动问题,同时保持movable-view
在固定区域内的可拖动性。