⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 effects.js

📁 RubyonRailsC.zip ruby on rails的源码
💻 JS
📖 第 1 页 / 共 2 页
字号:
    // Prevent executing on elements not in the layout flow    if(Element.getStyle(this.element, 'display')=='none') { this.cancel(); return; }    // Disable background image during the effect    this.oldStyle = {      backgroundImage: Element.getStyle(this.element, 'background-image') };    Element.setStyle(this.element, {backgroundImage: 'none'});    if(!this.options.endcolor)      this.options.endcolor = Element.getStyle(this.element, 'background-color').parseColor('#ffffff');    if(!this.options.restorecolor)      this.options.restorecolor = Element.getStyle(this.element, 'background-color');    // init color calculations    this._base  = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this));    this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this));  },  update: function(position) {    Element.setStyle(this.element,{backgroundColor: $R(0,2).inject('#',function(m,v,i){      return m+(Math.round(this._base[i]+(this._delta[i]*position)).toColorPart()); }.bind(this)) });  },  finish: function() {    Element.setStyle(this.element, Object.extend(this.oldStyle, {      backgroundColor: this.options.restorecolor    }));  }});Effect.ScrollTo = Class.create();Object.extend(Object.extend(Effect.ScrollTo.prototype, Effect.Base.prototype), {  initialize: function(element) {    this.element = $(element);    this.start(arguments[1] || {});  },  setup: function() {    Position.prepare();    var offsets = Position.cumulativeOffset(this.element);    if(this.options.offset) offsets[1] += this.options.offset;    var max = window.innerHeight ?       window.height - window.innerHeight :      document.body.scrollHeight -         (document.documentElement.clientHeight ?           document.documentElement.clientHeight : document.body.clientHeight);    this.scrollStart = Position.deltaY;    this.delta = (offsets[1] > max ? max : offsets[1]) - this.scrollStart;  },  update: function(position) {    Position.prepare();    window.scrollTo(Position.deltaX,       this.scrollStart + (position*this.delta));  }});/* ------------- combination effects ------------- */Effect.Fade = function(element) {  var oldOpacity = Element.getInlineOpacity(element);  var options = Object.extend({  from: Element.getOpacity(element) || 1.0,  to:   0.0,  afterFinishInternal: function(effect) { with(Element) {     if(effect.options.to!=0) return;    hide(effect.element);    setStyle(effect.element, {opacity: oldOpacity}); }}  }, arguments[1] || {});  return new Effect.Opacity(element,options);}Effect.Appear = function(element) {  var options = Object.extend({  from: (Element.getStyle(element, 'display') == 'none' ? 0.0 : Element.getOpacity(element) || 0.0),  to:   1.0,  beforeSetup: function(effect) { with(Element) {    setOpacity(effect.element, effect.options.from);    show(effect.element); }}  }, arguments[1] || {});  return new Effect.Opacity(element,options);}Effect.Puff = function(element) {  element = $(element);  var oldStyle = { opacity: Element.getInlineOpacity(element), position: Element.getStyle(element, 'position') };  return new Effect.Parallel(   [ new Effect.Scale(element, 200,       { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }),      new Effect.Opacity(element, { sync: true, to: 0.0 } ) ],      Object.extend({ duration: 1.0,       beforeSetupInternal: function(effect) { with(Element) {        setStyle(effect.effects[0].element, {position: 'absolute'}); }},      afterFinishInternal: function(effect) { with(Element) {         hide(effect.effects[0].element);         setStyle(effect.effects[0].element, oldStyle); }}     }, arguments[1] || {})   );}Effect.BlindUp = function(element) {  element = $(element);  Element.makeClipping(element);  return new Effect.Scale(element, 0,     Object.extend({ scaleContent: false,       scaleX: false,       restoreAfterFinish: true,      afterFinishInternal: function(effect) { with(Element) {        [hide, undoClipping].call(effect.element); }}     }, arguments[1] || {})  );}Effect.BlindDown = function(element) {  element = $(element);  var oldHeight = Element.getStyle(element, 'height');  var elementDimensions = Element.getDimensions(element);  return new Effect.Scale(element, 100,     Object.extend({ scaleContent: false,       scaleX: false,      scaleFrom: 0,      scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},      restoreAfterFinish: true,      afterSetup: function(effect) { with(Element) {        makeClipping(effect.element);        setStyle(effect.element, {height: '0px'});        show(effect.element);       }},        afterFinishInternal: function(effect) { with(Element) {        undoClipping(effect.element);        setStyle(effect.element, {height: oldHeight});      }}    }, arguments[1] || {})  );}Effect.SwitchOff = function(element) {  element = $(element);  var oldOpacity = Element.getInlineOpacity(element);  return new Effect.Appear(element, {     duration: 0.4,    from: 0,    transition: Effect.Transitions.flicker,    afterFinishInternal: function(effect) {      new Effect.Scale(effect.element, 1, {         duration: 0.3, scaleFromCenter: true,        scaleX: false, scaleContent: false, restoreAfterFinish: true,        beforeSetup: function(effect) { with(Element) {          [makePositioned,makeClipping].call(effect.element);        }},        afterFinishInternal: function(effect) { with(Element) {          [hide,undoClipping,undoPositioned].call(effect.element);          setStyle(effect.element, {opacity: oldOpacity});        }}      })    }  });}Effect.DropOut = function(element) {  element = $(element);  var oldStyle = {    top: Element.getStyle(element, 'top'),    left: Element.getStyle(element, 'left'),    opacity: Element.getInlineOpacity(element) };  return new Effect.Parallel(    [ new Effect.MoveBy(element, 100, 0, { sync: true }),       new Effect.Opacity(element, { sync: true, to: 0.0 }) ],    Object.extend(      { duration: 0.5,        beforeSetup: function(effect) { with(Element) {          makePositioned(effect.effects[0].element); }},        afterFinishInternal: function(effect) { with(Element) {          [hide, undoPositioned].call(effect.effects[0].element);          setStyle(effect.effects[0].element, oldStyle); }}       }, arguments[1] || {}));}Effect.Shake = function(element) {  element = $(element);  var oldStyle = {    top: Element.getStyle(element, 'top'),    left: Element.getStyle(element, 'left') };  return new Effect.MoveBy(element, 0, 20,     { duration: 0.05, afterFinishInternal: function(effect) {  new Effect.MoveBy(effect.element, 0, -40,     { duration: 0.1, afterFinishInternal: function(effect) {  new Effect.MoveBy(effect.element, 0, 40,     { duration: 0.1, afterFinishInternal: function(effect) {  new Effect.MoveBy(effect.element, 0, -40,     { duration: 0.1, afterFinishInternal: function(effect) {  new Effect.MoveBy(effect.element, 0, 40,     { duration: 0.1, afterFinishInternal: function(effect) {  new Effect.MoveBy(effect.element, 0, -20,     { duration: 0.05, afterFinishInternal: function(effect) { with(Element) {        undoPositioned(effect.element);        setStyle(effect.element, oldStyle);  }}}) }}) }}) }}) }}) }});}Effect.SlideDown = function(element) {  element = $(element);  Element.cleanWhitespace(element);  // SlideDown need to have the content of the element wrapped in a container element with fixed height!  var oldInnerBottom = Element.getStyle(element.firstChild, 'bottom');  var elementDimensions = Element.getDimensions(element);  return new Effect.Scale(element, 100, Object.extend({     scaleContent: false,     scaleX: false,     scaleFrom: 0,    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},    restoreAfterFinish: true,    afterSetup: function(effect) { with(Element) {      makePositioned(effect.element);      makePositioned(effect.element.firstChild);      if(window.opera) setStyle(effect.element, {top: ''});      makeClipping(effect.element);      setStyle(effect.element, {height: '0px'});      show(element); }},    afterUpdateInternal: function(effect) { with(Element) {      setStyle(effect.element.firstChild, {bottom:        (effect.dims[0] - effect.element.clientHeight) + 'px' }); }},    afterFinishInternal: function(effect) { with(Element) {      undoClipping(effect.element);       undoPositioned(effect.element.firstChild);      undoPositioned(effect.element);      setStyle(effect.element.firstChild, {bottom: oldInnerBottom}); }}    }, arguments[1] || {})  );}  Effect.SlideUp = function(element) {  element = $(element);  Element.cleanWhitespace(element);  var oldInnerBottom = Element.getStyle(element.firstChild, 'bottom');  return new Effect.Scale(element, 0,    Object.extend({ scaleContent: false,     scaleX: false,     scaleMode: 'box',    scaleFrom: 100,    restoreAfterFinish: true,    beforeStartInternal: function(effect) { with(Element) {      makePositioned(effect.element);      makePositioned(effect.element.firstChild);      if(window.opera) setStyle(effect.element, {top: ''});      makeClipping(effect.element);      show(element); }},      afterUpdateInternal: function(effect) { with(Element) {      setStyle(effect.element.firstChild, {bottom:        (effect.dims[0] - effect.element.clientHeight) + 'px' }); }},    afterFinishInternal: function(effect) { with(Element) {        [hide, undoClipping].call(effect.element);         undoPositioned(effect.element.firstChild);        undoPositioned(effect.element);        setStyle(effect.element.firstChild, {bottom: oldInnerBottom}); }}   }, arguments[1] || {})  );}// Bug in opera makes the TD containing this element expand for a instance after finish Effect.Squish = function(element) {  return new Effect.Scale(element, window.opera ? 1 : 0,     { restoreAfterFinish: true,      beforeSetup: function(effect) { with(Element) {        makeClipping(effect.element); }},        afterFinishInternal: function(effect) { with(Element) {        hide(effect.element);         undoClipping(effect.element); }}  });}Effect.Grow = function(element) {  element = $(element);  var options = Object.extend({    direction: 'center',    moveTransistion: Effect.Transitions.sinoidal,    scaleTransition: Effect.Transitions.sinoidal,    opacityTransition: Effect.Transitions.full  }, arguments[1] || {});  var oldStyle = {    top: element.style.top,    left: element.style.left,    height: element.style.height,    width: element.style.width,    opacity: Element.getInlineOpacity(element) };  var dims = Element.getDimensions(element);      var initialMoveX, initialMoveY;  var moveX, moveY;    switch (options.direction) {    case 'top-left':      initialMoveX = initialMoveY = moveX = moveY = 0;       break;    case 'top-right':      initialMoveX = dims.width;      initialMoveY = moveY = 0;      moveX = -dims.width;      break;    case 'bottom-left':      initialMoveX = moveX = 0;      initialMoveY = dims.height;      moveY = -dims.height;      break;    case 'bottom-right':      initialMoveX = dims.width;      initialMoveY = dims.height;      moveX = -dims.width;      moveY = -dims.height;      break;    case 'center':      initialMoveX = dims.width / 2;      initialMoveY = dims.height / 2;      moveX = -dims.width / 2;      moveY = -dims.height / 2;      break;  }    return new Effect.MoveBy(element, initialMoveY, initialMoveX, {     duration: 0.01,     beforeSetup: function(effect) { with(Element) {      hide(effect.element);      makeClipping(effect.element);      makePositioned(effect.element);    }},    afterFinishInternal: function(effect) {      new Effect.Parallel(        [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }),          new Effect.MoveBy(effect.element, moveY, moveX, { sync: true, transition: options.moveTransition }),          new Effect.Scale(effect.element, 100, {            scaleMode: { originalHeight: dims.height, originalWidth: dims.width },             sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true})        ], Object.extend({             beforeSetup: function(effect) { with(Element) {               setStyle(effect.effects[0].element, {height: '0px'});               show(effect.effects[0].element); }},             afterFinishInternal: function(effect) { with(Element) {               [undoClipping, undoPositioned].call(effect.effects[0].element);                setStyle(effect.effects[0].element, oldStyle); }}           }, options)      )    }  });}Effect.Shrink = function(element) {  element = $(element);  var options = Object.extend({    direction: 'center',    moveTransistion: Effect.Transitions.sinoidal,    scaleTransition: Effect.Transitions.sinoidal,    opacityTransition: Effect.Transitions.none  }, arguments[1] || {});  var oldStyle = {    top: element.style.top,    left: element.style.left,    height: element.style.height,    width: element.style.width,    opacity: Element.getInlineOpacity(element) };  var dims = Element.getDimensions(element);  var moveX, moveY;    switch (options.direction) {    case 'top-left':      moveX = moveY = 0;      break;    case 'top-right':      moveX = dims.width;      moveY = 0;      break;    case 'bottom-left':      moveX = 0;      moveY = dims.height;      break;    case 'bottom-right':      moveX = dims.width;      moveY = dims.height;      break;    case 'center':        moveX = dims.width / 2;      moveY = dims.height / 2;      break;  }    return new Effect.Parallel(    [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }),      new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}),      new Effect.MoveBy(element, moveY, moveX, { sync: true, transition: options.moveTransition })    ], Object.extend({                     beforeStartInternal: function(effect) { with(Element) {           [makePositioned, makeClipping].call(effect.effects[0].element) }},         afterFinishInternal: function(effect) { with(Element) {           [hide, undoClipping, undoPositioned].call(effect.effects[0].element);           setStyle(effect.effects[0].element, oldStyle); }}       }, options)  );}Effect.Pulsate = function(element) {  element = $(element);  var options    = arguments[1] || {};  var oldOpacity = Element.getInlineOpacity(element);  var transition = options.transition || Effect.Transitions.sinoidal;  var reverser   = function(pos){ return transition(1-Effect.Transitions.pulse(pos)) };  reverser.bind(transition);  return new Effect.Opacity(element,     Object.extend(Object.extend({  duration: 3.0, from: 0,      afterFinishInternal: function(effect) { Element.setStyle(effect.element, {opacity: oldOpacity}); }    }, options), {transition: reverser}));}Effect.Fold = function(element) {  element = $(element);  var oldStyle = {    top: element.style.top,    left: element.style.left,    width: element.style.width,    height: element.style.height };  Element.makeClipping(element);  return new Effect.Scale(element, 5, Object.extend({       scaleContent: false,    scaleX: false,    afterFinishInternal: function(effect) {    new Effect.Scale(element, 1, {       scaleContent: false,       scaleY: false,      afterFinishInternal: function(effect) { with(Element) {        [hide, undoClipping].call(effect.element);         setStyle(effect.element, oldStyle);      }} });  }}, arguments[1] || {}));}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -