移动端的惯性滑动&回弹Vue导航栏如何实现?一般企业网站的导航栏都写些什么

本文目录
移动端的惯性滑动&回弹Vue导航栏如何实现
这次给大家带来移动端的惯性滑动&回弹Vue导航栏如何实现,实现移动端的惯性滑动&回弹Vue导航栏的注意事项有哪些,下面就是实战案例,一起来看一下。
前段时间写了一个移动端的自适应滑动Vue导航栏组件,觉得有一定实用性,大家可能会用得到(当然有些大佬自己写得更好的话就没必要啦),于是前两天整理了一下,目前已经发布到npm和GitHub上了,点我到npm,点我到GitHub项目 ,有需要的同学可以在项目中 npm install ly-tab -S 或者 yarn add ly-tab 使用,具体用法下面会讲到。
好了,先看看效果吧
好的,开始废话了,实习差不多3个月了,这段时间跟着导师大佬也有接触过一些项目,也学到了不少东西,接触到的项目基本都是移动端项目,而且框架主要用的是Vue。做过移动端或者用过移动端APP(呸,屁话)的同学肯定会发现很多时候都会有类似上面这种有滑动效果的tab导航栏,相信大家肯定在掘金的首页就看到过。
实现思路
当时的项目中恰好也有这种需求,于是我想偷个懒直接使用 Mint-ui 组件库里现成的tabbar和tab-item组件,github上看了下它的实现源码发现只实现了切换功能但不能滑动,so,懒偷不了就只好自己写咯。
其实单单实现tab切换功能是不难的,看mint-ui使用的其实是v-model语法糖,就像下面这样
《ly-tab v-model="selected"》
《ly-tab-item》《/ly-tab-item》
《/ly-tab》下面是拆解v-model语法糖的实现
《ly-tab :value="selected" @input="selected = arguments"》
《ly-tab-item》《/ly-tab-item》
《/ly-tab》然后只需要在tab-item组件内实现当自己被点击时,让其父组件也就是ly-tab组件 $emit 一个 input 事件,并传入一个标识每个tab-item的唯一值作为第一个参数,关于这个唯一值,mint-ui的做法需要用户自己手动给每个tab-item通过props传入一个唯一的id值,如下为Mint UI的Demo实现:
《mt-tabbar v-model="selected"》
《mt-tab-item id="订单"》
***隐藏网址***
《span slot="label"》订单《/span》
《/mt-tab-item》
《/mt-tabbar》但是,在看过大佬的 vue当中设计Tabbar插件时的思考 后觉得文章中的那种做法会更好一点,因为对于父组件 《ly-tab/》 来说,只要知道点击的是哪个 《ly-tab-item/》 就行了啊,那么我把每个 《ly-tab-item/》 组件的 index 索引值作为它的唯一标识值不就行了吗。
那么问题来了:怎么在tab-item组件内部取到自己的 index 值呢?
首先ly-tab组件的 $children 是一个数组,由于每个 《ly-tab-item/》 组件是依次创建并通过push的方式插入该数组,所以在每个 《ly-tab-item/》 组件创建并push到 $children 时,对于 《ly-tab-item/》 组件来说 (this.$parent.$children.length || 1) - 1 不就是每个 《ly-tab-item/》 组件唯一的 index 值了啊。实际上,到这里点击切换的功能就已经可以实现了。下面贴上tab-item.vue中的代码:
tab-item.vue
《template》
《a class="ly-tab-item"
:style="$parent.value === id ? activeStyle : {}"
@click="$parent.$emit(’input’, id)"》
《p class="ly-tab-item-icon"》《slot name="icon"》《/slot》《/p》
《p class="ly-tab-item-label"》《slot》《/slot》《/p》
《/a》
《/template》
《script》
export default {
name: ’LyTabItem’,
computed: {
activeStyle () {
return {
color: this.$parent.activeColor,
borderColor: this.$parent.activeColor,
borderWidth: this.$parent.lineWidth,
borderBottomStyle: ’solid’
}
}
},
data () {
return {
id: (this.$parent.$children.length || 1) - 1
}
}
}
《/script》
《style lang="scss"》
.ly-tab-item {
text-decoration: none;
text-align: center;
.ly-tab-item-icon {
margin: 0 auto 5px;
}
.ly-tab-item-label {
margin: 0 auto 10px;
line-height: 18px;
}
}
《/style》关于tab.vue中触摸滑动、惯性滑动以及回弹等效果实现在这里就没办法详细讲了,有兴趣的小伙伴可以到github上查看, 点我去github查看项目 ,如果想看示例demo可以clone项目到本地跑一跑,写得不好的地方欢迎大家指正,如果觉得用得着或者能够帮到大家的话最好了,那也不妨点个star吧,哈哈......
哎哎哎,不对不对,怎么就开始求star了,最重要的还没讲呢—— ly-tab怎么使用呢?
如何使用 ly-tab
小伙伴们如果想使用ly-tab,需要在你的项目中通过npm或者yarn下载安装:
npm install ly-tab -S
or
yarn add ly-tab接着在main.js中全局引入:
import Vue from ’vue’;
import LyTab from ’ly-tab’;
Vue.use(LyTab);之后你就可以在你项目中任意使用 《ly-tab》《/ly-tab》 和 《ly-tab-item》《/ly-tab-item》 组件而不需要再次引入了
栗子
《ly-tab v-model="selected" fixBottom》
《!-- selected是你自己定义的一个在data中用于存放当前tab-item的索引值的变量 --》
《ly-tab-item v-for="(item, index) in tabList" :key="index"》
{{item.itemName}}
《/ly-tab-item》
《/ly-tab》上面的栗子其实只是tabbar的实现,大家项目中肯定还需要做视图区的切换,在这里简单说一下我目前的做法:
使用Vue-router做router-view的切换
使用动态组件(可以配合异步组件使用)
我暂时的话好像只用过这两种,不知道大家还有其他什么更好的方法,欢迎分享~
配置项
可以给 《ly-tab》《/ly-tab》 组件传入一些配置项以自定义你想要的效果
配置项类型描述默认值lineWidthNumberfixBottom为false时tabbar底部border-width1pxactiveColorString激活状态下字体color以及border-bottom-colorredfixBottomBoolean是否固定在视图底部(为false时不可滑动)falseadditionalXNumber近似等于超出边界时最大可拖动距离50pxreBoundExponentNumber惯性回弹指数(值越大,幅度越大,惯性回弹距离越长)10sensitivityNumber惯性滑动时的灵敏度(值越小,阻力越大),可近似认为手松开后速度减为零所需时间1000msreBoundingDurationNumber回弹动画duration360ms相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!
推荐阅读
解决vue2.0路由不显示router-view的问题
vue.js怎么在标签属性中插入变量参数
一般企业网站的导航栏都写些什么
以下是我个人认为的,希望对你有帮助:
网站导航的五大元素。
一、网站的logo
网站的logo就相当于是品牌标志,具有唯一性,当我们浏览多个网页的时候,可以通过网页左上角的logo来判断浏览的是哪个网站。网站的logo一定要设计简洁大方,可以让人qingso
二、网站的栏目
为了方便游客的浏览,通常需要对网站的栏目进行二次分类,这就是二级导航。它是网站结构化之后的各个子版块,网站的版块不同,内容种类也会不同,精确的分类是十分重要的
三、返回首页
随着游客浏览的深度加深,返回首页就显得十分重要,可以让游客返回进入网站的初始页面,防止游客关闭网页停止浏览。
四、附加栏目
网站的一些附加栏目也很重要,虽然这些栏目不是网站的主要内容,但却是网站本身所不可或缺的页面,比如常见的有“帮助”“联系我们”“网站地图”等等。它们应该放在那里好呢?网页上部导航栏空间有限,主要用来呈现网站比较重要的内容,如果将太多的附加栏目放在导航栏则给人无主次之分,我们通常的处理方法:尽量安排放在网站顶部右侧位置,如果位置有限,可安排放在网页的最底下。
五、搜索功能
许多人习惯了百度搜索框,到任何一个网站找信息,头脑中首先想到去搜索,如果网站没有搜索功能,无疑给用户访问网站带来障碍。
HTML 二级导航菜单
代码如下:
***隐藏网址***
《head》
《title》《/title》
《style type="text/css"》
#menu
{
width: 600px;
font-family: Arial;
font-size: 15px;
}
#menu ul
{
display: block;
width: 100%;
margin: 0;
position: relative;
}
#menu ul li
{
list-style-type: none;
float: left;
height: 25px;
width: 120px;
line-height: 25px;
text-align: center;
background: #000;
color: #fff;
}
#menu ul li ul
{
display: list-item;
margin: 0;
position: relative;
right: 40px;
font-size: 12px;
display: none;
}
#menu ul li a
{
text-decoration: none;
color: #ffffff;
}
#menu ul li:hover
{
background: #686868;
color: #000;
cursor: pointer;
}
#menu ul li:hover ul
{
display: list-item;
}
#menu ul li:hover ul li:hover
{
background: 868686;
color: #ff5588;
cursor: pointer;
}
《/style》
《/head》
《body》
《div id="menu"》
《ul》
***隐藏网址***
《ul》
***隐藏网址***
***隐藏网址***
***隐藏网址***
***隐藏网址***
《/li》
《/ul》
《/li》
***隐藏网址***
《ul》
***隐藏网址***
***隐藏网址***
***隐藏网址***
***隐藏网址***
《/li》
《/ul》
《/li》
***隐藏网址***
《ul》
***隐藏网址***
***隐藏网址***
***隐藏网址***
***隐藏网址***
《/li》
《/ul》
《/li》
***隐藏网址***
《ul》
***隐藏网址***
***隐藏网址***
***隐藏网址***
***隐藏网址***
《/li》
《/ul》
《/li》
《/ul》
《/div》
《/body》
《/html》
复制上面代码,保存到后缀为.html或者.htm的文件中,用浏览器打开就可以看到效果。效果图如下:
怎么下载so导航
在软件之家下载。so导航在软件之家输入搜索点击下载即可。so导航是一款实用性极强的图书阅读类型的软件,平台为喜欢看漫画的广大用户们打造了一款专业优质丰富强大的动漫服务平台,里面有着众多资源丰富的漫画种类,对各种漫画做了详细的分类归纳。
word文档建立导航
word文档建立导航
1.为什么要建立导航
Word 2013对于导航窗格的说明:这如同是您的文档的浏览指南。SO,大家应该明白导航的作用了吧。对于一般性的文档而言导航的.作用并不明显,但对于内容繁多的文档,导航则显得尤为重要,因为它可以让你快速定位到所需要的内容。
2.建立导航的过程
我将以《超级实用人生整理攻略(思路+工具)》这篇文章作为示例给大家进行演示具体过程:
【导航窗格】工具
首先大家要学会使用这个工具【导航窗格】,勾选复选框之后会在左侧界面显示导航栏,它是长这样的:
【导航栏】
上图中的导航【0.目标系统】为一级标题;【1.时间系统】为二级标题,依次类推,具体实现方法有两种:
1.直接使用工具栏里边的这个工具:
该工具在【开始】菜单下
直接选中要设置的文字设为【标题1】或者其他的即可。
2.使用段落工具,选中要设置的文字,右键【段落】,在常规选项下设置【大纲级别】:
【大纲级别】
以上两种方法均可设置,将所有标题设置好后就会自动在导航栏显示该文档的导航。
注意事项:在段落里进行设置时要注意选中的文本必须为【正文】格式,如果文本是【标题】格式则无法设置大纲级别(不信你试试)。
;iOS navigationbar的高度可以修改吗
UINavigationBar高度苹官SDK固定44点实际项目我却能遇情况图:
UINavigationBar高度达84点需要我自定义系统自带UINavigationBar高度系统并没直截调整NavigationBarHeight于我进行尝试
需要进行调整ViewController类ViewWillApplear self.navigationController.navigationBarframe进行赋值其frame.size.height变我 需要新高度(本例84)ViewWillDisappearframe再改
注:代码写ViewWillAppear/DisAppear面原根据自定义高度UINavigationBar某 界面现所UINavigationBar高度统没必要写需要写第现ViewController ViewDidLoad消息面
代码:
1
2
3
4
5
6
7
8
9
10
11
- ( void ) viewWillAppear : ( BOOL ) animated {
;
CGRect rect = self . navigationController . navigationBar . frame ;
self . navigationController . navigationBar . frame = CGRectMake ( rect . origin . x , rect . origin . y , rect . size . width , 84 ) ;
}
- ( void ) viewWillDisappear : ( BOOL ) animated {
;
CGRect rect = self . navigationController . navigationBar . frame ;
self . navigationController . navigationBar . frame = CGRectMake ( rect . origin . x , rect . origin . y , rect . size . width , 44 ) ;
}
OK运行UINavigationBar高度确发变化事情愉快解决等等导航栏标题返按钮位置却都贴面图:
发我知道现明显需要我调整两UIViewframe向移40点要添加其控件留空间简单吧
数……
我靠些货特根本UIView嘛
返按钮UIBarButtonItem继承自UIBarItemUIBarItem继承自NSObject标题更悲剧 默认使用ViewControllertitle属性做标题(本例)self.navigationItem.titleView值 nil更改nilframe事情发
期间我试各种非手段找包括遍历UINavigationBarview hierarchy(视图层级)试图使用UIBarButtonItem私变量尝试修改UIBarButtonItem CustomView.frame等……都功返
始Google搜索StackOverflow片找SO神云集问题解答相高
答案基本2种:
1、用系统NavigationBar啦咱自定义啦重载layoutSubView面云云
2、简单我写NavigationBar类(Category)面加消息xxx
菜我看自定义控件神马立即给外爷跪Category更没用……其实我需要更改两控件高度已用用暴力
于我始查文档终于我找面两消息:
UINavigationBar:
- (void)setTitleVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics
官描述: Sets the title’s vertical position adjustment for given bar metrics. 调整某BarMetrics(知道翻译)标题垂直位置
UIBarButtonItem:
- (void)setBackgroundVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics
官描述: Sets the background vertical position offset for given bar metrics.This offset is used to adjust the vertical centering of bordered bar buttons within the bar. 调整某BarMetrics(知道翻译)背景垂直位置偏差值偏差值用调整该圆角按钮垂直Bar内位置
OhMyGod终于找组织赶紧试刚才ViewControllerViewWillAppear消息再加两句:
1
2
;
;
注:使用leftBarButtonItem我使用自定义图片返按钮leftBarButton替代backBarButton
要忘ViewWillDisappear候再标题位置调整标题跳屏幕;另面返按钮却用设置两行代码作用机制返按钮前ViewController关:
1
;
运行结:
太棒啦终于功标题返按钮垂直位置按照我设置向移40点
面事情简单按照设计湿GG或者设计师MM要求相应UI控件加self.navigationController.navigationBar收工
注:述运行结前提使用自定义图片leftBarButtonItem作返按钮替代系统默认 backBarButtonItem并且leftBarButtonItem使用 initWithImage:(UIImage *)image style:(UIBarButtonItemStyle)style target:(id)target action:(SEL)action创建(原我面讲)换句说ViewController或者父类 ViewDidLoad应该类似面两行代码:
1
2
UIBarButtonItem * item = ;
self . navigationItem . leftBarButtonItem = item ;
需求刚能用解决恭喜菜能拿干货面全困惑……orz
做iOS Level1菜鸟费劲终于找问题解决欣喜肯定想瑟必于飘飘乎想相关研究研究搞通用解决案于噩梦始……
N毛解决案没搞却搞问题……
问题1:系统默认导航栏返按钮垂直位置调节
返按钮使用系统默认backBarButtonItem候使用UIBarButtonItem- (void)setBackButtonBackgroundVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics调整垂直位置起作用
我进行各种尝试backBarButtonItem直nil文档说根据ViewControllertitle属 性创建按钮我找机调整执行面消息更准确问题能图消息底应该用才能看效呢
问题2:自定义返按钮导航栏垂直位置仅某种情况调节
我发现即使用系统默认返按钮使用自定义leftBarButtonItem使用 initWithImage:style target:action:创建UIBarButtonItem效使用其init情况律效至于原明觉厉

更多文章:
mac开不了机 按什么都没用的原因(为什么mac电脑开不了机且开机键没反应 mac电脑无法开机主要由三方面造成)
2024年11月18日 05:10
三星大屏折叠平板(华为Mate X对比三星Galaxy Fold两个折叠屏哪个更香)
2025年11月25日 07:30
苹果怎么备份到另一台手机(苹果手机怎么同步到另一个苹果手机)
2024年11月1日 17:30
公牛各种开关价格与图片(公牛插座开关怎么接线公牛开关插座价格表)
2025年4月12日 14:20
为什么不建议买thinkbook14(thinkbook14好用吗)
2025年4月9日 05:32
笔记本电脑开机一直重启(笔记本电脑一直重启无法开机是什么原因)
2025年12月1日 13:30
oppok5停产时间(OPPO K5的上市停产时间是哪一天)
2025年3月8日 07:30













