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

一、前言

                       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. sql server 错误日志errorlog

    一 .概述 SQL Server 将某些系统事件和用户定义事件记录到 SQL Server 错误日志和 Microsoft Windows 应用程序日志中. 这两种日志都会自动给所有记录事件加上时间戳 ...

  2. KASAN实现原理【转】

    1. 前言 KASAN是一个动态检测内存错误的工具.KASAN可以检测全局变量.栈.堆分配的内存发生越界访问等问题.功能比SLUB DEBUG齐全并且支持实时检测.越界访问的严重性和危害性通过我之前的 ...

  3. Linux shell 及命令汇总

    1 文件管理命令 1.cat命令:将文件内容连接后传送到标准输出或重定向到文件 2.chmod命令:更改文件的访问权限 3.chown命令:更改文件的所有者 4.find命令:查找(符合条件)文件并将 ...

  4. Cs231n-assignment 2作业笔记

    assignment 2 assignment2讲解参见: https://blog.csdn.net/BigDataDigest/article/details/79286510 http://ww ...

  5. java图片上传及图片回显1

    目的:选择图片,进行图片回显之后将图片保存到服务器上(PS:没有使用任何插件,样式很丑) 实现方式: js+servlet+jsp的方式来实现 事先准备: 文件上传处理在浏览器中是以流的形式提交到服务 ...

  6. 浏览器仿EXCEL表格插件 版本更新 - 智表ZCELL产品V1.3发布

    智表(zcell)是一款浏览器仿excel表格jquery插件.智表可以为你提供excel般的智能体验,支持双击编辑.设置公式.设置显示小数精度.下拉框.自定义单元格.复制粘贴.不连续选定.合并单元格 ...

  7. 多线程中的event,用于多线程的协调

    ''' 简单的需求:红绿灯,红灯停,绿灯行 一个线程扮演红绿灯,每过一段时间灯变化,3-5个线程扮演车,红灯停,绿灯行 红绿灯线程和车的线程会相互依赖 这种场景怎么实现?---事件 切换一次灯就是一次 ...

  8. ios兼容 iphoneX ios10 ios11

    假设你有一个固定位置的标题栏,你的iOS10的CSS可能是这样写的: header { position: fixed; top:; left:; right:; height: 44px; padd ...

  9. 专治编译器编辑器vscode中文乱码输出 win10 配置系统默认utf-8编码

    VS Code输出会出现乱码,很多人都遇到过.这是因为VS Code内部用的是utf-8编码,cmd/Powershell是gbk编码.直接编译,会把“你好”输出成“浣犲ソ”.如果把cmd的活动代码页 ...

  10. SpringBoot实战(八)之RabbitMQ

    什么是RabbitMQ? RabbitMQ 是一个消息代理.它的核心原理非常简单:接收和发送消息.你可以把它想像成一个邮局:你把信件放入邮箱,邮递员就会把信件投递到你的收件人处.在这个比喻中,Rabb ...