没有JQuery的Vanilla Javascript .fadein().fadeOut()

Vis*_*hnu 9 javascript

我正在为IE10 +开发,所以我决定不使用JQuery.我为Select,Fadein,FadeOut等编写自定义javascript函数,它工作正常.但我喜欢在JQuery样式中使用Function(Object.fadeIn(),Object.FadeOut()等).

而不是JQuery Selector我使用它.

function _(el){
    return document.getElementById(el);
}
Run Code Online (Sandbox Code Playgroud)

当我需要选择一个Dom对象时,我使用它.

var myButton = _("button");
Run Code Online (Sandbox Code Playgroud)

当我需要fadeIn或fadeOut任何对象我使用它.

function fade(type, ms, el) {
  var isIn = type === 'in',
    opacity = isIn ? 0 : 1,
    interval = 50,
    duration = ms,
    gap = interval / duration;

  if(isIn) {
    el.style.display = 'inline';
    el.style.opacity = opacity;
  }

  function func() {
    opacity = isIn ? opacity + gap : opacity - gap;
    el.style.opacity = opacity;

    if(opacity <= 0) el.style.display = 'none'
    if(opacity <= 0 || opacity >= 1) window.clearInterval(fading);
  }

  var fading = window.setInterval(func, interval);

}
Run Code Online (Sandbox Code Playgroud)

这是淡化我的按钮的具体代码

fade('out', 500, myButton);
Run Code Online (Sandbox Code Playgroud)

我喜欢这样使用 _( "myButton" ).fadeIn( 100 );

更新:诀窍是使用原型函数" - "来添加其他功能,如fadein(),fadeOut().

Amb*_*mps 8

这样就可以了:

function _(el) {
  if (!(this instanceof _)) {
    return new _(el);
  }
  this.el = document.getElementById(el);
}

_.prototype.fade = function fade(type, ms) {
  var isIn = type === 'in',
    opacity = isIn ? 0 : 1,
    interval = 50,
    duration = ms,
    gap = interval / duration,
    self = this;

  if(isIn) {
    self.el.style.display = 'inline';
    self.el.style.opacity = opacity;
  }

  function func() {
    opacity = isIn ? opacity + gap : opacity - gap;
    self.el.style.opacity = opacity;

    if(opacity <= 0) self.el.style.display = 'none'
    if(opacity <= 0 || opacity >= 1) window.clearInterval(fading);
  }

  var fading = window.setInterval(func, interval);
}

_('myButton').fade('out', 500);
Run Code Online (Sandbox Code Playgroud)

从现在开始,您可以_使用任何类似jQuery的函数扩展您的对象.