animate.js
上传用户:kaisitong
上传日期:2022-01-01
资源大小:3672k
文件大小:16k
源码类别:

OA系统

开发平台:

ASP/ASPX

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