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

一、前言

                       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. 用 Heapster 监控集群 - 每天5分钟玩转 Docker 容器技术(176)

    Heapster 是 Kubernetes 原生的集群监控方案.Heapster 以 Pod 的形式运行,它会自动发现集群节点.从节点上的 Kubelet 获取监控数据.Kubelet 则是从节点上的 ...

  2. mysql使用索引的注意事项

    使用索引的注意事项 使用索引时,有以下一些技巧和注意事项: 1.索引不会包含有NULL值的列 只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索 ...

  3. Vue学习之路2-项目初搭建

    1.检查环境是否全部安装成功 2.创建项目 2.1.打开dos命令窗口,使用dos命令转到项目文件夹下: 2.2.输入创建项目命令:vue init webpack myproject1 创建不同的打 ...

  4. 关于模块安装及cmd安装pip3模块失败的 Read timed out.的补救方法

    自己在安装pip中的request模块时,安装到一半老是报错.我看了下报错的代码最后一句写的是 Read timed out. 就是读取超时,从网上查了一下,原因是由于中国的网比较慢,下载超时.需要在 ...

  5. Log4j配置文件详解及实例

     1 ) . 配置根 Logger ,其语法为:   log4j.rootLogger = [ level ] , appenderName, appenderName, … 其中, level 是日 ...

  6. Django组件--分页器(有用)

    一.分页器对象 from django.core.paginator import Paginator,EmptyPage book_list = Book.objects.all() #假设有100 ...

  7. Python开发【前端篇】JavaScript和Jquery

    JavaScript嵌入页面的方式 1.行间事件(主要用于事件) <input type="button" name="" onclick="a ...

  8. ideal中把项目打成war包,并放在tomcat运行,遇见的问题。。。

    先说下我遇见的问题吧:最近做项目要把项目放在tomcat上运行,用的springboot框架, 在建项目时选择的是  jar包,项目写完要部署打包是,在pom中虽然把包改成了war ,可是每次放入to ...

  9. Android开发欢迎页点击跳过倒计时进入主页

    没点击跳过自然进入主页,点击跳过之后立即进入主页     1.欢迎页布局activity_sp.xml放一张背景图(图片随你便啦)再放一个盛放倒计时的TextView   <?xml versi ...

  10. iframe 自适应

    <iframe src="http://www.fulibac.com" id="myiframe" scrolling="no" o ...