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

一、前言

                       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. 网络中的NAT模式

    一.概述 NAT英文全称是"Network Address Translation",中文意思是"网络地址转换",它是一个IETF(Internet Engin ...

  2. 进程命令(taskkill)

    taskkill 命令: // 描述: 结束一个或多个任务或流程. // 语法: taskkill [/s <computer> [/u [<Domain>\]<User ...

  3. jenkins使用开始踩坑(1)

    上篇文章 安装教程 :https://www.cnblogs.com/linuxchao/p/linuxchao-jenkins-setup.html 一.前戏 话说上一篇文章安装完 JDK 和 je ...

  4. Git的可视化工具SourceTree管理代码 SourceTree的使用

    出处:https://blog.csdn.net/android_zhengyongbo/article/details/72885860 其他参考资料https://www.cnblogs.com/ ...

  5. python爬虫【实战篇】模拟登录人人网

    requests 提供了一个叫做session类,来实现客户端和服务端的会话保持 使用方法 1.实例化一个session对象 2.让session发送get或者post请求 session = req ...

  6. KERBEROS PROTOCOL TUTORIAL

    KERBEROS PROTOCOL TUTORIAL   This tutorial was written by Fulvio Ricciardi and is reprinted here wit ...

  7. Django-CRM项目学习(四)-stark的分页器与搜索框

    1.分页器 分页器相关知识点,请查看以下链接 https://www.cnblogs.com/gbq-dog/p/10724859.html 2.代码归类 归类前代码 header_list = [] ...

  8. 小程序——阿里服务器配置https及什么是IIS

    1.申请域名:阿里云 2.免费开启SSL证书:管理=>免费开启SSL证书>单域名>dev.xxx.top 3.配置服务器:下载=>IIS7证书 *注册一个域名,可以免费开启一个 ...

  9. Linux命令1

     1.获取当前系统支持的所有命令的列表: compgen ­-c  2.怎样查看一个linux命令的概要与用法: whatis grep #便可查到grep的用法 3.怎样一页一页地查看一个大文件的内 ...

  10. Windows 与Office 镜像的区别

    .SW开头是批量授权的版本. .CN开头是简体中文版镜像文件 零售版本. 其实建议使用 SW开头的镜像 可以直接使用KMS进行激活了. 转帖一个百度知道的内容: 看安装包的名称 cn开头的是零售版的, ...