Vue 自定义指令实现 元素 吸顶功能
问题描述:页面需要实现吸顶效果
解决办法:
(1)自定义组件内指令
directives: {
stickyed: {
inserted(el, binding) {
el.style.position = 'sticky' //position 的 属性 非常好用
console.log(binding, '0000')
function aaa() {
const scroll_top = document.documentElement.scrollTop
const offset_top = el.offsetTop
console.log(scroll_top, '滚动条滚动得距离')
console.log(offset_top, '元素距离顶部得距离')
if (offset_top - scroll_top < 0) {
el.style.top = binding.value.top + 'px'
}
}
window.addEventListener('scroll', aaa, false) //实施滚动条监听
}
}
},
自定义指令实施:
<div v-stickyed="{top:0}" style="width:1000px;height:40px;background:red;margin-left:200px;z-index:1001"></div>
(2)vue 注册全局指令
import Vue from 'vue'
Vue.directive('stickyed', {
inserted(el, binding) {
el.style.position = 'sticky'
console.log(binding, '0000')
function aaa() {
const scroll_top = document.documentElement.scrollTop
const offset_top = el.offsetTop
console.log(scroll_top, '滚动条滚动得距离000')
console.log(offset_top, '元素距离顶部得距离000')
if (offset_top - scroll_top < 0) {
el.style.top = binding.value.top + 'px'
}
}
window.addEventListener('scroll', aaa, false)
}
})
main.js 里引用改文件
import '@/utils/aaa.js'
(3)vue引用插件 VueSticky
下载 插件
npm i VueSticky
在文件中引入
import Vue from 'vue'
import VueSticky from 'vue-sticky'
Vue.directive('sticky', VueSticky)
main.js 中引入

浙公网安备 33010602011771号