关于Javascript 特效代码

JavaScript08

关于Javascript 特效代码,第1张

<script language="JavaScript">

<!-- Hide the script from old browsers --

function compute(obj) //定义一个函数 名字叫compute 他接收了一个参数 obj

{obj.expr.value = eval(obj.expr.value)} //当前的参数的值和下文参数值所用的方法相同

var one = '1' //定义一个字符型的1

var two = '2' //定义一个字符型的2

var three = '3' //定义一个字符型的3

var four = '4' //定义一个字符型的4

var five = '5' //定义一个字符型的5

var six = '6' //定义一个字符型的6

var seven = '7' //定义一个字符型的7

var eight = '8' //定义一个字符型的8

var nine = '9' //定义一个字符型的9

var zero = '0' //定义一个字符型的0

var plus = '+' //定义一个字符型的+

var minus = '-' //定义一个字符型的*

var multiply = '*' //定义一个字符型的*

var divide = '/' //定义一个字符型的/

var decimal = '.' //定义一个字符型的.

function enter(obj, string) //定义一个函数 名字叫enter 他接收了一个参数 obj

{obj.expr.value += string} //让 obj的值加上 '+'后面的值

function clear(obj) //定义一个函数 名字叫clear 他接收了一个参数 obj

{obj.expr.value = ''} //让obj的值等于空

// --End Hiding Here -->

</script>

<form name="calc">

<table border=1>

<td colspan=4><input type="text" name="expr" size=30 action="compute(this.form)"><tr>

<!--提交表单-->

<td><input type="button" value=" 7 " onClick="enter(this.form, seven)"><!--当鼠标点击

按钮的时候提交给函数按钮中的值-->

<td><input type="button" value=" 8 " onClick="enter(this.form, eight)"><!--当鼠标点击

按钮的时候提交给函数按钮中的值-->

<td><input type="button" value=" 9 " onClick="enter(this.form, nine)"><!--当鼠标点击

按钮的时候提交给函数按钮中的值-->

<td><input type="button" value=" / " onClick="enter(this.form, divide)"><!--当鼠标点

击按钮的时候提交给函数按钮中的值-->

<tr><td><input type="button" value=" 4 " onClick="enter(this.form, four)"><!--当鼠标

点击按钮的时候提交给函数按钮中的值-->

<td><input type="button" value=" 5 " onClick="enter(this.form, five)"><!--当鼠标点击

按钮的时候提交给函数按钮中的值-->

<td><input type="button" value=" 6 " onClick="enter(this.form, six)"><!--当鼠标点击按

钮的时候提交给函数按钮中的值-->

<td><input type="button" value=" * " onClick="enter(this.form, multiply)"><!--当鼠标

点击按钮的时候提交给函数按钮中的值-->

<tr><td><input type="button" value=" 1 " onClick="enter(this.form, one)"><!--当鼠标点

击按钮的时候提交给函数按钮中的值-->

<td><input type="button" value=" 2 " onClick="enter(this.form, two)"><!--当鼠标点击按

钮的时候提交给函数按钮中的值-->

<td><input type="button" value=" 3 " onClick="enter(this.form, three)"><!--当鼠标点击

按钮的时候提交给函数按钮中的值-->

<td><input type="button" value=" - " onClick="enter(this.form, minus)"><!--当鼠标点

击按钮的时候提交给函数按钮中的值-->

<tr><td colspan=2><input type="button" value=" 0 " onClick="enter

(this.form, zero)"><!--当鼠标点击按钮的时候提交给函数按钮中的值-->

<td><input type="button" value=" . " onClick="enter(this.form, decimal)"><!--当鼠标

点击按钮的时候提交给函数按钮中的值-->

<td><input type="button" value=" + " onClick="enter(this.form, plus)"><!--当鼠标点击

按钮的时候提交给函数按钮中的值-->

<tr><td colspan=2><input type="button" value=" = " onClick="compute(this.form)"><!

--提交表单在javascript中进行运算-->

<td colspan=2><input type="button" value="AC" size= 3 onClick="clear(this.form)"><!--

点击此按钮调用此函数-->

</table>

</form>

这个函数是求如图蓝线的长度  黑色是当前窗口   绿色是hover的元素

function move( ev , bool) {

var top = $(this).offset().top

var bottom = top + $(this).height()

var left = $(this).offset().left

var right = left + $(this).width()

这个函数是求相对于当前页面  hover元素的四条边的距离

然后计算

var sT = Math.abs(y - top),   //鼠标位置到hover元素顶部的距离

sB = Math.abs(y - bottom),   //底部

sL = Math.abs(x - left),    //左边

sR = Math.abs(x - right) //右边

var a = Math.min( sT , sB , sL , sR )  //然后在这4个距离里面选出最小值    变量a 就是距离最短的值

主要思路是:鼠标当前点到下一点直接间隔计算出速度。这样就实现了惯性滑动效果。

下面是简单的js代码实现:仅供参考:

<style>    

#div1{ width:100px height:100px background:red position:absolute left:0px top:0}    

</style>    

<script>    

window.onload=function(){    

var oDiv=document.getElementById('div1')    

var iSpeedX=0    

var iSpeedY=0     

var lastX=0    

var lastY=0    

var timer=null     

oDiv.onmousedown=function(ev){    //div的鼠标按下事件,主要计算鼠标当前位置,和移动位置。这样可以计算出鼠标移动速度。

var oEvent=ev || event    

var disX=oEvent.clientX-oDiv.offsetLeft    

var disY=oEvent.clientY-oDiv.offsetTop      

clearInterval(timer)      

document.onmousemove=function(ev){   //鼠标拖动事件。 

var oEvent=ev || event     

oDiv.style.left=oEvent.clientX-disX+'px'    

oDiv.style.top=oEvent.clientY-disY+'px'    

iSpeedX=oEvent.clientX-lastX    

iSpeedY=oEvent.clientY-lastY     

lastX=oEvent.clientX    

lastY=oEvent.clientY

}    

document.onmouseup=function(){    //当鼠标抬起后,清掉移动事件。

document.onmousemove=null    

document.onmouseup=null

oDiv.releaseCapture && oDiv.releaseCapture()      

startMove()    

}    

oDiv.setCapture && oDiv.setCapture()    

return false

}         

function startMove(){    //移动函数,主要操作是计算鼠标移动速度和移动方向。

clearInterval(timer)    

timer=setInterval(function(){    

iSpeedY+=3    

var t=oDiv.offsetTop+iSpeedY    

var l=oDiv.offsetLeft+iSpeedX    

if(t>document.documentElement.clientHeight-oDiv.offsetHeight){    

t=document.documentElement.clientHeight-oDiv.offsetHeight    

iSpeedY*=-0.8    

iSpeedX*=0.8

}     

if(t<0){    

t=0    

iSpeedY*=-0.8    

iSpeedX*=0.8

}    

if(l>document.documentElement.clientWidth-oDiv.offsetWidth){    

l=document.documentElement.clientWidth-oDiv.offsetWidth

    

iSpeedX*=-0.8    

iSpeedY*=0.8    

}    

if(l<0){    

l=0    

iSpeedX*=-0.8    

iSpeedY*=0.8

    

}    

    

oDiv.style.left=l+'px'    

oDiv.style.top=t+'px'    

    

if(Math.abs(iSpeedX)<1)iSpeedX=0    

if(Math.abs(iSpeedY)<1)iSpeedY=0    

if(iSpeedX==0 && iSpeedY==0 && t==document.documentElement.clientHeight-oDiv.offsetHeight){    

clearInterval(timer)    

}    

document.title=i++    

},30)

}    

}    

</script>    

</head>    

<body>    

<div id="div1"></div>    

</body>