123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- <template>
- <view>
- <uni-card is-full :is-shadow="false">
- <text class="uni-h6">这是抽屉式导航组件使用示例,可以指定菜单左侧或者右侧弹出(仅初始化生效),组件内部可以放置任何内容。点击页面按钮即可显示导航菜单。</text>
- </uni-card>
- <uni-section title="左侧滑出" type="line">
- <view class="example-body">
- <button type="primary" @click="showDrawer('showLeft')"><text class="word-btn-white">显示Drawer</text>
- </button>
- <uni-drawer ref="showLeft" mode="left" :width="320" @change="change($event,'showLeft')">
- <view class="close">
- <button
- @click="closeDrawer('showLeft')"><text class="word-btn-white">关闭Drawer</text></button>
- </view>
- </uni-drawer>
- </view>
- </uni-section>
- <uni-section title="右侧滑出" type="line">
- <view class="example-body">
- <button type="primary" @click="showDrawer('showRight')"><text class="word-btn-white">显示Drawer</text>
- </button>
- <uni-drawer ref="showRight" mode="right" :mask-click="false" @change="change($event,'showRight')">
- <view class="scroll-view">
- <scroll-view class="scroll-view-box" scroll-y="true">
- <view class="info">
- <text class="info-text">右侧遮罩只能通过按钮关闭,不能通过点击遮罩关闭</text>
- </view>
- <view class="close">
- <button @click="closeDrawer('showRight')"><text
- class="word-btn-white">关闭Drawer</text></button>
- </view>
- <view class="info-content" v-for="item in 100" :key="item">
- <text>可滚动内容 {{item}}</text>
- </view>
- <view class="close">
- <button @click="closeDrawer('showRight')"><text
- class="word-btn-white">关闭Drawer</text></button>
- </view>
- </scroll-view>
- </view>
- </uni-drawer>
- </view>
- </uni-section>
- </view>
- </template>
- <script>
- export default {
- data() {
- return {
- showRight: false,
- showLeft: false
- }
- },
- methods: {
- confirm() {},
- // 打开窗口
- showDrawer(e) {
- this.$refs[e].open()
- },
- // 关闭窗口
- closeDrawer(e) {
- this.$refs[e].close()
- },
- // 抽屉状态发生变化触发
- change(e, type) {
- console.log((type === 'showLeft' ? '左窗口' : '右窗口') + (e ? '打开' : '关闭'));
- this[type] = e
- }
- },
- onNavigationBarButtonTap(e) {
- if (this.showLeft) {
- this.$refs.showLeft.close()
- } else {
- this.$refs.showLeft.open()
- }
- },
- // app端拦截返回事件 ,仅app端生效
- onBackPress() {
- if (this.showRight || this.showLeft) {
- this.$refs.showLeft.close()
- this.$refs.showRight.close()
- return true
- }
- }
- }
- </script>
- <style lang="scss">
- .example-body {
- padding: 10px;
- }
- .scroll-view {
- /* #ifndef APP-NVUE */
- width: 100%;
- height: 100%;
- /* #endif */
- flex:1
- }
- // 处理抽屉内容滚动
- .scroll-view-box {
- flex: 1;
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- }
- .info {
- padding: 15px;
- color: #666;
- }
- .info-text {
- font-size: 14px;
- color: #666;
- }
- .info-content {
- padding: 5px 15px;
- }
- .close {
- padding: 10px;
- }
- </style>
|