zoukankan      html  css  js  c++  java
  • 【Vue入门】利用VueCli搭建基本框架--在Home页实现上左右基本布局(五)

    上一节讲了简单封装Http请求并调用登陆的Api接口

    这节主要说Home的布局展示

    一、设置布局代码

      Home页布局参考Elementui中的布局代码(采用上,左右结构)  当然也可以用其他的布局

    <el-container>
      <el-header>Header</el-header>
      <el-container>
        <el-aside width="200px">Aside</el-aside>
        <el-main>Main</el-main>
      </el-container>
    </el-container>

      添加代码后点击预览,会发现界面只有半截,不是全部铺满的,像这样的:

     造成这样的原因就是body或者外面的div属性里height不是100%,对应的给body及外层的div加上height=100%,将它撑开就可以显示正常了。

    二、增加左侧导航(这里将导航页面新建到components文件夹下把导航页面当组件引进Home页,同理Header将来也用类似的组件替换)

      a、在components新建navMenu.vue文件

      b、在Elementui中将导航相关的代码拷贝过来,做稍许加工

    <template>
      <el-menu
        default-active="1-4-1"
        class="el-menu-vertical-demo"
        @open="handleOpen"
        @close="handleClose"
        :collapse="isCollapse"
        background-color="#545c64"
        text-color="#fff"
        active-text-color="#ffd04b"
      >
        <el-menu-item
          v-for="(item, key) of menuList"
          :key="key"
          :index="item.name"
        >
          <i
            :model="isCollapse"
            @click="showAndHideSiderBar"
            :class=item.class
          ></i>
          <span slot="title">{{ item.navItem }}</span>
        </el-menu-item>
        <!-- <el-menu-item>
            <i :model="isCollapse" @click="showAndHideSiderBar" :class="arrObj" :style="sideBarStyleObj"></i>
            <span slot="title" @click="showAndHideSiderBar">{{tipsWords}}</span>
            </el-menu-item>
            <el-menu-item index="1-1">
                <i class="el-icon-message"></i>
                <span slot="title">学生管理</span>
            </el-menu-item>
    
            <el-menu-item  index="1-2">
                <i class="el-icon-menu"></i>
                <span slot="title">成绩管理</span>
            </el-menu-item>
    
            <el-menu-item  index="1-3">
                <i class="el-icon-setting"></i>
                <span slot="title">专业管理</span>
            </el-menu-item> -->
      </el-menu>
    </template>
    
    <style>
    .el-menu-vertical-demo:not(.el-menu--collapse) {
      /*  200px; */
    }
    
    </style>
    
    <script>
    export default {
      data() {
        return {
          isCollapse: false,
          menuList: [
            { name: "/", navItem: "收缩/展开", class:"el-icon-d-arrow-right"},
            { name: "/Students", navItem: "学生列表", class:"el-icon-menu"},
            { name: "/Major", navItem: "专业管理", class:"el-icon-date" }
          ],
          activeIndex:'/Students',
        };
      },
      methods: {
        //侧边栏打开时关联事件
        handleOpen(key, keyPath) {
          console.log(key, keyPath);
        },
        //侧边栏收缩时关联事件
        handleClose(key, keyPath) {
          console.log(key, keyPath);
        },
        //收缩或展开侧边栏
        showAndHideSiderBar(){
            this.isCollapse = !this.isCollapse
            console.log(this.isCollapse);
        },
      }
    };
    </script>
    View Code

      c、注意这里有个导航栏的展开和收缩,需要给标记位来实现,具体也可参考elementui官方示例

      d、在Home页面引入我们创建的navMenu组件,引入组件有两种方式,这里写最常见的一种,还有一种下节来讲

    <template>
      <el-container>
        <el-header>
          <headerMenu />
        </el-header>
        <el-container>
          <el-aside :width="isCollapse ? '64px':'200px'">
            <myMenu />
          </el-aside>
          <el-main>
            <router-view></router-view>
          </el-main>
        </el-container>
      </el-container>
    </template>
    
     
    
    <script>
    import myMenu from "@/components/navMenu";
    import headerMenu from "@/components/headerMenu";
    export default {
      data() {
        return {
          isCollapse: false,
        };
      },
      components: {
        myMenu,
        headerMenu,
      },
    };
    </script>
    
    <style>
    .el-container {
      height: 100%;
    }
    .el-aside {
      background-color: #545c64;
    }
    .el-main {
      background-color: #eaedf2;
    }
    .el-header{
      width: 100%;
      background-color: #545c64;
    }
    </style>
    View Code

      导入后预览就可以了

    三、新增Header组件并导入上部Header

      a、同样在components文件加下新增nvaHeader.vue文件

    <template>
        <div class="header">欢迎:{{userName}}
            <el-dropdown>
            <span class="el-dropdown-link">
                更多<i class="el-icon-arrow-down el-icon--right"></i>
            </span>
            <el-dropdown-menu slot="dropdown">
                <el-dropdown-item @click="handlePerson">个人设置</el-dropdown-item>
                <el-dropdown-item @click="handleLoginOut">退出</el-dropdown-item>
            </el-dropdown-menu>
            </el-dropdown>
        </div>
    </template>
    
    <script>
    export default {
        data(){
            return{
                userName:'admin'
            }
        },
        methods:{
            //进入个人设置页面
            handlePerson(){
                console.log('用户点击了个人设置')
            },
            //用户退出
            handleLoginOut(){
                console.log('用户点击了退出设置')
            }
        }
    
    }
    </script>
    
    <style>
        .header{
            text-align: right;
            background-color: #545c64;
            color:white;
            width: 100%;
        }
        .el-dropdown-link{
            color:yellow
        }
    </style>
    View Code

      b、同上在Home页将nvaHeader文件引入

    四、显示右侧主页面信息

      a、显示右侧信息时,可更改Home的布局代码,具体如下则默认进入页面后,根据路由配置加载对应的页面

    <el-main>Main</el-main>改为<el-main><router-view></router-view></el-main>
    <el-container>
        <el-header>
          <headerMenu />
        </el-header>
        <el-container>
          <el-aside :width="isCollapse ? '64px':'200px'">
            <myMenu />
          </el-aside>
          <el-main>
            <router-view></router-view>
          </el-main>
        </el-container>
      </el-container>
    </template>

       PS:如果没有写好的页面,直接保留Main的标记提示也是可以的

    这样Home的布局页面也就写好了

  • 相关阅读:
    X Apex 忘记internal密码
    X ORA-27303: additional information: startup egid = 202 (?), current egid = 101 (dba)
    X 高效查看MySQL帮助文档的方法
    X mysql高可用之MHA--邮件报警
    X MHA高可用配置及故障切换——详细部署步骤及报错解决办法
    X linux 配置发送邮件的功能
    RESTFUL(javax.ws.rs-api)
    nginx及基本原理
    nginx中的location匹配规则
    Linux网络(TCP/IP)
  • 原文地址:https://www.cnblogs.com/yhnet/p/13858164.html
Copyright © 2011-2022 走看看