Приведённый вами пример реализации lazy load является самым базовым: если вы сами попробуете написать отложенную загрузку, то после отладки ваш код будет выглядеть почти так же; это минимальный функционал, необходимый для lazy load. А для мягкости и эффектов вам и правда достаточно будет CSS, мне кажется.
А у этого плагина, например, прямо в мануале написано, как можно использовать сторонние инструменты типа animate.css для реализации красивых анимашек. Даже демка есть.
Ильдар Гизетдинов: другие возможные варианты я уже описал выше и я ни разу не говорил что вижу какой-то смысл их использовать. К тому же как раз об этом я и веду речь - о том, что незачем использовать xhr, когда есть более просто способ на данный момент.
iBird Rose: для отложенной загрузки изображений существует не так уж много вариантов: загрузка бинарных данных, загрузка base64 и переопределение src с эксплуатацией load событий. Вы о чем, о загрузке blob?
Roquefort: в качестве примера выполните в консоли console.log('test'); a = 1; b = 2; c = 3;. Сначала console.log выведет 'test', а потом сама консоль выведет последнее вернувшееся значение, 3.
Log это метод объекта console, да. Он выводит в консоль все что вы ему передали в аргументах и возвращает undefined. Первая строка вывода это собственно вывод в консоль, функционал console.log. Вторая строка это вывод в консоль обусловленный окружением - выводится последнее значение.
То есть если выполнить в консоли console.log('hello, world'); то сначала выведется 'hello, world', а потом консоль выведет последнее значение, undefined.