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 相关文章推荐
33种Javascript 表格排序控件收集
Dec 03 Javascript
jquery ui resizable bug解决方法
Oct 26 Javascript
javascript 45种缓动效果 非常酷
Jun 28 Javascript
基于json的jquery地区联动效果代码
Jul 06 Javascript
jQuery计算textarea中文字数(剩余个数)的小程序
Nov 28 Javascript
JavaScript实现在标题栏上显示当前日期的方法
Mar 19 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
Jun 21 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
Jul 14 Javascript
axios基本入门用法教程
Mar 25 Javascript
实现div内部滚动条滚动到底部和顶部的代码
Nov 15 Javascript
vue.js 获取select中的value实例
Mar 01 Javascript
layui实现左侧菜单点击右侧内容区显示
Jul 26 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
中国广播史趣谈 — 几个历史第一次
2021/03/01 无线电
人大复印资料处理程序_查询篇
2006/10/09 PHP
PHP脚本的10个技巧(8)
2006/10/09 PHP
我的论坛源代码(一)
2006/10/09 PHP
php 删除数组元素
2009/01/16 PHP
允许phpmyadmin空密码登录的配置方法
2011/05/29 PHP
php ci框架验证码实例分析
2013/06/26 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
PHP实现页面静态化的超简单方法
2016/09/06 PHP
php微信公众号开发之微信企业付款给个人
2018/10/04 PHP
PHP使用SOAP调用API操作示例
2018/12/25 PHP
基于jQuery实现的当离开页面时出现提示的实现代码
2011/06/27 Javascript
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
nodejs简单实现操作arduino
2016/09/25 NodeJs
微信公众号 摇一摇周边功能开发
2016/12/08 Javascript
从零学习node.js之mysql数据库的操作(五)
2017/02/24 Javascript
js判断PC端与移动端跳转
2020/12/24 Javascript
详解Angular2学习笔记之Html属性绑定
2018/01/03 Javascript
Element Carousel 走马灯的具体实现
2020/07/26 Javascript
微信小游戏中three.js离屏画布的示例代码
2020/10/12 Javascript
[02:11]完美世界DOTA2联赛10月28日赛事精彩集锦:来吧展示实力强劲
2020/10/29 DOTA
浅谈python中截取字符函数strip,lstrip,rstrip
2015/07/17 Python
Python3 使用pillow库生成随机验证码
2019/08/26 Python
Python绘图实现显示中文
2019/12/04 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
2020/10/22 Python
详解px单位html5响应式方案
2018/03/08 HTML / CSS
美国一家全面的在线零售鞋类公司:SHOEBACCA
2017/01/06 全球购物
STP协议的主要用途是什么?为什么要用STP
2012/12/20 面试题
公司聘任书模板
2014/03/29 职场文书
乡镇领导班子四风对照检查材料
2014/09/27 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话
2014/10/21 职场文书
小学数学教学反思范文
2016/02/16 职场文书
MySQL系列之四 SQL语法
2021/07/02 MySQL
PyCharm 配置SSH和SFTP连接远程服务器
2022/05/11 Python