判断元素是否在可视范围内

博客主要围绕判断元素是否在可视范围内展开,虽未给出具体内容,但核心聚焦于该信息技术问题,在前端开发等场景有重要应用。
import Vue from 'vue'
let allEl = []
Vue.directive('adshow', {
    bind: (el, binding) => {
        setTimeout(() => {
            const elinfo = el.getBoundingClientRect()
            allEl.push({
                el: el,
                el_top: elinfo.top + (elinfo.height / 2) + window.scrollY - window.innerHeight,
                act: false
            })
        }, 10);
        el.style.color = 'red'
        // 滚动事件
        const innerHeight = window.innerHeight
        window.onscroll = function () {
            const scrollY = window.scrollY
            allEl.map((v, i) => {
                if (v.el_top < scrollY && v.el_top > scrollY - innerHeight) {
                    if (!v.act) {
                        v.setT = setTimeout(() => {
                            console.log(`show${i}`)
                        }, 3000);
                        v.act = true
                    }
                } else {
                    clearTimeout(v.setT)
                    v.act = false
                }
            })
        }
    },
    update: function (el, binding) { }
})

15484049118047564.GIF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值