uni-app 实现底部弹起页面功能 弹起的页面覆盖原页面之上 并漏出状态栏 类似知乎查看回复效果

发布于 1周前 作者 gougou168 来自 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是弹起的页面组件,包含了一个关闭按钮和一个文本输入框。

通过调整样式和逻辑,你可以进一步定制弹起页面的外观和行为,以满足具体需求。

回到顶部