vue項目準備與骨架搭建(二)

来源:https://www.cnblogs.com/chenyingying0/archive/2020/03/31/12609330.html
-Advertisement-
Play Games

接上篇 https://www.cnblogs.com/chenyingying0/p/12608666.html 為什麼導航不使用fixed定位: 首先解釋下,手機端的頭部導航和底部導航,位置一般都是固定不變的 但是我們這裡不使用固定定位fixed,因為它在手機端的相容性並不好 我們可以設置總容器 ...


接上篇 https://www.cnblogs.com/chenyingying0/p/12608666.html

 

為什麼導航不使用fixed定位:

首先解釋下,手機端的頭部導航和底部導航,位置一般都是固定不變的

但是我們這裡不使用固定定位fixed,因為它在手機端的相容性並不好

我們可以設置總容器為relative,並且溢出隱藏,然後設置頭部導航和底部導航absolute

頁面中除去頭部和底部的部分作為滾動區域

 

在vue中,組件一般不包含位置信息,這樣不利用組件復用。

位置信息一般由父組件和頁面組件來提供

 

修改app.vue

<template>
  <div id="app" class="g-container">
    <div class="g-view-container">
      <router-view></router-view>
    </div>
    <div class="g-footer-container"></div>
  </div>
</template>

<script>
  export default {
    name: 'App'
  }
</script>

 

新建_containers.scss(書寫app.vue中對應的全局樣式)

@import "mixins";

.g-container{
    position: relative;
    width:100%;
    height:100%;
    max-width:640px;
    min-width:320px;
    margin:0 auto;
    overflow:hidden;
}
.g-view-container{
    height:100%;
    padding-bottom:$tabbar-height; // 註意移動端在reset文件里要設置box-sizing:border-box
}
.g-footer-container{
    position:absolute;
    left:0;
    bottom:0;
    width:100%;
    box-shadow:0 0 10px 0 hsla(0,6%,58%,0.6);
    z-index:$tabbar-z-index;
}

 

_base.scss中添加html,body的溢出隱藏

 

 

補充一下,因為我開了格式檢驗,然後由於個人代碼風格的原因,vue老是因為一些空格或者空白或者空行的問題報一大堆錯誤

真的煩死了,雖然感覺不太好,但是我還是決定把它關掉

修改config--index.js

將useEslint的值改成false就好了

 

 

接下來開發底部導航條

在components目錄中創建目錄tabbar,裡面創建index.vue

<template>
    <div class="g-tabbar">
        <router-link class="g-tabbar-item" to="/home">
            <i class="iconfont icon-home"></i>
            <span>首頁</span>
        </router-link>
        <router-link class="g-tabbar-item" to="/category">
            <i class="iconfont icon-category"></i>
            <span>分類頁</span>
        </router-link>
        <router-link class="g-tabbar-item" to="/cart">
            <i class="iconfont icon-cart"></i>
            <span>購物車</span>
        </router-link>
        <router-link class="g-tabbar-item" to="/personal">
            <i class="iconfont icon-personal"></i>
            <span>個人中心</span>
        </router-link>
    </div>
</template>

<script>
export default {
    name:"CTabbar"
}
</script>

// lang="scss"指定是scss,scoped只在該組件中有效
<style lang="scss" scoped>
    @import "~assets/scss/mixins";//必須加波浪線才不會報錯,要問理由我也不清楚

    .router-link-active{
        color:$link-active-color;
    }
</style>

 

新建_tabbar.scss

@import "mixins";

.g-tabbar{
    display:flex;
    width:100%;
    height:$tabbar-height;
    background:#fff;

    &-item{
        flex:1;
        @include flex-center(column);

        .iconfont{
            margin-bottom:4px;
            font-size:$icon-font-size;
        }
    }

}

 

修改app.vue

 

 

效果圖

 

 

vue-router

接下來創建頁面組件,使用路由來跳轉

首先在pages頁面下創建6個文件夾,命名分別是:home/category/cart/personal/search/product

每個文件夾下都有對應的index.vue,代碼如下:

紅框內根據不同頁面進行調整

 

 

修改路由index.js

import Vue from 'vue'
import Router from 'vue-router'
//引入頁面組件,這裡不直接引入,而是使用路由的懶載入
// import Home from 'pages/home';
// import Category from 'pages/category';
// import Cart from 'pages/cart';
// import Personal from 'pages/personal';
// import Search from 'pages/search';
// import Product from 'pages/product';

Vue.use(Router)

//使用ES6語法時,一般預設用const,只有當變數後面會變化時,使用let
//這裡定義的都是一級路由
const routes=[
  {
    name:'home',
    path:'/home',
    component:()=>import('pages/home'), //懶載入,對效率優化
    children:[//二級路由
      {
        name:'home-product',
        path:'product/:id',//一定不能加/
        component:()=>import('pages/product') //懶載入,對效率優化
      }
    ]
  },
  {
    name:'category',
    path:'/category',
    component:()=>import('pages/category') //懶載入,對效率優化
  },
  {
    name:'cart',
    path:'/cart',
    component:()=>import('pages/cart') //懶載入,對效率優化
  },
  {
    name:'personal',
    path:'/personal',
    component:()=>import('pages/personal') //懶載入,對效率優化
  },
  {
    name:'search',
    path:'/search',
    component:()=>import('pages/search') //懶載入,對效率優化
  },
  {//url錯誤時預設返回home頁
    path:'*',
    redirect:'/home'
  }
]

export default new Router({
  routes
})

 

由於home中存在二級路由,需要定義鏈接

因此修改home目錄中的index.vue

 

 

瀏覽器訪問測試

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、HTML列表 a、標簽: (1)<ol>有序列表 (2)<ul>無序列表 (3)<li>列表項 (4)<dl>列表 (5)<dt>列表項 (6)<dd>描述 b、HTML常用列表 (1)無序列表: 使用標簽<ul>、<li> type屬性:disc實體圓、circle空心圓、square方塊 ( ...
  • 1、HTML樣式 a、標簽 (1)<style>:樣式定義 (2)<link>:資源引用 b、屬性 (1)rel="stylesheet"外部樣式表引用 (2)type="text/css"引入文檔的類型 (3)margin-left邊距 c、三種插入方法 (1)外部樣式表:<link rel="s ...
  • 1、HTML元素 a、從開始標簽到結束標簽的所有代碼 b、開始(開放)標簽<p>、結束(閉合)標簽</p>、標簽內的東西:元素內容 c、<br/>空元素,換行的意思 d、用p標簽行之間間隔較大,用br標簽行之間間隔較小 e、HTML元素語法: (1)元素內容是開始標簽與結束標簽之間的內容 (2)空元 ...
  • 1、聲明<!DOCTYPE html> a、html有多個不同版本,只有完全明白頁面中使用確切的html版本,瀏覽器才能完全正確地顯示出html頁面。 b、沒有結束符,聲明當前是一個html5的版本 2、html基礎標簽 a、<html></html> 無論是頭還是身體,都要包含在html標簽中 b ...
  • 1、為什麼要學習html5 a、2010年出(十分年輕) b、跨平臺運行(花心=.=) c、硬體要求低(這是不可能的,H5時代,開幾個網頁都占幾g記憶體→.→) d、flash之外的選擇(flash要漸漸退出歷史舞臺T.T,曾經的4399) 2、軟硬體環境 a、硬體:正常電腦都可以(滑稽) b、系統: ...
  • 1 完整代碼下載 https://pan.baidu.com/s/1JJyVcP2KqXsd5G6eaYpgHQ 提取碼 3fzt (壓縮包名: 2020-3-24-demo.zip) 2 圖片展示 3 主要代碼 1 "use strict" 2 3 ;(function (){ 4 5 //是否支 ...
  • 一、這一節講解的是背景圖片開始的位置也是可以設置的: background-orgin:數值值; 這裡的屬性值就是開始的位置,可分為: padding-left(預設);content-box;border-box <style> *{ margin:0; padding;0; } ul li{ l ...
  • 指令是以數據去驅動DOM行為,簡化DOM操作。常用指令如下 v-text innertext,不能解析文本中的html標簽 v-html innerhtml,可解析文本中的html標簽 v-show 控制元素的顯示、隱藏 v-if、v-else-if、v-else 滿足條件才顯示對應的元素 v-fo ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...