效果:
代码:
<template>
<view class="container">
<button @click="showModal = true">点击按钮</button>
<view class="modal-overlay" v-if="showModal" @click="closeModal"></view>
<view class="modal-container" :class="{ active: showModal }">
<!-- 右侧弹窗的内容 -->
<view class="modal-content">
<!-- 内容区域 -->
<text>这是右侧弹窗的内容</text>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
showModal: false, // 控制弹窗显示与隐藏
};
},
methods: {
closeModal() {
this.showModal = false;
},
},
};
</script>
<style>
.container {
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}
.modal-overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.5);
z-index: 999;
}
.modal-container {
position: fixed;
top: 0;
right: -100%; /* 初始时隐藏弹窗 */
width: 300px;
height: 100%;
background-color: #fff;
z-index: 1000;
transition: right 0.3s ease;
}
.modal-container.active {
right: 0; /* 显示弹窗 */
}
.modal-content {
padding: 20px;
}
</style>