vue 通过自定义指令实现 置顶操作;
项目需求:要求当前项目每个页面滑到超出一屏的距离时,出现 backTop 按钮,点击则回到最顶端;俗称置顶操作:
因为涉及到的页面较多,每个页面都加肯定显得重复累赘,最终想到了 Vue 的自定义指令 Vue.directive;
场景分析:①.监听页面滚动过程,计算当前的 scrollY 与 设定的 number 值进行对比,从而决定 backTop 按钮的出现隐藏;
②.出现 backTop 按钮时,点击按钮,实现置顶效果(为实现更完美的置顶效果,加了定时器,保证了一定速度的滑行);
实现过程:为保证作用于全局,我们在 main.js,App.vue 中进行代码的编写:
main.js
// 自定义指令实现back-top;
Vue.directive('scroll-show',{
inserted(el,binding){
let scope = binding.arg || '200';
window.addEventListener('scroll',function(e){
if(this.scrollY > Number(scope)){
binding.value.value = true;
}else{
binding.value.value = false;
}
})
}
})
Vue.directive('back-top',{
inserted(el,binding){
let e = binding.arg || 'click';
el.addEventListener(e,function(){
let scrollToptimer = setInterval(function(){
let top = document.documentElement.scrollTop + document.body.scrollTop;
let speed = top/4;
top -= speed;
document.documentElement.scrollTop = document.body.scrollTop = top;
if(top == 0){
clearInterval(scrollToptimer);
}
},30)
})
}
})
backTop.vue
<template>
<div class="back-top" v-show='isShow.value'>
<span></span>
</div>
</template>
<script>
export default {
props: ['isShow']
}
</script>
<style scoped>
.back-top{
display: flex;
align-items:center;
}
.back-top > span:nth-child(1) {
display: inline-block;
width: 4rem;
height: 4rem;
background-image: url(./images/backTop.png);
background-repeat: no-repeat;
background-size: contain;
}
.back-top > span:nth-child(2) {
color: #333;
padding-left:0.5rem;
}
.back-top {
position: fixed;
right: 1.5rem;
bottom: 12rem;
}
</style>
App.vue

按照上述代码编写便可以实现全局页面置顶操作;便于后期维护,修改;
vue 通过自定义指令实现 置顶操作;的更多相关文章
- vue中自定义指令
//vue中自定义指令 //使用 Vue.directive(id, [definition]) 定义全局的指令 //参数1:指令的名称.注意,在定义的时候,指令的名称前面,不需要加 v-前缀; 但是 ...
- Vue.directive 自定义指令
一.什么是全局API? 全局API并不在构造器里,而是先声明全局变量或者直接在Vue上定义一些新功能,Vue内置了一些全局API,比如我们今天要学习的指令Vue.directive.说的简单些就是,在 ...
- Vue2.0 【第二季】第1节 Vue.directive自定义指令
目录 Vue2.0 [第二季]第1节 Vue.directive自定义指令 一.什么是全局API? 二. Vue.directive自定义指令 三.自定义指令中传递的三个参数 四.自定义指令的生命周期 ...
- Vue 3自定义指令开发
本文由葡萄城技术团队原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 什么是指令(directive) 在Angular和Vue中都有Direct ...
- Vue.js自定义指令的用法与实例
市面上大多数关于Vue.js自定义指令的文章都在讲语法,很少讲实际的应用场景和用例,以致于即便明白了怎么写,也不知道怎么用.本文不讲语法,就讲自定义指令的用法. 自定义指令是用来操作DOM的.尽管Vu ...
- vue怎么自定义指令??
最近看看vue中自定义指令,感觉vue的指令和angular1的指令相差较大 <script> //指令钩子函数: /* bind 只调用一次,指令第一次绑定到元素的时调用 inserte ...
- 最简单的方式理解Vue的自定义指令与混合
vue.js 自定义指令 钩子函数:bindinsertedupdatecomponentUpdatedunbind 钩子函数完整实例:html: <div id="hook-argu ...
- Vue directive自定义指令+canvas实现H5图片压缩上传-Base64格式
前言 最近优化项目-手机拍照图片太大,回显速度比较慢,使用了vue的自定义指令实现H5压缩上传base64格式的图片 canvas自定义指令 Vue.directive("canvas&qu ...
- Vue中计算属性、侦听、过滤、自定义指令、ref的操作
1.计算属性 <div id="app"> <input type="text" v-model="x"> < ...
随机推荐
- eclipse解决maven编码UTF-8的不可映射字符
1.同时指定<project.build.sourceEncoding>属性和<encoding>的方式可适用于Maven2和Maven3. 2.在Maven3中可以只增加&l ...
- Mysql索引机制(B+Tree)
1,索引谁实现的: 索引是搜索引擎去实现的,在建立表的时候都会指定,搜索引擎是一种插拔式的,根据自己的选择去决定使用哪一个. 2,索引的定义: 索引是为了加速对表中数据行的检索而创建的一种分散存储的( ...
- Java判断水仙花数
水仙花数 水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI).自恋数.自幂数.阿姆斯壮数或阿姆斯特朗数( ...
- leetcode目录
Leetcode 1. 数组 2. 动态规划 3. 字符串 4. 链表.双指针.排序 5. 树 6. 回溯算法.贪心算法.分治算法.
- c&c++中的宏
1 c&c++中的宏 do {...} while (0); offsetof & container_of 2 引用 [1] do {...} while (0) 在宏定义中的作用 ...
- %E6%9D%8E%E9%9B%B7是什么编码
在这个网站上可以进行解码http://tool.chinaz.com/Tools/URLEncode.aspx
- 第六篇 flask中session
Flask中的Session非常的奇怪,他会将你的SessionID存放在客户端的Cookie中,使用起来也非常的奇怪 Flask 中 session 的使用 1. Flask 中 session 是 ...
- django——模型层之多表操作
django的多表操作 1.使用场景 在实际生产过程多,我们面对的数据纷繁复杂,此时就需要良好的数据结构设计,多表之间的约束关系为我们提供了数据管理以及查询的便利.在MYsql中我们利用外键(fore ...
- How to change Eclipse loading image
Eclipse IDE has many customize components, the splash welcome image (purple color loading image) is ...
- timesten 修改最大连接数
修改完/var/Timesten/sys.odbc.ini里面的connections之后 重启TT:ttdaemonadmin -restart 报错:15019: Only the instanc ...