Vue如何实现一个返回顶部backToTop组件

  介绍

这篇文章主要介绍了Vue如何实现一个返回顶部backToTop组件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

Vue的优点

Vue具体轻量级框架,简单易学,双向数据绑定,组件化,数据和结构的分离,虚拟DOM,运行速度快等优势,Vue中页面使用的是局部刷新,不用每次跳转页面都要请求所有数据和DOM,可以大大提升访问速度和用户体验。

<强>前言

返回顶部这个功能用金桥实现,好容易实现,一个动画配合scrollTo就搞定了

今天我们来试试Vue封装一个原生js实现的返回顶部;
写起来够呛,借助github,看了别人的要点,稍微封装了下,

当然不是用scrollTo直接调位那种,没有过渡效果怎么说得过去! !还是捣鼓出来了。

废话不多说,看效果图…

<>强效果图

 Vue如何实现一个返回顶部backToTop组件

<强>实现思路

<李>

过渡用的是requestAnimationFrame,这货只支持IE10 +,所以必须做兼容

<李>

滚动视图是window.pageYOffset,这货支持IE9 +;

<李>

为了让可控性更强,图标采用iconfont,具体瞅代码

<强>你能学到什么?

<李>

学到一些页面计算相关的东东

<李>

动画API的一些知识

<李>

Vue封装组件相关知识和生命周期和事件监听销毁相关知识的运用

<强>实现功能

<李>

视图默认在350处显示返回顶部的按钮和图标

<李>

提示文字和颜色,在图标上下左右的自定义,字段都限制了格式和默认值

<李>

图标颜色和形状,大小的自定义,字段都限制了格式和默认值

<李>

过渡动效的自定义,用法:scrollIt (0 1500 & # 39; easeInOutCubic& # 39;,回调),

<李>

返回到视图的点,也就是滚动到哪里

<李>

过渡时间(ms级别)

<李>

一堆过渡效果,字符串格式,其实就是滚动的计算函数. .

<李>

当然少不了默认参数了,除了回调

<李>

兼容性是IE9 +特意开了虚拟机去尝试

代码

scrollIt。js -过渡滚动实现

export  function  scrollIt (=,destination  0,   200年,duration =,,=,easing “linear",   ,回调   ),{   ,//define  timing  functions ,,过渡动效   ,let  easings =, {//才能,no 宽松,no 加速度   线性才能(t), {   ,,return  t;   ,,},//才能,accelerating 得到zero 速度   easeInQuad才能(t), {   ,,return  t  *, t;   ,,},//才能,decelerating 用zero 速度   easeOutQuad才能(t), {   ,,return  t  *,(2,安康;t);   ,,},//才能,acceleration  until 一半,then 减速   easeInOutQuad才能(t), {   ,,return  t  & lt;, 0.5, ?, 2, *, t  *, t :, 1, +,(4,安康;2,*,t), *, t;   ,,},//才能,accelerating 得到zero 速度   easeInCubic才能(t), {   ,,return  t  *, t  *, t;   ,,},//才能,decelerating 用zero 速度   easeOutCubic才能(t), {   ,,return ——t  *, t  *, t  +, 1;   ,,},//才能,acceleration  until 一半,then 减速   easeInOutCubic才能(t), {   ,,return  t  & lt;, 0.5, ?, 4, *, t  *, t  *, t :, (t 安康;1),*,(2,*,t 作用;2),*,(2,*,t 作用;2),+,1;   ,,},//才能,accelerating 得到zero 速度   easeInQuart才能(t), {   ,,return  t  *, t  *, t  *, t;   ,,},//才能,decelerating 用zero 速度   easeOutQuart才能(t), {   ,,return  1,安康;——t  *, t  *, t  *, t;   ,,},//才能,acceleration  until 一半,then 减速   easeInOutQuart才能(t), {   ,,return  t  & lt;, 0.5, ?, 8, *, t  *, t  *, t  *, t :, 1,安康;8,*,——t  *, t  *, t  *, t;   ,,},//才能,accelerating 得到zero 速度   easeInQuint才能(t), {   ,,return  t  *, t  *, t  *, t  *, t;   ,,},//才能,decelerating 用zero 速度   easeOutQuint才能(t), {   ,,return  1, +, - t  *, t  *, t  *, t  *, t;   ,,},//才能,acceleration  until 一半,then 减速   easeInOutQuint才能(t), {   ,,return  t  & lt;, 0.5, ?, 16, *, t  *, t  *, t  *, t  *, t :, 1, +, 16, *,——t  *, t  *, t  *, t  *, t;   ,,}   ,};   ,//requestAnimationFrame()的兼容性封装:先判断是否原生支持各种带前缀的   ,//不行的话就采用延时的方案   ,(函数(),{   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Vue如何实现一个返回顶部backToTop组件