如何解决Bootstrap 5 - offcanvas 组件未显示在 vue 3 应用程序中
我正在尝试将 bootstrap 5 的新 offcanvas 组件集成到我的 vue 应用程序中。我有这个代码,在构建应用程序后,我想测试它,但我看不到画布菜单。我没有加载 js 插件来维护我的应用程序灯光,我正在使用将绑定所需类的变量添加 show 类。我该如何解决?
<template>
<nav class="navbar navbar-collapse bg-light fixed-top">
<div class="container">
<span class="float-start">
<button class="navbar-toggler" type="button" @click.prevent="showOffcanvasMenu()">
<span class="navbar-toggler-icon"></span>
</button>
</span>
</div>
<div class="offcanvas offcanvas-start" :class="showMenu ? '' : 'show'" tabindex="-1">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="">Offcanvas with backdrop</h5>
<button type="button" class="btn-close text-reset" @click.prevent="showOffcanvasMenu()"></button>
</div>
<div class="offcanvas-body">
<p>.....</p>
</div>
</div>
</nav>
<!-- <div class="container-fluid bg-light p-0" v-show="isLoading">
<div class="row">
<div class="col-12 text-center">
<div class="spinner-grow text-primary" role="status">
<span class="visually-hidden">Loading...</span>
</div>
</div>
</div>
</div> -->
<router-view/>
</template>
<script>
export default {
name: 'App',data(){
return {
showMenu: false
}
},methods: {
showOffcanvasMenu(){
this.showMenu ? this.showMenu = false : this.showMenu = true;
}
}
}
</script>
<style lang="scss">
#app {
font-family: Avenir,Helvetica,Arial,sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
//color: #2c3e50;
}
</style>
解决方法
我发现了一些问题。
首先,把:class
条件逻辑颠倒过来,应该是:
:class="showMenu ? 'show' : ''"
其次(更大的问题)是,简单地切换 show
类并不能控制 Offcanvas 元素的显示。 Offcanvas JS 组件不仅仅是切换 show
类。它还更改了 visibility
属性并连接了其他几个方法/事件。
解决方法
1 - 一种选择是不使用 Vue 切换 Offcanvas 元素,而仅使用 vanilla JS data-bs-
属性。
或者,
2 - 另一种选择是根据 visibility
...
showMenu
属性
:style="{ visibility: showMenu ? 'visible' : 'hidden' }
或者,
3 - 为 Bootstrap 的 Offcanvas 组件创建一个 Vue 包装器组件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。