---恢复内容开始---

一、前言

                       1、底部导航(两种做法)

                                        2、轮播图

                                        3、九宫格

二、主要内容

1、底部导航

  方式一:借用mint-ui, 这里实现tab切换时高亮可以给每个tab双向绑定一个值

(1)html结构代码如下

 <!--底部-->
<mt-tabbar v-model="selected" fixed>
<mt-tab-item id="home">
<img slot="icon" src="./assets/index.png">
首页
</mt-tab-item>
<mt-tab-item id="vip">
<img slot="icon" src="./assets/vip.png">
会员
</mt-tab-item>
<mt-tab-item id="shopcart">
<img slot="icon" src="./assets/shopcart.png">
购物车
</mt-tab-item>
<mt-tab-item id="search">
<img slot="icon" src="./assets/search.png">
查找
</mt-tab-item>
</mt-tabbar>

  (2)实现点击时切换,并且当前的背景为高亮

mint-ui官方说了tabBar有value属性值,就是id值,

export default {
name: 'App',
data(){
return {
selected:'' }
}, watch:{
selected:function(newV,oldV){ console.log(newV);
console.log(oldV);
console.log(this.selected);// 官方文档已经说明了,tabbar 有 value属性是 选中的项的id值,点击的时候会给selected进行赋值,也就将id值赋给selected,根据selected的值为点击的那个添加一个is-selected样式,你可以更改这个样式,或者绑定一个点击事件判断selected的值,添加样式,原理是一样的
this.$router.push({name:this.selected});//这里进行路由跳转,跳到当前点击这里 }
}
}

  方式二:vue-router中给我们提供了linkactiveclass,用这种方式可以自定义导航

  (1)html结构代码

   <!--底部-->
<div class="tabBar">
<ul>
<li v-for="(tab, index) in tabs">
<router-link :to="tab.routerName">
<img :src="tab.imgSrc">
<p>{{tab.title}}</p>
</router-link>
</li>
</ul> </div>

  (2)将tab用到的图片定义到下面的data中

 import index from './assets/index.png'
import vip from './assets/vip.png'
import shopcart from './assets/shopcart.png'
import search from './assets/search.png' let tabs = [
{id:1, title:"首页", imgSrc:index, routerName:{name:'home'}},
{id:2, title:"会员", imgSrc:vip, routerName:{name:'vip'}},
{id:3, title:"购物车", imgSrc:shopcart, routerName:{name:'cart'}},
{id:4, title:"查找", imgSrc:search, routerName:{name:'search'}} ]
export default {
name: 'App',
data(){
return { tabs }
},

  (3)自己定义tab样式

.tabBar{
width: 100%;
height: 55px;
background-color: #ccc;
position: absolute;
bottom: 0;
left: 0;
background-image: linear-gradient(180deg, #d9d9d9, #d9d9d9 50%, transparent 50%);
background-size: 100% 1px;
background-repeat: no-repeat;/*做一像素渐变线*/
background-position: top left;
background-color: #fafafa;
} .tabBar ul{
width: 100%;
overflow: hidden;
} .tabBar ul li{
float: left;
width: 25%;
height: 55px;
text-align: center;
} .tabBar ul li a{
display: inline-block;
width: 100%;
height: 100%;
padding-top: 10px; }
.tabBar ul li a.link-active{
background-color: pink;
}
.tabBar ul li a img{
width: 25px;
height: 25px;
}
.tabBar ul li a p{
font-size: 12px;
}

tabBar.css

 

2、轮播图

轮播图的做法比较简单,

  (1)直接用mint-ui 到官网找到swiper,

  (2)在首页(home组件创建好后),发送axios请求,拿到接口里面 的图片,

 //在组件被创建好之后,请求轮播图图片
created(){
//api/index?type=top&key=79b64827a7a0f95504dfb2f7e903208d
this.$axios.get('api/index?type=top&key=79b64827a7a0f95504dfb2f7e903208d')
.then(res=>{
console.log(res.data.result);
this.imgslist= res.data.result.data
})
.catch(err=>{
console.log('轮播图异常',err);
})
}

  (3)然后进行图片渲染

  

 <!--这是轮播图-->
<mt-swipe :auto='4000' class='swiper' style="height: 200px;background-color: red;">
<mt-swipe-item v-for="(item, index) in filterImgs" :key="index">
<img :src="item.thumbnail_pic_s">
</mt-swipe-item>
</mt-swipe>

  (4)有时候我们并不会将请求到的所有数据渲染完,这里可以在computed函数监听

  computed:{
filterImgs: function(){ //上面渲染时就用这个filterImgs
//只返回数组从0-3的数据
return this.imgslist.slice(0,2);
}
},

3、九宫格

  (1)html代码

 <!--这是九宫格-->
<div class="list">
<ul >
<li v-for="(grid, index) in grids">
<!--这里是点击时要跳转的路由-->
<router-link :to="grid.router">
<img :src="grid.src">
<p>{{grid.title}}</p>
</router-link>
<router-view></router-view>
</li>
</ul>
</div>

  (2)将九宫格里面的图片信息,路由信息存放在一个数组中

var grids = [
{id:1, src:'../../../static/img/news.png',title:'新闻资讯', router:{name:'news.list'}},
{id:2, src:'../../../static/img/news.png',title:'图文分享',router:{name:'news.list'}},
{id:3, src:'../../../static/img/news.png',title:'商品展示',router:{name:'news.list'}},
{id:4, src:'../../../static/img/news.png',title:'资讯',router:{name:'news.list'}},
{id:5, src:'../../../static/img/news.png',title:'联系我们',router:{name:'news.list'}},
{id:6, src:'../../../static/img/news.png',title:'新闻资讯',router:{name:'news.list'}}, ]
export default {
name:'Home',
data(){
return {
imgslist:[],
grids }
}
}

  (3)九宫格样式

.list{
width: 100%;
height: 100%;
} .list ul{/*他里面的li在必要时拆航*/
display: flex;
flex-wrap: wrap;
} .list ul li{
width: 33%;
height: 100px;
text-align: center;
font-size: 12px;
margin-top: 15px;
} .list ul li a{
display: inline-block;
width: 50px;
height: 50px;
margin: 0 auto;
} .list ul li a img{
width: 50px;
}

三、总结

1.当滑动页面的时候,会拽着底部导航滑动如下

2.解决上面的问题加全局样式:

html{
width: 100%;
height: 100%;
overflow: hidden;
} body{
padding-top: 41px;
width: 100%;
height: 100%;
overflow: auto;
}

3.这是有多久没有写项目了::

https://www.jianshu.com/p/1ee1c410dc67

---恢复内容结束---

Vue(小案例_vue+axios仿手机app)_首页(底部导航栏+轮播图+九宫格)的更多相关文章

  1. Vue(小案例_vue+axios仿手机app)_公共组件(路由组件传参)

    一.前言                    1.公共轮播图的实现                    2.组件传参,公共组件的实现 二.主要内容 1.公共轮播图的实现 (1)分析:当渲染不同的轮 ...

  2. Vue(小案例_vue+axios仿手机app)_购物车(二模拟淘宝购物车页面,点击加减做出相应变化)

    一.前言 在上篇购物车中,如果用户刷新了当前的页面,底部导航中的数据又会恢复为原来的: 1.解决刷新,购物车上数值不变                                         ...

  3. Vue(小案例_vue+axios仿手机app)_购物车

    一.前言 1.购物车 二.主要内容 1.效果演示如下,当我们选择商品数量改变的时候,也要让购物车里面的数据改变 2.具体实现 (1)小球从上面跳到下面的效果 (2)当点击上面的“加入购物车按钮”让小球 ...

  4. Vue(小案例_vue+axios仿手机app)_图文列表实现

    一.前言 1.导航滑动实现   2.渲染列表信息时让一开始加载的时候就请求数据 3.根据路由的改变,加载图文的改变(实现用户访问网站时可能执行的三个操作) 二.主要内容 1.导航滑动实现: (1)演示 ...

  5. Vue(小案例_vue+axios仿手机app)_上拉加载

    ---恢复内容开始--- 一.前言                                                                                    ...

  6. Vue(小案例_vue+axios仿手机app)_实现用户评论

    一.前言 1.渲染评论列表 2.点击加载按钮,加载更多    3.提交评论 二.主要内容 1.评论列表一般是注册到一个全局的公共组件中 2.请求后台数据,渲染评论列表 (1)数据格式如下 地址 /ap ...

  7. Vue(小案例_vue+axios仿手机app)_图片列表操作

    一.前言 1.让图片还没有被完全加载出来的时候给用户提示                                       2.图片查看器 二.主要内容 1.让图片还没有被完全加载出来的时候 ...

  8. Vue(小案例_vue+axios仿手机app)_购物车(计算商品总金额)

    一.前言                 1.计算总金额                 2.点击删除按钮,删除对应的商品信息                 3.当还没结算的时候,当用户跳到其他页面 ...

  9. Vue(小案例_vue+axios仿手机app)_Vuex优化购物车功能

    一.前言         1.用vuex实现加入购物车操作 2.购物车详情页面          3.点击删除按钮,删除购物详情页面里的对应商品 二.主要内容 1.用vuex加入购物车 (1)在src ...

随机推荐

  1. 智能POS常见问题整理

    智能POS预警值为小于所设的数量,H5就会变为锁定状态 智能POS查看数据库方法: 商米D1:设置-存储设备和USB-内部存储设备-浏览-winboxcash tablet.db为智能POS数据库 W ...

  2. 【原】Java学习笔记005 - 流程控制

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 程序的流程控制(流 ...

  3. c/c++ 继承与多态 静态调用与动态调用

    静态调用,与动态调用. 动态调用条件:必须用父类的引用或者指针,并且调用的必须是虚方法. #include <iostream> class Base{ public: virtual i ...

  4. Checkpoint 和Breakpoint

    参考:http://www.cnblogs.com/qiangshu/p/5241699.htmlhttp://www.cnblogs.com/biwork/p/3366724.html 1. Che ...

  5. sklearn使用——梯度下降及逻辑回归

    一:梯度下降: 梯度下降本质上是对极小值的无限逼近.先求得梯度,再取其反方向,以定步长在此方向上走一步,下次计算则从此点开始,一步步接近极小值.需要注意的是步长的取值,如果过小,则需要多次迭代,耗费大 ...

  6. FutureTask并发详解,通俗易懂

    最近做项目,使用到了FutureTask和主线程并发,应用到实际中还是挺实用的,特在此总结一下. 有不对之处,忘各位多多指出. package com.demo; import java.util.c ...

  7. springMVC使用HandlerMethodArgumentResolver 自定义解析器实现请求参数绑定方法参数

    http://blog.csdn.net/truong/article/details/30971317 http://blog.csdn.net/fytain/article/details/439 ...

  8. Linux安装python2.7

    一.Python安装 以Python-2.7.7为例,安装包:Python-2.7.7.tgz如无特殊说明,以下安装步骤都采用root用户执行 1. 解压Python-2.7.7.tgz tar -x ...

  9. yum makecache

    $ yum makecache 就是把服务器的包信息下载到本地电脑缓存起来,makecache建立一个缓存,以后用install时就在缓存中搜索,提高了速度.配合yum -C search xxx使用 ...

  10. PHP中feof()函数的猜测

    本文环境: OS:Mac OS X 10.8.4 PHP:5.3.15 PHP的官方手册中,函数feof()下面的讨论不少,对此做了一些相关的测试. <?php print <<&l ...