1234567891011121314151617181920212223242526272829 |
- import Vue from "vue";
- // function getElementToPageTop(el) {
- // if (el.parentElement) {
- // return getElementToPageTop(el.parentElement) + el.offsetTop;
- // }
- // return el.offsetTop;
- // }
- Vue.directive("domObserver", {
- bind(el, binding) {
- let top = "";
- let height = "";
- function isResize() {
- // let toPageTop = getElementToPageTop(el);
- let toPageTop = el.getBoundingClientRect().top;
- let elHeight = el.getBoundingClientRect().height;
- if (toPageTop != top || elHeight != height) {
- binding.value({ top: toPageTop, height: elHeight });
- }
- top = toPageTop;
- height = elHeight;
- }
- el.__vueSetInterval__ = setInterval(isResize, 300);
- },
- unbind(el) {
- console.log(el, "解绑");
- clearInterval(el.__vueSetInterval__);
- },
- });
|