移動端底部導(dǎo)航固定配合vue-router實(shí)現(xiàn)組件切換功能
在我們平時練習(xí)或者實(shí)際項(xiàng)目中也好,我們常常遇到這么一個需求:移動端中的導(dǎo)航并不是在頂部也不是在底部,而是在最底部且是固定的,當(dāng)我們點(diǎn)擊該導(dǎo)航項(xiàng)時會切換到對應(yīng)的組件。
相信對于很多朋友而言,這是一個很簡單的需求,而且市面上有很多開源的組件庫就可以實(shí)現(xiàn),像比如說:cube-ui等!那么對于一個要是還在練習(xí)以及對第三方組件庫不是很了解的朋友不妨看看我這篇,相信會對你有所收獲的!
首先,在實(shí)現(xiàn)這個需求之前,我們先分析或者回想下和自己做過的demo中哪個類似,相信很多朋友立馬就會想起來---tab欄切換,那么對于HTML結(jié)構(gòu)的設(shè)計我們便可以借助tab欄切換的結(jié)構(gòu):一個大盒子套著兩個小盒子,一個作容器,另一個作導(dǎo)航!
HTML 結(jié)構(gòu)
<div> <div>容器</div> <div class="footer"> <div class="module-nav"> <div class="nav-i"> <div class="iconfont icon"></div> <h3>首頁</h3> </div> <div class="nav-i"> <div class="iconfont icon"></div> <h3>發(fā)現(xiàn)</h3> </div> <div class="nav-i"> <div class="iconfont icon-add"></div> </div> <div class="nav-i"> <div class="iconfont icon"></div> <h3>消息</h3> </div> <div class="nav-i"> <div class="iconfont icon"></div> <h3>我的</h3> <div> </div> </div> </div>
做完HTML結(jié)構(gòu)的編寫,那我們在給上面的骨架穿上衣服,根據(jù)需求“底部固定”,我們很容易便會想到 position: fixed ,當(dāng)然我這里也是用固定定位實(shí)現(xiàn)的,但布局采用的是 flex,在采用 flex 結(jié)合固定定位布局的時候常常會出現(xiàn)很多不必要的問題,如:flex 屬性失效,兩者效果沖突等,原因更多的便是“脫標(biāo)”導(dǎo)致的,其中更多的便是出現(xiàn)在父元素 flex,子元素 position的時候,這時候可以中間加個div使兩者擺脫聯(lián)系。
css 樣式( stylus形式 )
.footer position fixed bottom 0 z-index 999 max-width 1080px width 100% border-top 1px solid #C0C0C0 .module-nav display flex justify-content space-around .nav-i width 60px text-align center .icon font-size 35px padding 5px 0 .icon-add font-size 60px h3 font-size 15px font-weight normal margin 0 padding-bottom 5px
骨架和衣服都做好后,那么大概的雛形就出來了,我們的需求也就實(shí)現(xiàn)了一半,剩下的便是組件切換了。這個就簡單了,只需要配置下路由表,然后指定跳轉(zhuǎn)便可以了
路由表
routes: [
{
path: "/",
name: "home",
component: Home
},
{
path: "/find",
name: "find",
component: Find
},
{
path: "/info",
name: "info",
component: Info
},
{
path: "/user",
name: "user",
component: User
}
]
最后在“容器”內(nèi)添加router-view即可,下面可以看看完整代碼:
// HTML
<div>
<div class="main-content">
<router-view></router-view>
</div>
<div class="footer">
<div class="module-nav">
<router-link tag="div" to="/" class="nav-i">
<div class="iconfont icon"></div>
<h3>首頁</h3>
</router-link>
<router-link tag="div" to="/find" class="nav-i">
<div class="iconfont icon"></div>
<h3>發(fā)現(xiàn)</h3>
</router-link>
<div class="nav-i">
<div class="iconfont icon-add"></div>
</div>
<router-link tag="div" to="/info" class="nav-i">
<div class="iconfont icon"></div>
<h3>消息</h3>
</router-link>
<router-link tag="div" to="/user" class="nav-i">
<div class="iconfont icon"></div>
<h3>我的</h3>
</router-link>
</div>
</div>
</div>
// css
.footer
position fixed
bottom 0
z-index 999
max-width 1080px
width 100%
border-top 1px solid #C0C0C0
.module-nav
display flex
justify-content space-around
.nav-i
width 60px
text-align center
.icon
font-size 35px
padding 5px 0
.icon-add
font-size 60px
h3
font-size 15px
font-weight normal
margin 0
padding-bottom 5px
// router
export default new Router({
routes: [
{
path: "/",
name: "home",
component: Home
},
{
path: "/find",
name: "find",
component: Find
},
{
path: "/info",
name: "info",
component: Info
},
{
path: "/user",
name: "user",
component: User
}
]
});
總結(jié)
以上所述是小編給大家介紹的移動端底部導(dǎo)航固定配合vue-router實(shí)現(xiàn)組件切換功能,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復(fù)大家的!
相關(guān)文章
Vue中splice()方法對數(shù)組進(jìn)行增刪改等操作的實(shí)現(xiàn)
vue中對數(shù)組的元素進(jìn)行刪除,以前一直以為這個方法是vue中特有的,后來百度之后才知道原來是js的一個寫法,下面這篇文章主要給大家介紹了關(guān)于Vue中splice()方法對數(shù)組進(jìn)行增刪改等操作的實(shí)現(xiàn)方法,需要的朋友可以參考下2023-05-05
Nuxt 嵌套路由nuxt-child組件用法(父子頁面組件的傳值)
這篇文章主要介紹了Nuxt 嵌套路由nuxt-child組件用法(父子頁面組件的傳值),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
vue實(shí)現(xiàn)指定區(qū)域自由拖拽、打印功能
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)指定區(qū)域自由拖拽、打印功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-04-04
vue如何使用vant組件的field組件disabled修改默認(rèn)樣式
這篇文章主要介紹了vue如何使用vant組件的field組件disabled修改默認(rèn)樣式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05
vue項(xiàng)目設(shè)置打包后的靜態(tài)文件訪問路徑
這篇文章主要介紹了vue項(xiàng)目設(shè)置打包后的靜態(tài)文件訪問路徑,vue項(xiàng)目的最終項(xiàng)目文件需要經(jīng)過打包輸出,靜態(tài)文件的訪問路徑需要在vue.config.js文件中設(shè)置,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02
基于vue-cli 打包時抽離項(xiàng)目相關(guān)配置文件詳解
下面小編就為大家分享一篇基于vue-cli 打包時抽離項(xiàng)目相關(guān)配置文件詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03
Vue 中 filter 與 computed 的區(qū)別與用法解析
這篇文章主要介紹了Vue 中 filter 與 computed 的區(qū)別與用法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-11-11
Vue?Router解決多路由復(fù)用同一組件頁面不刷新問題(場景分析)
這篇文章主要介紹了Vue?Router解決多路由復(fù)用同一組件頁面不刷新問題,多路由復(fù)用同一組件的場景分析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08

