animate.js
上传用户:lsj999sz
上传日期:2022-06-15
资源大小:4717k
文件大小:14k
源码类别:

ICQ/即时通讯

开发平台:

Java

  1. <!--
  2. // See KB article about changing this dynamic HTML
  3. dynamicanimAttr = "dynamicanimation"
  4. animCancel = "skipanim"
  5. fpanimationPrefix = "fpAnim"
  6. animateElements = new Array()
  7. currentElement = 0
  8. speed = 1
  9. stepsZoom = 8
  10. stepsWord = 8
  11. stepsFly = 17
  12. stepsSpiral = 16
  13. stepsSpiralWord = 19
  14. stepsElastic = 32
  15. steps = stepsZoom
  16. step = 0
  17. cornerPhase=0
  18. outEffect=0
  19. function remSuffix(str)
  20. {
  21. ind=str.indexOf("FP")
  22. str = str.substring(0,ind)
  23. return str
  24. }
  25. function dynAnimOut(el)
  26. {
  27. outEffect=1
  28. dynAnimation(el)
  29. outEffect=0
  30. }
  31. function dynAnimation(obj)
  32. {
  33. animateElements = new Array()
  34. var ms = navigator.appVersion.indexOf("MSIE")
  35. ie4 = (ms>0) && (parseInt(navigator.appVersion.substring(ms+5, ms+6)) >= 4)
  36. if(!ie4)
  37. {
  38. if((navigator.appName == "Netscape") &&
  39. (parseInt(navigator.appVersion.substring(0, 1)) >= 4))
  40. doc_els=document.layers
  41. else
  42. return
  43. }
  44. else
  45. doc_els=document.all
  46.         if(outEffect && !ie4)
  47.             return
  48. if(ie4)
  49. {
  50.     for (index=document.all.length-1; index >= document.body.sourceIndex; index--)
  51. {
  52. el = document.all[index]
  53. if(outEffect && el != obj)
  54. continue
  55. if(outEffect)
  56. animationId = el.id.substring(9,el.id.length)
  57. else
  58. animationId = el.id.substring(6,el.id.length)
  59. animation=remSuffix(animationId)
  60. if(null != animation)
  61. {
  62. altcnt=0
  63. if( animation == "dropWord" ||
  64. animation == "flyTopRightWord" ||
  65. animation == "flyBottomRightWord" ||
  66. animation == "waveWords" ||
  67. animation == "hopWords")
  68. {
  69. ih = el.innerHTML
  70. outString = ""
  71. i1 = 0
  72. iend = ih.length
  73. while(true)
  74. {
  75. i2 = startWord(ih, i1)
  76. if(i2 == -1)
  77. i2 = iend
  78. outWord(ih, i1, i2, false, "", outEffect ? obj.id : el.id)
  79. if(i2 == iend)
  80. break
  81. i1 = i2
  82. i2 = endWord(ih, i1)
  83. if(i2 == -1)
  84. i2 = iend
  85. if (animation == "waveWords")
  86. outWordAlt(ih, i1, i2, true, animation, altcnt)
  87. else
  88. outWord(ih, i1, i2, true, (outEffect ? "Out" : "") + animation,
  89. outEffect ?  obj.id : el.id)
  90. if(i2 == iend)
  91. break
  92. i1 = i2
  93. altcnt++
  94. }
  95. document.all[index].innerHTML = outString
  96. document.all[index].style.posLeft = 0
  97. document.all[index].setAttribute(animCancel, true)
  98. document.all[index].style.visibility="visible"
  99. }
  100. }
  101. }
  102. }
  103. i = 0
  104. for (index=0; index < doc_els.length; index++)
  105. {
  106. el = doc_els[index]
  107. if(0 != el.id.indexOf(fpanimationPrefix))
  108. continue
  109. if (ie4)
  110. {
  111. elprops=el.style
  112. scrollOffsetTop=document.body.scrollTop
  113. docHeight=document.body.offsetHeight
  114. docWidth=document.body.offsetWidth
  115. elW=100
  116. elH=el.offsetHeight
  117. }
  118. else
  119. {
  120. elprops=el
  121. scrollOffsetTop=window.pageYOffset
  122. docHeight=window.innerHeight
  123. docWidth=window.innerWidth
  124. elW=el.clip.width
  125. elH=el.clip.height
  126. }
  127. if(outEffect)
  128. animationId = el.id.substring(9,el.id.length)
  129. else
  130. animationId = el.id.substring(6,el.id.length)
  131. animation=remSuffix(animationId)
  132. if(outEffect && (obj != el))
  133. {
  134. if(el.SRCID != obj.id)
  135. continue
  136. }
  137. if (null != animation )
  138. {
  139. if(ie4 && null!=el.getAttribute(animCancel, false))
  140. continue
  141. if(!ie4)
  142. {
  143. elprops.posLeft=elprops.left
  144. elprops.posTop=elprops.top
  145. }
  146. el.startL=offsetLeft(el)
  147. if(animation == "flyLeft")
  148. {
  149. elprops.posLeft = -offsetLeft(el)-elW
  150. elprops.posTop = 0
  151. }
  152. else if(animation == "flyRight" || animation=="elasticRight")
  153. {
  154. elprops.posLeft = -offsetLeft(el)+docWidth
  155. elprops.posTop = 0
  156. }
  157. else if(animation == "flyTop" || animation == "dropWord")
  158. {
  159. elprops.posLeft = 0
  160. elprops.posTop = scrollOffsetTop-offsetTop(el)-elH
  161. }
  162. else if(animation == "flyBottom" || animation == "elasticBottom")
  163. {
  164. elprops.posLeft = 0
  165. elprops.posTop = scrollOffsetTop-offsetTop(el)+docHeight 
  166. }
  167. else if(animation == "flyTopLeft")
  168. {
  169. elprops.posLeft = -offsetLeft(el)-elW
  170. elprops.posTop = scrollOffsetTop-offsetTop(el)-elH
  171. }
  172. else if(animation == "flyTopRight" || animation == "flyTopRightWord")
  173. {
  174. elprops.posLeft = -offsetLeft(el)+docWidth
  175. elprops.posTop = scrollOffsetTop-offsetTop(el)-elH
  176. }
  177. else if(animation == "flyCorner")
  178. {
  179. elprops.posLeft = docWidth*0.2-offsetLeft(el)
  180. elprops.posTop = scrollOffsetTop-offsetTop(el)+docHeight 
  181. }
  182. else if(animation == "flyBottomLeft")
  183. {
  184. elprops.posLeft = -offsetLeft(el)-elW
  185. elprops.posTop = scrollOffsetTop-offsetTop(el)+docHeight
  186. }
  187. else if(animation == "flyBottomRight" || animation == "flyBottomRightWord")
  188. {
  189. elprops.posLeft = -offsetLeft(el)+docWidth
  190. elprops.posTop = scrollOffsetTop-offsetTop(el)+docHeight
  191. }
  192. else if(animation == "spiral")
  193. {
  194. elprops.posLeft = -offsetLeft(el)+docWidth
  195. elprops.posTop = scrollOffsetTop-offsetTop(el)+docHeight
  196. }
  197. else if((animation.indexOf("waveWords") != -1) || animation=="hopWords")
  198. {
  199. if(i)
  200. {
  201. prevEl=animateElements[i-1]
  202. elprops.r = offsetLeft(el)-prevEl.startL
  203. }
  204. else
  205. elprops.r = offsetLeft(el)
  206. }
  207. else if(animation == "wipeLR" || animation == "wipeMID")
  208. {
  209. if (ie4 && elprops.position=="absolute")
  210. {
  211. el.sizeW=el.offsetWidth
  212. elprops.clip="rect(0 0 0 0)"
  213. }
  214. else if (!ie4)
  215. {
  216. el.sizeW=el.clip.width
  217. el.clip.width=0
  218. }
  219. }
  220. else if(animation == "wipeTB")
  221. {
  222. if (ie4 && elprops.position=="absolute")
  223. {
  224. elprops.clip="rect(0 0 0 0)"
  225. }
  226. else if(!ie4)
  227. {
  228. el.sizeH=el.clip.height
  229. el.clip.height=0
  230. }
  231. }
  232. else if(animation == "zoomIn")
  233. {
  234. elprops.posLeft = 0
  235. elprops.posTop = 0
  236. }
  237. else if(animation == "zoomOut")
  238. {
  239. elprops.posLeft = 0
  240. elprops.posTop = 0
  241. }
  242. else
  243. {
  244. continue
  245. }
  246. if(!outEffect)
  247. {
  248. el.initLeft = elprops.posLeft
  249. el.initTop  = elprops.posTop
  250. el.endLeft  = 0
  251. el.endTop   = 0
  252. elprops.visibility = "hidden"
  253. }
  254. else
  255. {
  256. el.initLeft = 0
  257. el.initTop  = 0
  258. el.endLeft = elprops.posLeft
  259. el.endTop  = elprops.posTop
  260. elprops.posTop = 0
  261. elprops.posLeft = 0
  262. }
  263. if(!ie4)
  264. {
  265. elprops.left=elprops.initLeft
  266. elprops.top =elprops.initTop
  267. }
  268. animateElements[i++] = el
  269. }
  270. }
  271. if(animateElements.length > 0)
  272. {
  273. if(outEffect)
  274. window.setTimeout("animate(1);", speed, "Javascript")
  275. else
  276. window.setTimeout("animate(0);", speed, "Javascript")
  277. }
  278. }
  279. function offsetLeft(el)
  280. {
  281. if(ie4)
  282. {
  283. x = el.offsetLeft
  284. for (e = el.offsetParent; e; e = e.offsetParent)
  285. x += e.offsetLeft
  286. return x
  287. }
  288. else
  289. {
  290. x = el.pageX
  291. return x
  292. }
  293. function offsetTop(el)
  294. {
  295. if(ie4)
  296. {
  297. y = el.offsetTop
  298. for (e = el.offsetParent; e; e = e.offsetParent)
  299. y += e.offsetTop;
  300. return y
  301. }
  302. else
  303. {
  304. y = el.pageY
  305. return y
  306. }
  307. }
  308. function startWord(ih, i)
  309. {
  310. for(tag = false; i < ih.length; i++)
  311. {
  312. c = ih.charAt(i)
  313. if(c == '<')
  314. {
  315. if(ih.substring(i+1, i+4) == "IMG")
  316. return i;
  317. tag = true
  318. }
  319. if(!tag)
  320. return i
  321. if(c == '>')
  322. tag = false
  323. }
  324. return -1
  325. }
  326. function endWord(ih, i)
  327. {
  328. nonSpace = false
  329. space = false
  330. img = false
  331. if(ih.charAt(i) == '<')
  332. {
  333. img = true
  334. i++;
  335. }
  336. while(i < ih.length)
  337. {
  338. c = ih.charAt(i)
  339. if(c != ' ')
  340. nonSpace = true
  341. if(img && c == '>')
  342. img = false;
  343. if(nonSpace && !img && c == ' ')
  344. space = true
  345. if(c == '<')
  346. return i
  347. if(space && c != ' ')
  348. return i
  349. i++
  350. }
  351. return -1
  352. }
  353. function outWord(ih, i1, i2, dyn, anim, srcID)
  354. {
  355. if(dyn)
  356. if(!outEffect)
  357. outString += "<SPAN ID="" +  fpanimationPrefix + anim + "FP" style="position: relative; visibility: hidden;">"
  358. else
  359. outString += "<SPAN SRCID="" + srcID + ""ID="" +  fpanimationPrefix + anim + "FP" style="position: relative;">"
  360. outString += ih.substring(i1, i2)
  361. if(dyn)
  362. outString += "</SPAN>"
  363. }
  364. function outWordAlt(ih, i1, i2, dyn, anim, altcnt)
  365. {
  366. if(dyn)
  367. {
  368. if(altcnt%2)
  369. outString += "<SPAN ID="" +  fpanimationPrefix + anim + "LFP" style="position: relative;  visibility: hidden;">"
  370. else
  371. outString += "<SPAN ID="" +  fpanimationPrefix + anim + "RFP" style="position: relative;  visibility: hidden;">"
  372. }
  373. outString += ih.substring(i1, i2)
  374. if(dyn)
  375. outString += "</SPAN>"
  376. }
  377. function animate(animOut)
  378. {
  379. el = animateElements[currentElement]
  380. if(animOut)
  381. animationId = el.id.substring(9,el.id.length);
  382. else
  383. animationId = el.id.substring(6,el.id.length);
  384. animation=remSuffix(animationId)
  385. if (ie4)
  386. elprops=el.style
  387. else
  388. elprops=el
  389. if(!step && !animOut)
  390. elprops.visibility="visible"
  391. step++
  392. if(animation == "spiral")
  393. {
  394. steps = stepsSpiral
  395. v = step/steps
  396. rf = 1.0 - v
  397. t = v * 2.0*Math.PI
  398. rx = Math.max(Math.abs(el.initLeft), 200)
  399. ry = Math.max(Math.abs(el.initTop),  200)
  400. elprops.posLeft = Math.ceil(-rf*Math.cos(t)*rx)
  401. elprops.posTop  = Math.ceil(-rf*Math.sin(t)*ry)
  402. }
  403. else if(animation == "waveWordsL" || animation=="hopWords" || animation == "waveWords")
  404. {
  405. steps = stepsSpiralWord
  406. v = step/steps
  407. rf = (1.0 - v)
  408. t = v * 1.0*Math.PI
  409. elprops.posLeft = Math.ceil(-rf*Math.cos(t)*elprops.r)
  410. elprops.posTop  = Math.ceil(-rf*Math.sin(t)*elprops.r)
  411. }
  412. else if(animation == "waveWordsR")
  413. {
  414. steps = stepsSpiralWord
  415. v = step/steps
  416. rf = (1.0 - v)
  417. t = v * 1.0*Math.PI
  418. elprops.posLeft = Math.ceil(-rf*Math.cos(t)*elprops.r)
  419. elprops.posTop  = Math.ceil( rf*Math.sin(t)*elprops.r)
  420. }
  421. else if(animation == "zoomIn")
  422. {
  423. steps = stepsZoom
  424. elprops.fontSize = Math.ceil(50+50*step/steps) + "%"
  425. elprops.posLeft = 0
  426. }
  427. else if(animation == "zoomOut")
  428. {
  429. steps = stepsZoom
  430. fontSz=Math.ceil(100+200*(steps-step)/steps) + "%"
  431. elprops.fontSize = fontSz
  432. elprops.posLeft = 0
  433. }
  434. else if(animation == "elasticRight")
  435. {
  436. steps = stepsElastic
  437. v = step/steps
  438. rf=Math.exp(-v*7)
  439. t = v * 1.5*Math.PI
  440. rx =Math.abs(el.initLeft)
  441. elprops.posLeft = rf*Math.cos(t)*rx
  442. elprops.posTop  = 0
  443. }
  444. else if(animation == "elasticBottom")
  445. {
  446. steps = stepsElastic
  447. v = step/steps
  448. rf=Math.exp(-v*7)
  449. t = v * 2.5*Math.PI
  450. ry =Math.abs(el.initTop)
  451. elprops.posLeft = 0
  452. elprops.posTop  = rf*Math.cos(t)*ry
  453. }
  454. else if(animation == "wipeLR")
  455. {
  456. steps = stepsElastic
  457. if(ie4 && elprops.position=="absolute")
  458. elprops.clip = "rect(0 "+ step/steps*100 +"% 100% 0)"
  459. else if (!ie4)
  460. {
  461. elprops.clip.right=step/steps*el.sizeW
  462. }
  463. }
  464. else if(animation == "wipeTB")
  465. {
  466. steps = stepsElastic
  467. if(ie4 && elprops.position=="absolute")
  468. elprops.clip = "rect(0 100% "+step/steps*el.offsetHeight+"px 0)"
  469. else
  470. elprops.clip.bottom=step/steps*el.sizeH
  471. }
  472. else if(animation == "wipeMID")
  473. {
  474. steps = stepsElastic
  475. if(ie4 && elprops.position=="absolute")
  476. {
  477. elprops.clip = "rect(0 "+el.sizeW/2*(1+step/steps)+"px 100% "+el.sizeW/2*(1-step/steps)+")"
  478. }
  479. else if(!ie4)
  480. {
  481. elprops.clip.right=el.sizeW/2*(1+step/steps)
  482. elprops.clip.left=el.sizeW/2*(1-step/steps)
  483. }
  484. }
  485. else if(animation == "flyCorner")
  486. {
  487. if(!cornerPhase)
  488. {
  489. steps = stepsElastic/2
  490. v = step/steps
  491. rf=Math.exp(-v*7)
  492. t = v * 2.5*Math.PI
  493. ry =Math.abs(el.initTop)
  494. elprops.posTop  = rf*Math.cos(t)*ry
  495. }
  496. else
  497. {
  498. steps = stepsFly
  499. dl = el.initLeft / steps
  500. elprops.posLeft = elprops.posLeft - dl
  501. elprops.posTop = 0
  502. }
  503. }
  504. else
  505. {
  506. steps = stepsFly
  507. if(animation == "dropWord" || animation == "flyTopRightWord" || animation == "flyBottomRightWord")
  508. steps = stepsWord
  509. dl = (el.endLeft - el.initLeft) / steps
  510. dt = (el.endTop  - el.initTop)  / steps
  511. elprops.posLeft = elprops.posLeft + dl
  512. elprops.posTop = elprops.posTop + dt
  513. }
  514. if (step >= steps) 
  515. {
  516. if(!(animation == "wipeLR" ||
  517. animation  == "wipeTB" ||
  518. animation  == "wipeMID" ||
  519. (animation == "flyCorner" && !cornerPhase)))
  520. {
  521. elprops.posLeft = el.endLeft
  522. elprops.posTop = el.endTop
  523. }
  524. if(animOut)
  525. {
  526. elprops.visibility="hidden"
  527. }
  528. step = 0
  529. if(animation=="flyCorner" && !cornerPhase)
  530. cornerPhase=1
  531. else
  532. {
  533. cornerPhase=0
  534. currentElement++
  535. }
  536. }
  537. if(!ie4)
  538. {
  539. elprops.left=elprops.posLeft
  540. elprops.top =elprops.posTop
  541. }
  542. if(currentElement < animateElements.length)
  543. {
  544. if(animOut)
  545. window.setTimeout("animate(1);", speed, "Javascript")
  546. else
  547. window.setTimeout("animate(0);", speed, "Javascript")
  548. }
  549. else
  550. currentElement=0
  551. }
  552. function rollIn(el)
  553. {
  554. var ms = navigator.appVersion.indexOf("MSIE")
  555. ie4 = (ms>0) && (parseInt(navigator.appVersion.substring(ms+5, ms+6)) >= 4)
  556. if(ie4)
  557. {
  558. el.initstyle=el.style.cssText;el.style.cssText=el.fprolloverstyle
  559. }
  560. }
  561. function rollOut(el)
  562. {
  563. var ms = navigator.appVersion.indexOf("MSIE")
  564. ie4 = (ms>0) && (parseInt(navigator.appVersion.substring(ms+5, ms+6)) >= 4)
  565. if(ie4)
  566. {
  567. el.style.cssText=el.initstyle
  568. }
  569. }
  570. function clickSwapStyle(el)
  571. {
  572. var ms = navigator.appVersion.indexOf("MSIE")
  573. ie4 = (ms>0) && (parseInt(navigator.appVersion.substring(ms+5, ms+6)) >= 4)
  574. if(ie4)
  575. {
  576. ts=el.style.cssText
  577. el.style.cssText=el.fprolloverstyle
  578. el.fprolloverstyle=ts
  579. }
  580. }
  581. function clickSwapImg(el)
  582. {
  583.         if(document.all || document.layers)
  584.         {
  585.      ts=el.src
  586.      el.src=el.lowsrc
  587.      el.lowsrc=ts
  588.         }
  589. }
  590. //-->