Анимация AJAX загрузки. Эффект размытия.

Давно хотел сделать так, чтобы при загрузке информации в какой-либо блок (к примеру, AJAX-ом) помимо обычного прелоадера сам блок бы еще размывался.

Собственно пример можно посмотреть здесь: https://jsfiddle.net/va61mk5t/1/

HTML:

<button onclick="start_stop_animation('.text_block');">Запустить/Остановить анимацию загрузки</button>

<div class='text_block'>
  Художественный стиль не был бы самим собой, если бы в нем не было сравнений. Художественный стиль не был бы самим собой, если бы в нем не было сравнений. Художественный стиль не был бы самим собой, если бы в нем не было сравнений. Художественный стиль не был бы самим собой, если бы в нем не было сравнений. Художественный стиль не был бы самим собой, если бы в нем не было сравнений. Художественный стиль не был бы самим собой, если бы в нем не было сравнений. Художественный стиль не был бы самим собой, если бы в нем не было сравнений. Художественный стиль не был бы самим собой, если бы в нем не было сравнений. Художественный стиль не был бы самим собой, если бы в нем не было сравнений. Художественный стиль не был бы самим собой, если бы в нем не было сравнений. Художественный стиль не был бы самим собой, если бы в нем не было сравнений. Художественный стиль не был бы самим собой, если бы в нем не было сравнений. 
</div>

<div>
  Какой то текстовый блок дальше...
</div>

JS:

function loading_animation_start(block){
	$(block).wrap( '<div class="main_overlay_block"></div>' );
  $('.main_overlay_block').prepend('<div class="overlay_block"></div>');
  $(block).addClass('loading_process');
}

function loading_animation_end(block){
  $(block).unwrap();
  $('.overlay_block').remove();
  $(block).removeClass('loading_process');
}

function start_stop_animation(block){
	if ($(block).parent().is('.main_overlay_block')){
  	loading_animation_end(block);
  } else {
  	loading_animation_start(block);
  }
}

CSS:

.overlay_block{
  position: absolute;
  width: 100%;
  height: 100%;
  background: url(https://web-finder.ru/files/preloader1.gif) center center no-repeat;
  z-index: 9999;
}

.loading_process{
  -webkit-filter: blur(5px);
  -moz-filter: blur(5px);
  filter: blur(5px);
}

.main_overlay_block{
  position: relative;
}

Для отображения анимации производятся следующие манипуляции:

  • создаётся родительский дивник
  • в него prepend-ом пихается дивник оверлея с картинкой-прелоадером по центру
  • сам блок blur-ится (размывается)

Когда необходимо отключить анимацию загрузки — производим всё в точности наоборот:

  • родительский дивник убиваем
  • дивник оверлея убиваем
  • размытие убираем