满屏飞飘窗js

14 篇文章 0 订阅

//调用

<div id="fw">飘窗内容</div>
<script>
    var fw=new AdMove("fw"); 
		fw.Run(); 
</script>

源码:可封装为插件使用

function addEvent(obj, evtType, func, cap) {
	cap = cap || false;
	if(obj.addEventListener) {
		obj.addEventListener(evtType, func, cap);
		return true;
	} else if(obj.attachEvent) {
		if(cap) {
			obj.setCapture();
			return true;
		} else {
			return obj.attachEvent("on" + evtType, func);
		}
	} else {
		return false;
	}
}

function getPageScroll() {
	var xScroll, yScroll;
	if(self.pageXOffset) {
		xScroll = self.pageXOffset;
	} else if(document.documentElement && document.documentElement.scrollLeft) {
		xScroll = document.documentElement.scrollLeft;
	} else if(document.body) {
		xScroll = document.body.scrollLeft;
	}
	if(self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if(document.documentElement && document.documentElement.scrollTop) {
		yScroll = document.documentElement.scrollTop;
	} else if(document.body) {
		yScroll = document.body.scrollTop;
	}
	arrayPageScroll = new Array(xScroll, yScroll);
	return arrayPageScroll;
}

function GetPageSize() {
	var xScroll, yScroll;
	if(window.innerHeight && window.scrollMaxY) {
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if(document.body.scrollHeight > document.body.offsetHeight) {
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else {
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	var windowWidth, windowHeight;
	if(self.innerHeight) {
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if(document.documentElement && document.documentElement.clientHeight) {
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if(document.body) {
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}
	if(yScroll < windowHeight) {
		pageHeight = windowHeight;
	} else {
		pageHeight = yScroll;
	}
	if(xScroll < windowWidth) {
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}
	arrayPageSize = new Array(pageWidth, pageHeight, windowWidth, windowHeight)
	return arrayPageSize;
}

var AdMoveConfig = new Object();
AdMoveConfig.IsInitialized = false;
AdMoveConfig.ScrollX = 0;
AdMoveConfig.ScrollY = 0;
AdMoveConfig.MoveWidth = 0;
AdMoveConfig.MoveHeight = 0;
AdMoveConfig.Resize = function() {
	var winsize = GetPageSize();
	AdMoveConfig.MoveWidth = winsize[2];
	AdMoveConfig.MoveHeight = winsize[3];
	AdMoveConfig.Scroll();
}
AdMoveConfig.Scroll = function() {
	var winscroll = getPageScroll();
	AdMoveConfig.ScrollX = winscroll[0]-17;
	AdMoveConfig.ScrollY = winscroll[1];
}
addEvent(window, "resize", AdMoveConfig.Resize);
addEvent(window, "scroll", AdMoveConfig.Scroll);

function AdMove(id) {
	if(!AdMoveConfig.IsInitialized) {
		AdMoveConfig.Resize();
		AdMoveConfig.IsInitialized = true;
	}
	var obj = document.getElementById(id);
	obj.style.position = "absolute";
	var W = AdMoveConfig.MoveWidth - obj.offsetWidth;
	var H = AdMoveConfig.MoveHeight - obj.offsetHeight;
	var x = W * Math.random(),
		y = H * Math.random();
	var rad = (Math.random() + 1) * Math.PI / 6;
	var kx = Math.sin(rad),
		ky = Math.cos(rad);
	var dirx = (Math.random() < 0.5 ? 1 : -1),
		diry = (Math.random() < 0.5 ? 1 : -1);
	var step = 1;
	var interval;
	this.SetLocation = function(vx, vy) {
		x = vx;
		y = vy;
	}
	this.SetDirection = function(vx, vy) {
		dirx = vx;
		diry = vy;
	}
	obj.CustomMethod = function() {
		obj.style.left = (x + AdMoveConfig.ScrollX) + "px";
		obj.style.top = (y + AdMoveConfig.ScrollY) + "px";
		rad = (Math.random() + 1) * Math.PI / 6;
		W = AdMoveConfig.MoveWidth - obj.offsetWidth;
		H = AdMoveConfig.MoveHeight - obj.offsetHeight;
		x = x + step * kx * dirx;
		if(x < 0) {
			dirx = 1;
			x = 0;
			kx = Math.sin(rad);
			ky = Math.cos(rad);
		}
		if(x > W) {
			dirx = -1;
			x = W;
			kx = Math.sin(rad);
			ky = Math.cos(rad);
		}
		y = y + step * ky * diry;
		if(y < 0) {
			diry = 1;
			y = 0;
			kx = Math.sin(rad);
			ky = Math.cos(rad);
		}
		if(y > H) {
			diry = -1;
			y = H;
			kx = Math.sin(rad);
			ky = Math.cos(rad);
		}
	}
	this.Run = function() {
		var delay = 12;
		interval = setInterval(obj.CustomMethod, delay);
		obj.onmouseover = function() {
			clearInterval(interval);
		}
		obj.onmouseout = function() {
			interval = setInterval(obj.CustomMethod, delay);
		}
		obj.getElementsByClassName('close-session')[0].onclick=function(){
			setTimeout(function(){
				clearInterval(interval);
			},100)
			
		}

		obj.getElementsByClassName('close-local')[0].onclick=function(){
			clearInterval(interval);
		}
	}
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值