首页 > 编程 > JavaScript > 正文

基于JavaScript代码实现随机漂浮图片广告

2019-11-20 10:51:47
字体:
来源:转载
供稿:网友

在网上有很多这样的代码,不过未必符合W3C标准,因为在头部加上<!DOCTYPE html>类似标签之后,漂浮效果就会失效,下面分享一个符合标准的漂浮代码,使需要的朋友免去大量改造代码的繁琐。

代码一:

代码如下:

<!DOCTYPE html><html><head><meta charset=" utf-8"><meta name="author" content="http://www.softwhy.com/" /><title>漂浮广告代码</title><style type="text/css">#thediv{ z-index:100;  position:absolute;  top:43px;  left:2px; height:100px; width:100px;  background-color:red;}</style><script type="text/javascript"> var xPos=300; var yPos=200; var step=1; var delay=8; var height=0; var Hoffset=0; var Woffset=0; var yon=0; var xon=0; var pause=true; var interval; function changePos() {  width=document.documentElement.clientWidth;  height=document.documentElement.clientHeight;  Hoffset=thediv.offsetHeight;  Woffset=thediv.offsetWidth;  thediv.style.left=(xPos+document.body.scrollLeft+document.documentElement.scrollLeft)+"px";  thediv.style.top=(yPos+document.body.scrollTop+document.documentElement.scrollTop)+"px";  if(yon)  {  yPos=yPos+step; }  else  {  yPos=yPos-step; }  if(yPos<0)  {  yon=1;  yPos=0; }  if(yPos>=(height-Hoffset))  {  yon=0;  yPos=(height - Hoffset); }  if(xon)  {  xPos=xPos + step; }  else  {  xPos=xPos - step; }  if(xPos < 0)  {  xon = 1;  xPos = 0; }  if(xPos >= (width - Woffset))  {  xon = 0;  xPos = (width - Woffset);  } } function start() {  thediv.visibility="visible";  interval=setInterval('changePos()',delay); } function pause_resume() {  if(pause)  {   clearInterval(interval);   pause = false; }  else  {   interval = setInterval(changePos,delay);   pause = true;  } }window.onload=function(){ thediv.style.top=yPos;  start(); }</script> </head> <body> <div id="thediv"></div> </body> </html> 

以上代码实现了我们的要求,红色div块能够能够在网页中随机漂浮,并且兼容各个浏览器。代码的实现过程这里就不多介绍了,如有任何问题可以跟帖留言。

代码二:JS随机漂浮广告代码具体实例

代码如下:

<!--随机漂浮广告开始--><div id="float" style="position:absolute; z-index:3;(我建议大家把这里设为100,这样浮动图就不会被遮住了) left: 512px; width: 83px; top: 9px; height: 53px;">   <img src="piaofu.gif" width="100" height="50"> </div><script type="text/javascript">  <!--随机漂浮广告 -->  var xPos=0,yPos=0;//x,y轴坐标  var xon=0;//图片在x轴移动方向  var yon=0;//图片在y轴移动方向  var step=1;   //移动距离  var img=document.getElementByIdx_x("float");//图片层  function floatP()  {   var width=document.body.clientWidth;//浏览器宽度   var height=document.body.clientHeight;//浏览器高度   var Hoffset=img.offsetHeight;//图片高度   var Woffset=img.offsetWidth;//图片宽度   img.style.left=xPos+document.body.scrollLeft;//图片距离浏览器左侧位置   img.style.top=yPos+document.body.scrollTop;//图片距离浏览器顶端位置   if(yon==0){   yPos=yPos+step;//图片在y轴方向上下移动   }else{   yPos=yPos-step;   }   if(yPos<0){//飘到顶端,沿y轴向下移动   yon=0;   yPos=0;   }   if(yPos>=(height-Hoffset)){//飘到低端,沿y轴向上移动   yon=1;   yPos=(height-Hoffset);   }   if(xon==0){//x轴向右移动   xPos=xPos+step;   }else{   xPos=xPos-step;//x轴向左移动   }   if(xPos<0){//飘到左侧时沿x轴向右移动   xon=0;   xPos=0;   }   if(xPos>=(width-Woffset)){//飘到右侧时沿x轴向左移动   xon=1;   xPos=(width-Woffset);   }   setTimeout("floatP()",30);//定时调用。  }  window.onload=floatP();</script>

 代码如下:

<script>var x = 50,y = 60 //浮动层的初始位置,分别对应层的初始X坐标和Y坐标var xin = true, yin = true //判断层的X坐标和Y坐标是否在在控制范围之内,xin为真是层向右移动,否则向左;yin为真是层向下移动,否则向上var step = 1 //层移动的步长,值越大移动速度越快var delay = 10 //层移动的时间间隔,单位为毫秒,值越小移动速度越快var obj=document.getElementByIdx_x("float") //捕获id为ad的层作为漂浮目标function floatAD() {var L=T=0 //层移动范围的左边界(L)和上边界(T)坐标var R= document.body.clientWidth-obj.offsetWidth //层移动的右边界var B = document.body.clientHeight-obj.offsetHeight //层移动的下边界obj.style.left = x + document.body.scrollLeft //更新层的X坐标,实现X轴方向上的运动;document.body.scrollLeft为文档区域的滚动条向右拉的距离,以保证在滚动条右拉时层仍在可见范围内obj.style.top = y + document.body.scrollTop //更新层的Y坐标,实现Y轴方向上的运动;document.body.scrollTop为文档区域的滚动条向下拉的距离,以保证在滚动条下拉时层仍在可见范围内x = x + step*(xin?1:-1) //通过判断层的范围决定层在X轴上的运动方向if (x < L) { xin = true; x = L} //层超出左边界时的处理if (x > R){ xin = false; x = R} //层超出右边界时的处理y = y + step*(yin?1:-1) //通过判断层的范围决定层在Y轴上的运动方向if (y < T) { yin = true; y = T } //层超出上边界时的处理if (y > B) { yin = false; y = B } //层超出下边界时的处理}var itl= setInterval("floatAD()", delay) //每delay秒执行一次floatAD函数obj.onmouseover=function(){clearInterval(itl)} //层在鼠标移上时清除上面的间隔事件,实现层在的鼠标移上时停止运动的效果obj.onmouseout=function(){itl=setInterval("floatAD()", delay)} //层在鼠标移开时开始间隔事件,实现层在的鼠标移开时继续运动的效果</script>

武林网友情提醒大家需要注意事项:

在网页中插入Flash和浮动广告,你会发现在浮动广告浮到Flash处时会在下面,我们如何解决这个问题呢,其它很简单

在flash代码的位置加入下面语句就可以了

<param name="wmode" value="opaque">

例:

如果下面是flash所在位置的代码:

代码如下:

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="780" height="165"><param name="movie" value="banner1.swf"><param name="quality" value="high"><param name="menu" value="false"><param name="wmode" value="opaque"><!--主要是这句--><embed src="banner1.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="780" height="165"></embed></object>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表