vue项目准备与骨架搭建(二)
程序员文章站
2022-03-10 16:29:13
接上篇 https://www.cnblogs.com/chenyingying0/p/12608666.html 为什么导航不使用fixed定位: 首先解释下,手机端的头部导航和底部导航,位置一般都是固定不变的 但是我们这里不使用固定定位fixed,因为它在手机端的兼容性并不好 我们可以设置总容器 ......
接上篇
为什么导航不使用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
浏览器访问测试
推荐阅读
-
Z从壹开始前后端分离【 .NET Core2.0/3.0 +Vue2.0 】框架之二 || 后端项目搭建
-
vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解
-
从零开始搭建前后端分离的NetCore2.2(EF Core CodeFirst+Autofac)+Vue的项目框架之八MemoryCache与redis缓存的使用
-
Z从壹开始前后端分离【 .NET Core2.0/3.0 +Vue2.0 】框架之二 || 后端项目搭建
-
Vue2.0开发环境与脚手架项目搭建批处理脚本文件
-
第八天 黑马十次方 十次方的需求分析、十次方的系统设计以及RESTful、项目的前 期准备工作、十次方父模块与公共模块的搭建、基础微服务-标签CRUD的功能
-
vue项目准备与骨架搭建(二)
-
vue项目准备与骨架搭建(一)
-
从零开始搭建前后端分离的NetCore2.2(EF Core CodeFirst+Autofac)+Vue的项目框架之十二Swagger(参数)使用二
-
vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解