html飘窗不断下移问题,JS右下下角飘窗.html

这段代码展示了如何使用JavaScript创建一个可最小化和关闭的右下角浮动广告窗。通过设置样式、事件监听和动画效果,实现了广告窗随着页面滚动和窗口大小改变动态调整位置,并具有渐显和透明度控制功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaScript实现可最小化/关闭的右下角浮动广告窗_网页代码站(www.webdm.cn)

#msg_win{position:absolute;right:0px;display:none;overflow:hidden;z-index:99;width:230px;font-size:12px;margin:0px;}

#msg_win .icos{position:absolute;top:-2px;*top:-4px;right:2px;z-index:9;}

#msg_title{ position:relative; bottom:-25px; height:25px;line-height:25px;}

.icos a{float:left;color:#FFFFFF;text-align:center;font-weight:bold;width:14px;height:22px;line-height:22px;text-decoration:none;font-family:webdings;}

.icos a:hover{color:#FFCC00;}

#msg_content{width:230px;height:140px;overflow:hidden;}

var Message={

close: function() {//关闭

this.win.style.display = 'none';

window.onscroll = null;

},

setOpacity: function(x) {//设置透明度

var v = x >= 100 ? '': 'Alpha(opacity=' + x + ')';

this.win.style.visibility = x<=0?'hidden':'visible';//IE有绝对或相对定位内容不随父透明度变化的bug

this.win.style.filter = v;

this.win.style.opacity = x / 100;

},

show: function() {//渐显

clearInterval(this.timer2);

var me = this,fx = this.fx(0, 100, 0.1),t = 0;

this.timer2 = setInterval(function() {

t = fx();

me.setOpacity(t[0]);

if (t[1] == 0) {clearInterval(me.timer2)}

},6);//10 to 6

},

fx: function(a, b, c) {//缓冲计算

var cMath = Math[(a - b) > 0 ? "floor": "ceil"],c = c || 0.1;

return function() {return [a += cMath((b - a) * c), a - b]}

},

getY: function() {//计算移动坐标

var d = document,b = document.body,e = document.documentElement;

var s = Math.max(b.scrollTop, e.scrollTop);

var h = /BackCompat/i.test(document.compatMode)?b.clientHeight:e.clientHeight;

var h2 = this.win.offsetHeight;

return {foot: s + h + h2 + 2+'px',top: s + h - h2 - 2+'px'}

},

moveTo: function(y) {//移动动画

clearInterval(this.timer);

var me = this,a = parseInt(this.win.style.top)||0;

var fx = this.fx(a, parseInt(y));

var t = 0 ;

this.timer = setInterval(function() {

t = fx();

me.win.style.top = t[0]+'px';

if (t[1] == 0) {

clearInterval(me.timer);

me.bind();

}

},6);//10 to 6

},

bind:function (){//绑定窗口滚动条与大小变化事件

var me=this,st,rt;

window.onscroll = function() {

clearTimeout(st);

clearTimeout(me.timer2);

me.setOpacity(0);

st = setTimeout(function() {

me.win.style.top = me.getY().top;

me.show();

},100);//600 mod 100

};

window.onresize = function (){

clearTimeout(rt);

rt = setTimeout(function() {me.win.style.top = me.getY().top},100);

}

},

init: function() {//创建HTML

function $(id) {return document.getElementById(id)};

this.win=$('msg_win');

var set={closebtn: 'msg_close',content: 'msg_content'};

for (var Id in set) {this[Id] = $(set[Id])};

var me = this;

this.closebtn.onclick = function() {me.close()};

this.char=navigator.userAgent.toLowerCase().indexOf('firefox')+1?['_','::','×']:['0','2','r'];//FF不支持webdings字体

this.closebtn.innerHTML=this.char[2];

setTimeout(function() {//初始化最先位置

me.win.style.display = 'block';

me.win.style.top = me.getY().foot;

me.moveTo(me.getY().top);

},0);

return this;

}

};

Message.init();

一键复制

编辑

Web IDE

原始数据

按行查看

历史

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值