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 相关文章推荐
摘自百度的图片轮换效果代码
Nov 19 Javascript
Javascript 圆角div的实现代码
Oct 15 Javascript
用jquery设置按钮的disabled属性的实现代码
Nov 28 Javascript
Extjs实现进度条的两种便捷方式
Sep 26 Javascript
EasyUI实现二级页面的内容勾选的方法
Mar 01 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
Jun 06 Javascript
AngularJS基于provider实现全局变量的读取和赋值方法
Jun 28 Javascript
微信jssdk逻辑在vue中的运用详解
Nov 14 Javascript
详解@angular/cli 改变默认启动端口两种方式
Nov 29 Javascript
js prototype深入理解及应用实例分析
Nov 25 Javascript
node事件循环和process模块实例分析
Feb 14 Javascript
详细分析vue响应式原理
Jun 22 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
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
2019/10/24 PHP
js原生appendChild的bug解决心得分享
2013/07/01 Javascript
让页面上两个div中的滚动条(滑块)同步运动示例
2013/08/07 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
2013/11/21 Javascript
最简单的JavaScript验证整数、小数、实数、有效位小数正则表达式
2015/04/17 Javascript
JavaScript中使用自然对数ln的方法
2015/06/14 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
bootstrap输入框组件使用方法详解
2017/01/19 Javascript
JS实现在文本指定位置插入内容的简单示例
2017/12/22 Javascript
微信jssdk逻辑在vue中的运用详解
2018/11/14 Javascript
使用webpack构建应用的方法步骤
2019/03/04 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
2020/07/27 Javascript
前端性能优化建议
2020/09/17 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
python 调用win32pai 操作cmd的方法
2017/05/28 Python
Python代码块批量添加Tab缩进的方法
2018/06/25 Python
python计算无向图节点度的实例代码
2019/11/22 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
2020/03/30 Python
Python过滤掉numpy.array中非nan数据实例
2020/06/08 Python
医学专业个人求职自荐信格式
2013/09/23 职场文书
《画》教学反思
2014/04/14 职场文书
五年级学生评语
2014/04/22 职场文书
文明市民先进事迹
2014/05/15 职场文书
广告学专业求职信
2014/06/19 职场文书
治安消防安全责任书
2014/07/23 职场文书
爱祖国爱家乡演讲稿
2014/09/02 职场文书
综治工作心得体会
2014/09/11 职场文书
离婚协议书怎么写的
2014/12/14 职场文书
党员转正介绍人意见
2015/06/03 职场文书
婚宴新郎致辞
2015/07/28 职场文书
2016年“抗战胜利纪念日”71周年校园广播稿
2015/12/18 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书
MySQL 8.0 之不可见列的基本操作
2021/05/20 MySQL
Python中time与datetime模块使用方法详解
2022/03/31 Python