FloatWindow网页悬浮窗

亲测可用!

<template>
    <div class="adbox" ref="adbox" v-show="showAdbox" @mouseenter="enterbox" @mouseleave="leavebox">
        <b style="float:right;cursor:pointer;margin-right:5px;" @click="closebox">×</b>
        <div>广告位招租</div>
    </div>
</template>

<script>
export default{
    name: 'FloatWindow',
    data(){
        return {
            x:50,
            y:50,
            xin:true,
            yin:true,
            step:1,
            delay:20, // 移动速度
            itl:null,
            showAdbox:true
        }
    },
    mounted: function(){
        this.routeEnterShowAdbox();
    },
    destroyed: function(){
        clearInterval(this.itl);
    },
    methods:{
        closebox(){
            this.showAdbox = false;
            clearInterval(this.itl)
        },
        leavebox(){
            if(this.showAdbox== false){
                clearInterval(this.itl)
            }else{
                this.itl=setInterval(this.movebox, this.delay)
            }
        },
        enterbox(){
            clearInterval(this.itl)
        },
        movebox() {
            var L = 0;
            var T = 0;
            var R = document.documentElement.clientWidth - this.$refs.adbox.offsetWidth;    //浏览器显示宽度-adbox宽度,不随滚动条变化而变化
            var B = document.documentElement.clientHeight - this.$refs.adbox.offsetHeight;  //浏览器显示高度-adbox高度,不随滚动条变化而变化
            this.$refs.adbox.style.left = this.x + document.documentElement.scrollLeft + "px";  //adbox初始左+滚动条最左端到浏览器最左端的距离
            this.$refs.adbox.style.top = this.y + document.documentElement.scrollTop + "px";    //adbox初始高+滚动条顶端到浏览器顶端的距离
            this.x = this.x + this.step * (this.xin ? 1 : -1);
            if (this.x < L) {this.xin = true;this.x = L;}
            if (this.x > R) {this.xin = false;this.x = R;}
            this.y = this.y + this.step * (this.yin ? 1 : -1);
            if (this.y < T) {this.yin = true;this.y = T;}
            if (this.y > B) {this.yin = false;this.y = B;}
        },
        routeEnterShowAdbox(){
            this.itl=setInterval(this.movebox, this.delay)
        },
    },
}
</script>

<style lang="scss" scoped>
.adbox{
    width: 400px;
    height: 300px;
    position:  absolute;
    z-index: 999;
    border: 1px solid red;
}
</style>

 

border1px solid red;
posted @ 2021-05-12 10:43  ZJTL  阅读(203)  评论(0编辑  收藏  举报