moo.fx.js
上传用户:wangting
上传日期:2020-01-24
资源大小:2226k
文件大小:3k
源码类别:

破解

开发平台:

ASP/ASPX

  1. /*
  2. moo.fx, simple effects library built with prototype.js (http://prototype.conio.net).
  3. by Valerio Proietti (http://mad4milk.net) MIT-style LICENSE.
  4. for more info (http://moofx.mad4milk.net).
  5. Sunday, March 05, 2006
  6. v 1.2.3
  7. */
  8. var fx = new Object();
  9. //base
  10. fx.Base = function(){};
  11. fx.Base.prototype = {
  12. setOptions: function(options) {
  13. this.options = {
  14. duration: 500,
  15. onComplete: '',
  16. transition: fx.sinoidal
  17. }
  18. Object.extend(this.options, options || {});
  19. },
  20. step: function() {
  21. var time  = (new Date).getTime();
  22. if (time >= this.options.duration+this.startTime) {
  23. this.now = this.to;
  24. clearInterval (this.timer);
  25. this.timer = null;
  26. if (this.options.onComplete) setTimeout(this.options.onComplete.bind(this), 10);
  27. }
  28. else {
  29. var Tpos = (time - this.startTime) / (this.options.duration);
  30. this.now = this.options.transition(Tpos) * (this.to-this.from) + this.from;
  31. }
  32. this.increase();
  33. },
  34. custom: function(from, to) {
  35. if (this.timer != null) return;
  36. this.from = from;
  37. this.to = to;
  38. this.startTime = (new Date).getTime();
  39. this.timer = setInterval (this.step.bind(this), 13);
  40. },
  41. hide: function() {
  42. this.now = 0;
  43. this.increase();
  44. },
  45. clearTimer: function() {
  46. clearInterval(this.timer);
  47. this.timer = null;
  48. }
  49. }
  50. //stretchers
  51. fx.Layout = Class.create();
  52. fx.Layout.prototype = Object.extend(new fx.Base(), {
  53. initialize: function(el, options) {
  54. this.el = $(el);
  55. this.el.style.overflow = "hidden";
  56. this.iniWidth = this.el.offsetWidth;
  57. this.iniHeight = this.el.offsetHeight;
  58. this.setOptions(options);
  59. }
  60. });
  61. fx.Height = Class.create();
  62. Object.extend(Object.extend(fx.Height.prototype, fx.Layout.prototype), {
  63. increase: function() {
  64. this.el.style.height = this.now + "px";
  65. },
  66. toggle: function() {
  67. if (this.el.offsetHeight > 0) this.custom(this.el.offsetHeight, 0);
  68. else this.custom(0, this.el.scrollHeight);
  69. }
  70. });
  71. fx.Width = Class.create();
  72. Object.extend(Object.extend(fx.Width.prototype, fx.Layout.prototype), {
  73. increase: function() {
  74. this.el.style.width = this.now + "px";
  75. },
  76. toggle: function(){
  77. if (this.el.offsetWidth > 0) this.custom(this.el.offsetWidth, 0);
  78. else this.custom(0, this.iniWidth);
  79. }
  80. });
  81. //fader
  82. fx.Opacity = Class.create();
  83. fx.Opacity.prototype = Object.extend(new fx.Base(), {
  84. initialize: function(el, options) {
  85. this.el = $(el);
  86. this.now = 1;
  87. this.increase();
  88. this.setOptions(options);
  89. },
  90. increase: function() {
  91. if (this.now == 1 && (/Firefox/.test(navigator.userAgent))) this.now = 0.9999;
  92. this.setOpacity(this.now);
  93. },
  94. setOpacity: function(opacity) {
  95. if (opacity == 0 && this.el.style.visibility != "hidden") this.el.style.visibility = "hidden";
  96. else if (this.el.style.visibility != "visible") this.el.style.visibility = "visible";
  97. if (window.ActiveXObject) this.el.style.filter = "alpha(opacity=" + opacity*100 + ")";
  98. this.el.style.opacity = opacity;
  99. },
  100. toggle: function() {
  101. if (this.now > 0) this.custom(1, 0);
  102. else this.custom(0, 1);
  103. }
  104. });
  105. //transitions
  106. fx.sinoidal = function(pos){
  107. return ((-Math.cos(pos*Math.PI)/2) + 0.5);
  108. //this transition is from script.aculo.us
  109. }
  110. fx.linear = function(pos){
  111. return pos;
  112. }
  113. fx.cubic = function(pos){
  114. return Math.pow(pos, 3);
  115. }
  116. fx.circ = function(pos){
  117. return Math.sqrt(pos);
  118. }