VUE移动端音乐APP学习【二】:页面骨架开发


页面骨架

页面的骨架分为三块区域: header(头部标题)、tab(切换按钮)、router-view(路由切换的容器)

在app.vue中:

<template>
  <div id="app">
    <m-header>m-header>
    <tab>tab>
    <router-view>router-view>
  div>
template>

<script>
import MHeader from './components/m-header/m-header';
import Tab from './components/tab/tab';

export default {
  components: {
    MHeader,
    Tab,
  },
};

script>

 配置路由

在router/index.js中进行路由配置:

import Vue from 'vue';
import VueRouter from 'vue-router';
import Recommend from '../components/recommend/recommend';
import Search from '../components/search/search';
import Singer from '../components/singer/singer';
import Rank from '../components/rank/rank';

Vue.use(VueRouter);

const routes = [
  {
    path: '/recommend',
    name: 'Recommend',
    component: Recommend,
  }, {
    path: '/search',
    name: 'Search',
    component: Search,
  }, {
    path: '/singer',
    name: 'Singer',
    component: Singer,
  }, {
    path: '/rank',
    name: 'Rank',
    component: Rank,

  },

];

const router = new VueRouter({
  routes,
});

export default router;

配置默认路由:

{
    path: '/',
    redirect: '/recommend',
  },

实现导航栏组件

tag.vue:

<template>
  <div class="tab">
    <router-link tag="div" class="tab-item" to="/recommend">
      <span class="tab-link">推荐span>
    router-link>
    <router-link tag="div" class="tab-item" to="/singer">
      <span class="tab-link">歌手span>
    router-link>
    <router-link tag="div" class="tab-item" to="/rank">
      <span class="tab-link">排行span>
    router-link>
    <router-link tag="div" class="tab-item" to="/search">
      <span class="tab-link">搜索span>
    router-link>
  div>
template>

<script>
export default {
  name: 'tab',
};

script>
<style lang="scss">
.tab {
  display: flex;
  height: 44px;
  line-height: 44px;
  font-size: $font-size-medium;

  .tab-item {
    flex: 1;
    text-align: center;

    .tab-link {
      padding-bottom: 5px;
      color: $color-text-l;
    }

    &.router-link-active {
      .tab-link {
        color: $color-theme;
        border-bottom: 2px solid $color-theme;
      }
    }
  }
}
style>

其中

 &.router-link-active 实现当前的路由对应的按钮的高亮效果

首页效果图

vue