https://stackoverflow.com/questions/57865851/bootstrap-navbar-keeping-some-items-while-collapsing
https://stackoverflow.com/questions/50099647/bootstrap-4-navbar-keep-section-on-right-even-when-toggled/50099708#50099708
<nav class="navbar navbar-expand-lg bg-3">
<div class="container-fluid bg-3 align-items-baseline">
<a class="navbar-brand navbar-text Serif-TC fw-bolder nature-1 fs-3" href="#">Tea</a>
<button
class="navbar-toggler order-first"
type="button"
data-bs-toggle="collapse"
data-bs-target="#navbarText"
aria-controls="navbarText"
aria-expanded="false"
aria-label="Toggle navigation"
>
<span class="navbar-toggler-icon"></span>
</button>
<!-- 右側 -->
<div class="order-lg-last order-0">
<ul class="navbar-nav ml-auto mb-2 mb-lg-0">
<li class="nav-item">
<router-link
to="/userboard/cart"
active-class="active"
class="nav-link Serif-TC fw-bolder nature-1 fs-5"
href="#"
>購物車</router-link
>
</li>
</ul>
</div>
<div class="collapse navbar-collapse" id="navbarText">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<router-link
to="/info"
active-class="active"
class="nav-link Serif-TC fw-bolder nature-1 fs-5"
aria-current="page"
href="#"
>茶資訊</router-link
>
</li>
<li class="nav-item">
<router-link
to="/products"
active-class="active"
class="nav-link Serif-TC fw-bolder nature-1 fs-5"
href="#"
>找茶</router-link
>
</li>
</ul>
</div>
</div>
</nav>
然而,由於我的專案使用了Vue CLI + Vue Router
同時我將Navbar獨立成一個元件,因此當我們點選了選單內的連結,跳轉到其他頁面的時候
Vue並不會重新渲染Navbar元件,因此選單卻不會自己收起來
watch: {
$route(){
if(document.body.offsetWidth < 992){
this.$refs.navbarBtn.click();
}
}
}
使用watch來直接watch $route,當$route發生改變時,便會執行{ }中的程式碼
這裡用
document.body.offsetWidth
來得到螢幕寬度,而992正是Bootstrap的lg
因此
if(document.body.offsetWidth < 992){...}
這段的意思就是,當Bootstrap Navbar變成漢堡選單時,執行{ }內的程式碼
而我做的事情也非常簡單,就是再按一次按鈕