1 & 2. Ну, массивы с ключами, которые вы каждый раз перебираете, они у вас хранятся без нужды, так обычно не делают. Можно один раз перебрать, выбрать нужный ключ и его уже использовать. Суть же не в том, что циклов много и они требуют много памяти или процессорного времени; конечно можно еще сотню-другую ключей в эти массивы положить, и разница в производительности будет почти незаметна. Просто чисто теоретически все эти операции совсем ни к чему. Мой пример - фильтруете каждый из массивов, достаёте ключ, его бросаете в замыкание, функция его использует. Массивы отсеиваются gc, каждая функция выполняет свой метод, не перебирает каждый раз.
1. Массивы с ключами хранятся без всякой нужды,
2. Лишних циклов при каждом вызове можно избежать,
3. Кастомная реализация forEach будет выполняться медленнее, чем нативные аналоги,
4. Title case в JS community принято использовать для конструкторов.
Технически отступ слева тоже нельзя менять, так как в таком случае блок просто вылезает за рамки родительского контейнера. Margin это внешний отступ, а то что вы хотите всё же проще делается с помощью padding - внутреннего отступа. В случае с padding вам достаточно будет выбрать нужный отступ и применить модель border-box (box-sizing: border-box;), а в случае с margin вам придется использовать 1) статические значения ширин и отступов, или 2) использовать статические значения отступов и calc, или 3) использовать относительные размеры ширин и автоматические величины отступов.
То есть, насколько я понял, со стороны заказчика было бы логичнее не присылать мне исходный файл, а создать на его основе проект и по почте пригласить меня в этот проект как разработчика?
Никита Кит: в каком смысле "не нравится"? Мне кажется, способов реализации lazyLoad/progressiveLazyLoad и бесконечного слайдера без создания элементов не существует. Или всё таки есть варианты?
Приведённый вами пример реализации lazy load является самым базовым: если вы сами попробуете написать отложенную загрузку, то после отладки ваш код будет выглядеть почти так же; это минимальный функционал, необходимый для lazy load. А для мягкости и эффектов вам и правда достаточно будет CSS, мне кажется.
А у этого плагина, например, прямо в мануале написано, как можно использовать сторонние инструменты типа animate.css для реализации красивых анимашек. Даже демка есть.
Ильдар Гизетдинов: другие возможные варианты я уже описал выше и я ни разу не говорил что вижу какой-то смысл их использовать. К тому же как раз об этом я и веду речь - о том, что незачем использовать xhr, когда есть более просто способ на данный момент.
iBird Rose: для отложенной загрузки изображений существует не так уж много вариантов: загрузка бинарных данных, загрузка base64 и переопределение src с эксплуатацией load событий. Вы о чем, о загрузке blob?