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 相关文章推荐
3款实用的在线JS代码工具(国外)
Mar 15 Javascript
js函数参数设置默认值的一种变通实现方法
May 26 Javascript
js与css实现弹出层覆盖整个页面的方法
Dec 13 Javascript
jQuery删除一个元素后淡出效果展示删除过程的方法
Mar 18 Javascript
详解给Vue2路由导航钩子和axios拦截器做个封装
Apr 10 Javascript
JS实现的汉字与Unicode码相互转化功能分析
May 25 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
Aug 17 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
Sep 28 Javascript
使用vue实现一个电子签名组件的示例代码
Jan 06 Javascript
通过js随机函数Math.random实现乱序
May 19 Javascript
vue 单页应用和多页应用的优劣
Oct 22 Javascript
vue iview 隐藏Table组件里的某一列操作
Nov 13 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
Ajax+PHP 边学边练 之二 实例
2009/11/24 PHP
PHP中usort在值相同时改变原始位置问题的解决方法
2011/11/27 PHP
PHP中如何调用webservice的实例参考
2013/04/25 PHP
php读取大文件示例分享(文件操作类)
2014/04/13 PHP
JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具
2010/12/10 Javascript
window.open的页面如何刷新(父页面)上层页面
2012/12/28 Javascript
javaScript 动态访问JSon元素示例代码
2013/08/30 Javascript
javascript页面上使用动态时间具体实现
2014/03/18 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
js钢琴按钮波浪式图片排列效果代码分享
2015/08/26 Javascript
jquery实现可关闭的倒计时广告特效代码
2015/09/02 Javascript
jQuery siblings()用法实例详解
2016/04/26 Javascript
对js eval()函数的一些见解
2016/08/15 Javascript
微信小程序 弹窗自定义实例代码
2017/03/08 Javascript
angularjs指令之绑定策略(@、=、&amp;)
2017/04/13 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
react-router browserHistory刷新页面404问题解决方法
2017/12/29 Javascript
vue 实现的树形菜的实例代码
2018/03/19 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
JS多个表单数据提交下的serialize()应用实例分析
2019/08/27 Javascript
vue图片加载失败时用默认图片替换的方法
2019/08/29 Javascript
JSON stringify方法原理及实例解析
2020/10/23 Javascript
使用js原生实现年份轮播选择效果实例
2021/01/12 Javascript
python顺序的读取文件夹下名称有序的文件方法
2018/07/11 Python
学习python可以干什么
2019/02/26 Python
Python 实现自动导入缺失的库
2019/10/29 Python
Django集成celery发送异步邮件实例
2019/12/17 Python
基于python求两个列表的并集.交集.差集
2020/02/10 Python
python中return如何写
2020/06/18 Python
使用canvas绘制超炫时钟
2014/12/17 HTML / CSS
班级学习雷锋活动总结
2014/07/04 职场文书
2014年学习委员工作总结
2014/11/14 职场文书
2019大学竞选班长发言稿
2019/06/27 职场文书
Go Plugins插件的实现方式
2021/08/07 Golang
MySQL悲观锁与乐观锁的实现方案
2021/11/02 MySQL