<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 移動端底部菜單欄 :-: ![](https://img.kancloud.cn/05/69/056953bb33c9d7ec0d548b472d5f0144_378x669.png) ## 傳統結構和樣式 ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>05底部菜單欄</title> <link rel="stylesheet" href="//at.alicdn.com/t/font_1226299_mntzsrlgg2e.css"> <style> * {margin: 0;padding: 0;list-style: none;border: none;} body {background: #ccc;} .footer-tabbar {position: absolute;left: 0;bottom: 0;width: 100%;height: 44px;background: #fff;font-size: 14px;} .footer-tabbar ul{ height: 100%; display: flex; justify-content: center; align-items: center;} .footer-tabbar ul li{width: 20%; height: 100%; display: flex; flex-direction: column; justify-content: center; align-items: center;text-align: center;} .footer-tabbar ul li a{color: #333; text-decoration: none;} .footer-tabbar .iconfont{ font-size:18px; vertical-align: middle;} </style> </head> <body> <div id="app"> <footer class="footer-tabbar"> <ul> <li><a href="#"><i class="iconfont icon-shouye1"></i><p>首頁</p></a></li> <li><a href="#"><i class="iconfont icon-huanyuan"></i><p>專題</p></a></a></li> <li><a href="#"><i class="iconfont icon-category"></i><p>分類</p></a></a></li> <li><a href="#"><i class="iconfont icon-gouwuche"></i><p>購物車</p></a></a></li> <li><a href="#"><i class="iconfont icon-wode"></i><p>我的</p></a></a></li> </ul> </footer> </div> </body> </html> ``` **效果** :-: ![](https://img.kancloud.cn/e3/16/e3168d3ab2310b77a05b0f5136c03a90_378x668.png)\*\*\*\* ## 拆分成組件 > 底欄實現,會將它分成一個整體做成組件,里面的每一項又如何管理?我們肯定將里面的每一項做成一個組件。 ## 無插槽寫法 ``` <div id="app"> <tab-bar></tab-bar> </div> <script src="js/vue.js"></script> <script> Vue.component('tab-bar-item', { template: ` <li><a href="#"><i class="iconfont icon-shouye1"></i><p>首頁</p></a></li> ` }) Vue.component('tab-bar', { template: `<footer class="footer-tabbar"> <ul> <tab-bar-item></tab-bar-item> </ul> </footer>` }) var vm = new Vue({ el: '#app', data: {} }) </script> ``` >[success] 我們可以發現,`tab-bar-item`組件里面的數據是死的。是不好的,可以讓父組件通過屬性傳遞來實現。 > 而且底欄的效果,可以將它們放在一個數組中存放。放在實例的data中。 ### 數據 ``` tabbar: [ {"id": 1, "icon": "icon-shouye1", "name": "首頁", "url": "/"}, {"id": 2,"icon": "icon-huanyuan","name": "專題","url": "/topic"}, {"id": 3,"icon": "icon-category","name": "分類","url": "/category"}, {"id": 4,"icon": "icon-gouwuche","name": "購物車","url": "/cart"}, {"id": 5,"icon": "icon-wode","name": "我的","url": "/user"} ] ``` ``` <div id="app"> <tab-bar :tabbar="tabbar"></tab-bar> </div> <script src="js/vue.js"></script> <script> Vue.component('tab-bar-item', { props:['item'], template: ` <li> <a :href="item.url"> <i class="iconfont" :class="item.icon"></i> <p>{{item.name}}</p> </a> </li> ` }) Vue.component('tab-bar', { props:['tabbar'], template: ` <footer class="footer-tabbar"> <ul> <tab-bar-item v-for="(item,index) in tabbar" :item="item"></tab-bar-item> </ul> </footer>` }) var vm = new Vue({ el: '#app', data: { tabbar: [ {"id": 1, "icon": "icon-shouye1", "name": "首頁", "url": "/"}, {"id": 2,"icon": "icon-huanyuan","name": "專題","url": "/topic"}, {"id": 3,"icon": "icon-category","name": "分類","url": "/category"}, {"id": 4,"icon": "icon-gouwuche","name": "購物車","url": "/cart"}, {"id": 5,"icon": "icon-wode","name": "我的","url": "/user"} ] } }) </script> ``` >[warning] 上面的組件看似沒有問題,但是再回過頭仔細查看,實例組件的數據,往`tab-bar-item`組件傳遞。要先傳到`tab-bar` 才能傳遞下去。我們也可以看看有插槽的寫法(編譯作用域) ## 有插槽寫法 > 在`tab-bar`組件上添加插槽。將 `tab-bar-item` 組件作為`tab-bar` 組件的內容傳遞到定義的插槽中。 ``` <div id="app"> <tab-bar> <tab-bar-item v-for="(item,index) in tabbar" :item="item" :key="item.id"></tab-bar-item> </tab-bar> </div> <script src="js/vue.js"></script> <script> Vue.component('tab-bar-item', { props: ['item'], template: ` <li> <a :href="item.url"> <i class="iconfont" :class="item.icon"></i> <p>{{item.name}}</p> </a> </li> ` }) Vue.component('tab-bar', { template: `<footer class="footer-tabbar"> <ul> <slot></slot> </ul> </footer>` }) var vm = new Vue({ el: '#app', data: { tabbar: [ {"id": 1, "icon": "icon-shouye1", "name": "首頁", "url": "/"}, {"id": 2, "icon": "icon-huanyuan", "name": "專題", "url": "/topic"}, {"id": 3, "icon": "icon-category", "name": "分類", "url": "/category"}, {"id": 4, "icon": "icon-gouwuche", "name": "購物車", "url": "/cart"}, {"id": 5, "icon": "icon-wode", "name": "我的", "url": "/user"} ] } }) </script> ``` >[success] 這樣寫的好處,利用編譯作用域,將數據直接傳遞給了 `tab-bar-item` 組件,而不再經歷 `tab-bar` 作中轉了。 >[danger] 總結: > 很多同學在初學組件時,會經歷的階段是:認為這種定義組件形式是最好的!要摒棄掉這個想法。 > 不同的組件用法只有放在不同的場景下它才更能發揮出它的作用。我們也可以看一面的一個案例無疑焦點圖。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看