JQuery Fade эффекты на отдельные элементы на нагрузке

Во-первых, я не веб-дизайнер, я просто выродок, пытающийся помочь другу.

Я работаю над графическим веб-сайтом (это веб-сайт с фотографиями), который заставляет страницу загружаться медленно. Самая большая задержка - это миниатюры портфолио, которые обычно скрываются ползунком jquery. Поскольку страница может отображаться неправильно до завершения загрузки (и это выглядит странно), я реализовал загрузочную графику, которая исчезает на $(window).load(), Но так как это ожидает загрузки всей графики, эта графическая загрузка может вращаться в течение 10 секунд или более перед отображением страницы (в зависимости от пропускной способности).

То, что я хочу сделать, это отображать отдельные элементы с симпатичными эффектами jquery по мере их загрузки. Таким образом, зритель может сразу начать видеть контент, и он по-прежнему выглядит красиво.

Поэтому я установил некоторые элементы display:none а затем позвоните fadeIn() и / или slideDown() функция на это в конце моей страницы. Это работает, но иногда fadeIn() Функция запускается до полной загрузки графики, поэтому они все еще появляются. Но если я попытаюсь обернуть fadeIn() функция внутри ('#element').load() это не работает Я могу поместить все эффекты затухания в window.load(), который выглядит красиво, но это побеждает цель, так как он все еще ждет на всех этих миниатюрах.

В качестве альтернативы, если есть способ исключить определенные изображения из window.load() событие? Или добавить галерею миниатюр динамически после window.load()? Прямо сейчас страница довольно статична, просто несколько симпатичных слайдеров jquery и лайтбокс.

Я использую jQuery 1.9.1 из Google. Если есть другой или лучший способ сделать страницу красивой, я весь в ушах.

URL тестового сайта находится здесь. Мое видение, которое я хотел бы видеть, это отобразить фон и загрузить графику, а затем slideDown() логотип с последующим fadeIn() в рамке рисунка удалите загрузочную графику, затемните содержимое рамки рисунка, затем исчезните в нижнем навигационном меню, двигаясь вниз по левому навигационному меню.

(редактировать)
Вот более подробное описание проблемы, которую я пытаюсь обойти. Если загрузка всей страницы занимает 10 секунд:
@ 1 секунда, все мое текстовое содержимое отображается в виде блока и выглядит как плохо спроектированный проект 8-го класса с 1995 года.
@ 2-5 секунд document.ready() fires и скрипт слайдера заканчивают анализ страницы и перемещают элементы контейнера текстового содержимого на место очень нервным и уродливым способом. Теперь макет выглядит хорошо.
@ 10 секунд, наконец, миниатюры завершают загрузку и window.load() пожары.

Мой текущий обходной путь начинает исчезать в элементах контейнера после завершения сценария слайдера, но некоторые из этих элементов, возможно, не завершили загрузку, и поэтому иногда они появляются вместо появления.

1 ответ

Какая часть вашего вопроса сводится к проверке для каждого img загрузить и затем добавить соответствующий элемент вместо того, чтобы делать их все сразу.

Например:

$("img").load(function() {
   $(this).fadeIn(1000);
}).each(function() {
   if(this.complete) $(this).load();
});

Вы можете найти рабочий пример этой реализации ЗДЕСЬ.

Другие вопросы по тегам