Outoverlay
@Outoverlay

Как создать эквивалентную функцию fadeOut jQuery?

Смотрел исходники jQuery, там очень много кода, начиная fadeOut: { opacity: "hide" },
заканчивая jquery.speed и jquery.animation. Попробовал создать что-то по своей логике - Вышло:

function fadeOut(time){
var opacity,
timelength = '' + time,
i;
d='';
for( var i = 0; i <= timelength.length-2; i++ ){
d+='0';
}
s = timelength.substring(0,1);
timez = s + d;
console.log(timez);
timeOne = '0.'+d+'1';
timec = '0.'+time;
timelength = timelength.length;

each(function(){
ele = this;
setInterval(function(){
opacity = getComputedStyle(ele).opacity;
if(opacity == 0){
ele.style.opacity = 'none';
ele.style.display = 'none';
return ele;
}else{
ele.style.opacity = opacity - timeOne;
}
}, time);

});
}

Проблема в скорости срабатывания работает не по времени.
  • Вопрос задан
  • 334 просмотра
Пригласить эксперта
Ответы на вопрос 2
twobomb
@twobomb
Вот я сделал свой fadeOut посмотри может понравится
https://jsfiddle.net/6g8u0qsw/4/
Ответ написан
@sergeystepanov1988
По принципу FadeIn предложенный на сайте You Might Not Need JQuery
function fadeIn(el) {
  el.style.opacity = 0;

  var last = +new Date();
  var tick = function() {
    el.style.opacity = +el.style.opacity + (new Date() - last) / 400;
    last = +new Date();

    if (+el.style.opacity < 1) {
      (window.requestAnimationFrame && requestAnimationFrame(tick)) || setTimeout(tick, 16)
    }
  };

  tick();
}

fadeIn(el);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы