uni-app 实现底部弹起页面功能 弹起的页面覆盖原页面之上 并漏出状态栏 类似知乎查看回复效果
uni-app 实现底部弹起页面功能 弹起的页面覆盖原页面之上 并漏出状态栏 类似知乎查看回复效果
底部弹起页面,弹起的页面覆盖在原页面之上,漏出状态栏,类似知乎的查看回复功能
2 回复
不是弹出层的那种
要实现类似知乎查看回复效果的底部弹起页面功能,可以使用uni-app提供的组件和API来实现。这里给出一个基本的实现方案,包括如何在原页面上覆盖一个弹起的页面,并露出状态栏。
首先,你需要定义两个页面:一个是主页面(index.vue
),另一个是弹起的页面(popup.vue
)。
主页面(index.vue)
<template>
<view class="container">
<button @click="showPopup">Show Popup</button>
<view v-if="isPopupVisible" class="popup-overlay" @click="hidePopup"></view>
<view v-if="isPopupVisible" class="popup-content">
<popup @close="hidePopup"></popup>
</view>
</view>
</template>
<script>
import Popup from '@/components/Popup.vue';
export default {
components: {
Popup
},
data() {
return {
isPopupVisible: false
};
},
methods: {
showPopup() {
this.isPopupVisible = true;
},
hidePopup() {
this.isPopupVisible = false;
}
}
};
</script>
<style>
.container {
position: relative;
padding: 20px;
}
.popup-overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.5);
z-index: 1000;
}
.popup-content {
position: fixed;
bottom: 0;
left: 0;
right: 0;
z-index: 1001;
background-color: white;
}
</style>
弹起页面(Popup.vue)
<template>
<view class="popup">
<view class="popup-header">
<text>Reply</text>
<button @click="$emit('close')">Close</button>
</view>
<view class="popup-body">
<!-- 弹起页面的内容 -->
<textarea placeholder="Type your reply here..."></textarea>
</view>
</view>
</template>
<style>
.popup {
position: absolute;
bottom: 0;
left: 0;
right: 0;
top: calc(env(safe-area-inset-top) + 20px); /* 确保留出状态栏空间 */
background-color: white;
padding: 20px;
box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1);
}
.popup-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20px;
}
.popup-body {
/* 其他样式 */
}
</style>
以上代码展示了一个基本的实现,其中index.vue
是主页面,包含一个按钮来触发弹起页面,以及一个覆盖在原页面上的遮罩层。Popup.vue
是弹起的页面组件,包含了一个关闭按钮和一个文本输入框。
通过调整样式和逻辑,你可以进一步定制弹起页面的外观和行为,以满足具体需求。