基于javascript的div浮动效果代码

今天接到一个添加网页图片浮动的任务,花了一中午的时间进行了学习和编码,实现了两种方式的图片浮动,这里把遇到的问题和解决的方法做一个总结。

两种实现分别为:1)Z字形浮动  2)反弹浮动;

        具体来说,需要对如下的div进行浮动:【代码1】

        <div id="ad" style="position:absolute"><a href="http://www.baidu.com" title="有种点我" target="_blank"><img src="tiger.jpg" border="0" width = "145px" height="90px"></a></div> 

Z字形的实现方式如下:【代码2】

        <script type="text/javascript"> 


//分别代表距离左上角(0,0)点的横纵坐标的距离
var left_top_x = 150,left_top_y = 60;
//分别代表距离右下角(clientWidth,clientHeight)点的横纵坐标的距离
var right_bottom_x=150,right_bottom_y=160;

//初始化第一个点
var x = left_top_x,y = left_top_y ;
//var xin = true, yin = true 
//0不动  1右移   2左移
var xin = 1;
//0 不动  1下移  2上移
var yin = 0;
//延长时间   越短越快
var delay = 1;
var obj=document.getElementById("ad") ;

function floatAD() { 
var L=left_top_x;
var T = left_top_y;

var R= document.body.clientWidth -obj.offsetWidth - right_bottom_x;
    var B = document.body.clientHeight - obj.offsetHeight -right_bottom_y;

//宽长比
var ratio = B/R;
obj.style.left = x+"px"
obj.style.top = y+"px"

//左侧到头了  保持高度往右平移
if (x < L) 

if(yin==2){
xin = 1;
x = L;
y = T;
yin = 0;
}else{
xin = 1;
x = L;
y = B;
yin = 0;
}


//右侧到头了  保持高度往左平移
else if (x > R){
if(y==T){
xin = 2;
yin = 1;
x = R;
y = T;
}else{
xin = 2;
yin = 2;
x = R;
y = B;
}
}else{
//左下
if(xin==2 && yin==1){
x = x -1
y = y + ratio
//左上
}else if(xin==2 && yin==2){
x = x -1
y = y -ratio
//上右或者下右
}else if(yin==0){
x = x + 1
}

}

var itl= setInterval("floatAD()", delay) 
obj.οnmοuseοver=function(){clearInterval(itl)} 
obj.οnmοuseοut=function(){itl=setInterval("floatAD()", delay)} 
</script>

        反弹浮动的实现方式如下:【代码3】

        <script language="Javascript"> 
var x = 50,y = 60 
var xin = true, yin = true 
var step = 1 
var delay = 1 
var obj=document.getElementById("ad") 
function floatAD() { 
var L=T=0 
var R= document.body.clientWidth-obj.offsetWidth 
var B = document.body.clientHeight-obj.offsetHeight 
obj.style.left = x +"px"
obj.style.top = y  +"px"
x = x + step*(xin?1:-1) 
if (x < L) { xin = true; x = L} 
if (x > R){ xin = false; x = R} 
y = y + step*(yin?1:-1) 
if (y < T) { yin = true; y = T } 
if (y > B) { yin = false; y = B } 

var itl= setInterval("floatAD()", delay) 
obj.οnmοuseοver=function(){clearInterval(itl)} 
obj.οnmοuseοut=function(){itl=setInterval("floatAD()", delay)} 


</script>

      其中,代码2和代码3应该在代码1后面。代码2是参照网上的思路自己编码的(按照这个思路,我们可以编写任意我们想要的浮动),代码3是网上的思路;

     注意事项:

         当网页文件的是如下标准的话

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

      那么以上代码有可能无法正常执行,其原因是标准不一致,具体表现在js代码中的obj.style.left = x +"px"部分,这也是为什么这里强制加上“px”这个单位的原因。

      本文只是简短的对div浮动效果进行了细小的说明,算是一个中午的工作总结吧,希望日后能在用得上的时候方便查阅。另外,这是本人第一次写作,构思和表达上难得有不完整和不准确之处,敬请谅解!


      

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值