vue实现nav导航栏的方法


Posted in Javascript onDecember 13, 2017

每一个网页项目都少不了导航栏,通过原始的方法基本上都是可以写出来的。但是要写出代码量少,冗余度低的代码就要动脑子思考一下了。

最近写了一个百度地图的项目,要求底部有一个导航栏。具体如下图:

vue实现nav导航栏的方法

首先,拿到了底部导航栏的所有图标图片,图片都有两种。灰色的代表未选中,选中的用带样色的图片替换。

先看一下,组件中 html结构:通过vue提供的v-for方法,进行遍历显示footNav这个数组。数组里边存放着{title:"银行",url:" ",url1:" "},将图片的 src与isSelect进行绑定,并进行判断,如果等于当前的title时即为选中当前的导航,显示选中时的图片url1。

<div class="footer">
 <ul>
 <li v-for="item in footNav" @click="selectMapNav(item.title)">
 <img :src="isSelect === item.title ? item.url1 : item.url" alt="">
 <p>{{item.title}}</p>
 </li>
 </ul>
</div>

样式用的是扩展语言less写的,应该都能看懂,只是简单的嵌套了一下。给这个地步加一个宽为100%,固定的高度。因为要固定在底部显示,所以加了一个固定定位和背景颜色。写的是手机端项目,浏览器都比较新,所以不用考虑兼容问题。大胆的flex布局可以很方便的实现导航栏。

.footer ul{
 width:100%;
 height:50px;
 position:fixed;
 bottom:0;
 z-index:1;
 background-color:#fff;
 display:flex;
 li{
 text-align:center;
 flex:1;
 img{height:23px;width:23px;margin-top:5px;}
 p{font-size:0.1rem;height:15px;line-height:10px;}
 }
}

在vue data () 中定义一个数组,里边存放每一个导航的标题,如‘银行',未选中时显示的图片url,选中时的图片url1。isSelect表示当前选中的,默认选中银行。

isSelect: '银行',
footNav: [{title: '银行', url: '../../../static/baiduMap/23@2x.png', url1: '../../../static/baiduMap/22@2x.png'},
 {title: '公交 ', url: '../../../static/baiduMap/11@2x.png', url1: '../../../static/baiduMap/10@2x.png'},
 {title: '地铁 ', url: '../../../static/baiduMap/13@2x.png', url1: '../../../static/baiduMap/12@2x.png'},
 {title: '教育 ', url: '../../../static/baiduMap/15@2x.png', url1: '../../../static/baiduMap/14@2x.png'},
 {title: '医院 ', url: '../../../static/baiduMap/17@2x.png', url1: '../../../static/baiduMap/16@2x.png'},
 {title: '休闲 ', url: '../../../static/baiduMap/19@2x.png', url1: '../../../static/baiduMap/18@2x.png'},
 {title: '购物 ', url: '../../../static/baiduMap/21@2x.png', url1: '../../../static/baiduMap/20@2x.png'}
]

在methods方法中,写上html中调用的事件。通过html结构层那里的点击事件selectMapNav(item.title)传过来的title赋值给isSelect即可实现导航栏的点击状态的变化。

selectMapNav (title) {
 this.isSelect = title }

来看一下最终的结果,很完美。

vue实现nav导航栏的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 一段左右两边随屏滚动的代码
Jun 18 Javascript
jQuery.extend 函数的详细用法
Jun 27 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
Nov 28 Javascript
使用AngularJS创建单页应用的编程指引
Jun 19 Javascript
Angularjs过滤器使用详解
May 25 Javascript
js 判断一组日期是否是连续的简单实例
Jul 11 Javascript
react-native DatePicker日期选择组件的实现代码
Sep 12 Javascript
实现div滚动条默认最底部以及默认最右边的示例代码
Nov 15 Javascript
如何用webpack4带你实现一个vue的打包的项目
Jun 20 Javascript
详解Vue中使用插槽(slot)、聚类插槽
Apr 12 Javascript
Node.js 实现抢票小工具 &amp; 短信通知提醒功能
Oct 22 Javascript
Element Carousel 走马灯的具体实现
Jul 26 Javascript
vue实现导航栏效果(选中状态刷新不消失)
Dec 13 #Javascript
仿京东快报向上滚动的实例
Dec 13 #Javascript
Angular2使用vscode断点调试ts文件的方法
Dec 13 #Javascript
vue-router路由懒加载和权限控制详解
Dec 13 #Javascript
JS+canvas画一个圆锥实例代码
Dec 13 #Javascript
JS排序算法之冒泡排序,选择排序与插入排序实例分析
Dec 13 #Javascript
实例分析js事件循环机制
Dec 13 #Javascript
You might like
PHP中魔术变量__METHOD__与__FUNCTION__的区别
2014/09/29 PHP
PHP实现绘制3D扇形统计图及图片缩放实例
2014/10/01 PHP
php中常见的sql攻击正则表达式汇总
2014/11/06 PHP
jQuery学习笔记之Helloworld
2010/12/22 Javascript
javascript动画对象支持加速、减速、缓入、缓出的实现代码
2012/09/30 Javascript
jquery预览图片实现鼠标放上去显示实际大小
2014/01/16 Javascript
JavaScript中的console.group()函数详细介绍
2014/12/29 Javascript
Winform客户端向web地址传参接收参数的方法
2016/05/17 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
2016/05/31 Javascript
jQuery的ready方法实现原理分析
2016/10/26 Javascript
JS+HTML5实现图片在线预览功能
2017/07/22 Javascript
深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
2017/07/26 Javascript
vue中的自定义分页插件组件的示例
2018/08/18 Javascript
获取layer.open弹出层的返回值方法
2018/08/20 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
ios中视频的最后一桢问题解决
2019/05/14 Javascript
详解vue中使用transition和animation的实例代码
2020/12/12 Vue.js
[01:28:24]NAVI vs VG Supermajor 败者组 BO3 第三场 6.5
2018/06/06 DOTA
[01:01:42]Secret vs Optic Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
PyQt5 closeEvent关闭事件退出提示框原理解析
2020/01/08 Python
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
Python Pandas list列表数据列拆分成多行的方法实现
2020/12/14 Python
css3隔行变换色实现示例
2014/02/19 HTML / CSS
应用心理学个人求职信范文
2013/12/11 职场文书
创业计划书的内容步骤和要领
2014/01/04 职场文书
留学经费担保书
2014/05/12 职场文书
革命英雄事迹演讲稿
2014/09/13 职场文书
医院保洁员岗位职责
2015/02/13 职场文书
革命电影观后感
2015/06/18 职场文书
2015年入党积极分子培养考察意见
2015/08/12 职场文书
五年级语文教学反思
2016/03/03 职场文书
2019年聘任书的写作格式及范文!
2019/07/03 职场文书
Vue中Object.assign清空数据报错的解决方案
2022/03/03 Vue.js
MySQL RC事务隔离的实现
2022/03/31 MySQL
排查MySQL生产环境索引没有效果
2022/04/11 MySQL