vue router仿天猫底部导航栏功能


Posted in Javascript onOctober 18, 2017

首先把天猫的导航贴出来,里面包括精选、品牌、会员、购物车、我五个导航及对应的图标。

vue router仿天猫底部导航栏功能

分析:

1、图标的获取

进入阿里巴巴矢量图标库,网址  http://www.iconfont.cn。

点击官方图标库,选择天猫图标库,选中放入购物车。

vue router仿天猫底部导航栏功能

点击添加至项目,点击创建新项目按钮,创建tianmao项目,点击确定。

vue router仿天猫底部导航栏功能vue router仿天猫底部导航栏功能

此时会有查看在线链接和下载至本地两种方式,我选择第一种,因为后期如果要添加小图标的话,只需要重新生成在线链接,然后更新link即可

vue router仿天猫底部导航栏功能

vue router仿天猫底部导航栏功能

复制链接到index.html的link标签内,具体为

<link rel="stylesheet" href="http://at.alicdn.com/t/font_443540_nvmeyfe7k3rcc8fr.css" rel="external nofollow" >

引入图标,使用<i class="icon iconfont icon-wo"></i>区别在第三个class来引入对应图标

此时所需图标处理完毕

2、创建精选、品牌、会员、购物车、我及路由导航组件Home.vue、Brand.vue、Member.vue、Cart.vue、Me.vue、Tabs.vue

使用的样式时less,如果在.vue文件中写样式,style必须写成<style lang="less" type="text/less"></style>,否则会报错

Tabs.vue

<template> 
 <div class="tabs"> 
  <!--命名路由--> 
  <ul> 
   <!--this inspection reports XML/HTML tags with missing mandatory attrbutes ,you can specify attrbute name that should not be reported--> 
   <!--home被点击后,一直处于激活状态,因此需要使用精确匹配模式,在router-link中添加exact属性--> 
   <router-link :to="{name:'Home'}" tag="li" exact> 
    <div> 
     <i class="icon iconfont icon-31shouye"></i> 
    </div> 
    <div>精选</div> 
   </router-link> 
   <router-link :to="{name:'Brand'}" tag="li"> 
    <div> 
     <i class="icon iconfont icon-zhubaoshipin"></i> 
    </div> 
    <div>品牌</div> 
   </router-link> 
   <router-link :to="{name:'Member'}" tag="li"> 
    <div> 
     <i class="icon iconfont icon-huiyuanqia"></i> 
    </div> 
    <div>会员</div> 
   </router-link> 
   <router-link :to="{name:'Cart'}" tag="li"> 
    <div> 
     <i class="icon iconfont icon-gouwucheman"></i> 
    </div> 
    <div>购物车</div> 
   </router-link> 
   <router-link :to="{name:'Me',params:{user:'xu'}}" tag="li"> 
    <div> 
     <i class="icon iconfont icon-wo"></i> 
    </div> 
    <div>我</div> 
   </router-link> 
  </ul> 
 </div> 
</template> 
<script type="text/ecmascript-6"> 
 export default {} 
</script> 
<style lang="less" type="text/less"> 
 .tabs { 
  position: fixed; 
  bottom: 0; 
  left: 0; 
  background-color: #fff; 
  box-shadow: 0 2px 4px #000; 
  width: 100%; 
  & > ul, & > ul > li { 
   margin: 0; 
   padding: 0; 
  } 
  ul { 
   display: table; 
   width: 100%; 
   & > li { 
    text-align: center; 
    font-size: 16px; 
    display: table-cell; 
    padding: 8px 12px; 
    cursor: pointer; 
    &.router-link-active{ 
     color: #D0021B; 
    } 
    & > div { 
     font-size: 14px; 
     & > i { 
      font-size: 30px; 
     } 
    } 
   } 
  } 
 } 
</style>

我使用的是命名路由,这样我们就可以当路由组件变化时,直接修改router/index.js文件即可。

3、创建路由

router/index.js

import Vue from 'vue' 
import Router from 'vue-router' 
import Home from '@/Home' 
import Brand from '@/Brand' 
import Member from '@/Member' 
import Cart from '@/Cart' 
import Me from '@/Me' 
Vue.use(Router) 
export default new Router({ 
 //mode: 'history', 
 //base: __dirname, 
 //linkActiveClass: 'active', // 更改激活状态的Class值 
 routes: [ 
  { 
   path: '/', 
   name: 'Home', 
   component: Home 
  }, 
  { 
   path: '/brand', 
   name: 'Brand', 
   component: Brand 
  }, 
  { 
   path: '/member', 
   name: 'Member', 
   component: Member 
  }, 
  { 
   path: '/cart', 
   name: 'Cart', 
   component: Cart 
  }, 
  { 
   path: '/me', 
   name: 'Me', 
   component: Me 
  } 
 ] 
})

4、App.vue引入组件Tabs.vue,并添加<router-view>渲染路径匹配到的视图组件

<template> 
 <div id="app"> 
  <Tabs></Tabs> 
  <div class="content"> 
   <router-view></router-view> 
  </div> 
 </div> 
</template> 
<script> 
 import Tabs from "./Tabs.vue" 
 export default { 
  name: 'app', 
  data(){ 
   return {} 
  }, 
  components: {Tabs} 
 } 
</script> 
<style> 
 *{ 
  padding:0; 
  margin:0; 
 } 
 #app { 
  font-family: 'Avenir', Helvetica, Arial, sans-serif; 
  -webkit-font-smoothing: antialiased; 
  -moz-osx-font-smoothing: grayscale; 
 } 
</style>

5、导航状态样式

<router-link>对应的路由匹配成功后,就会自动设置class属性值为router-link-exact-active router-link-active

router-link-exact-active:配置当链接被精确匹配的时候应该激活的CSS类名。

router-link-active:设置链接激活时使用的 CSS 类名。

如果要修改CSS样式命名,可通过<router-link>属性exact-active-class和active-class分别设置,也可通过路由构造函数选项linkExactActiveClass和linkActiveClass来设置

vue router仿天猫底部导航栏功能

点击品牌时展示如下:Home的Tab仍然设置了routet-link-activeCSS类名,如果设置routet-link-active样式颜色为红色,精选就会一直保持红色

此时需要使用”精确匹配模式“,<router-link :to="{name:'Home'}" tag="li" exact> 则使用exact,此时的Home的Tab就不会被设置routet-link-activeCSS类名了

访问 http://localhost:8080/#/brand 就不会匹配到http://localhost:8080/#/

vue router仿天猫底部导航栏功能

总结

以上所述是小编给大家介绍的vue router仿天猫底部导航栏功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
变量声明时命名与变量作为对象属性时命名的区别解析
Dec 06 Javascript
巧用jquery解决下拉菜单被Div遮挡的相关问题
Feb 13 Javascript
jQuery实现图片与文字描述左右滑动自动切换的方法
Jul 27 Javascript
非常棒的jQuery图片轮播效果
Apr 17 Javascript
js点击任意区域弹出层消失实现代码
Dec 27 Javascript
详解vuex 中的 state 在组件中如何监听
May 23 Javascript
详解vue-cli本地环境API代理设置和解决跨域
Sep 05 Javascript
浅谈React深度编程之受控组件与非受控组件
Dec 26 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
Mar 28 jQuery
解决vue keep-alive 数据更新的问题
Sep 21 Javascript
js实现课堂随机点名系统
Nov 21 Javascript
JS将指定的某个字符全部转换为其他字符实例代码
Oct 13 Javascript
Node做中转服务器转发接口
Oct 18 #Javascript
Vue组件之Tooltip的示例代码
Oct 18 #Javascript
JS正则表达式完美实现身份证校验功能
Oct 18 #Javascript
详解vue项目首页加载速度优化
Oct 18 #Javascript
JS简单实现滑动加载数据的方法示例
Oct 18 #Javascript
详解cordova打包成webapp的方法
Oct 18 #Javascript
prototype.js简单实现ajax功能示例
Oct 18 #Javascript
You might like
php对数组排序的简单实例
2013/12/25 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
2015/10/10 PHP
基于thinkPHP框架实现留言板的方法
2016/10/17 PHP
PHP实现根据数组某个键值大小进行排序的方法
2018/03/13 PHP
wordpress自定义标签云与随机获取标签的方法详解
2019/03/22 PHP
jQuery 表单验证扩展代码(二)
2010/10/20 Javascript
基于jquery的一个拖拽到指定区域内的效果
2011/09/21 Javascript
理解javascript中的严格模式
2016/02/01 Javascript
JQuery在循环中绑定事件的问题详解
2016/06/02 Javascript
jQuery根据name属性进行查找的用法分析
2016/06/23 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
Highcharts学习之坐标轴
2016/08/02 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
2016/10/10 Javascript
JavaScript 栈的详解及实例代码
2017/01/22 Javascript
angularjs中回车键触发某一事件的方法
2017/04/24 Javascript
JS将网址url转化为JSON格式的方法
2018/07/02 Javascript
vue安装和使用scss及sass与scss的区别详解
2018/10/15 Javascript
教你如何用Node实现API的转发(某音乐)
2019/09/20 Javascript
jquery实现上传文件进度条
2020/03/26 jQuery
浅谈javascript事件环微任务和宏任务队列原理
2020/09/12 Javascript
vue-drawer-layout实现手势滑出菜单栏
2020/11/19 Vue.js
python实现web方式logview的方法
2015/08/10 Python
python实现的AES双向对称加密解密与用法分析
2017/05/02 Python
python3.4下django集成使用xadmin后台的方法
2017/08/15 Python
详解Python传入参数的几种方法
2019/05/16 Python
python3+django2开发一个简单的人员管理系统过程详解
2019/07/23 Python
python 并发编程 非阻塞IO模型原理解析
2019/08/20 Python
pandas使用之宽表变窄表的实现
2020/04/12 Python
欧舒丹美国官网:L’Occitane美国
2018/02/23 全球购物
如何撰写岗位职责
2014/02/01 职场文书
个人剖析材料范文
2014/09/30 职场文书
跑出一片天观后感
2015/06/08 职场文书
新兵入伍决心书
2015/09/22 职场文书
CocosCreator入门教程之网络通信
2021/04/16 Javascript
用Python仅20行代码编写一个简单的端口扫描器
2022/04/08 Python
在容器中使用nginx搭建上传下载服务器
2022/05/11 Servers