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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...