Обновление background-image на jQuery

~
На сайте с 04.07.2006
Offline
82
1121

Суть драмы: берем div и делаем ему: $("#mydiv").css("background-image", "http://ляляля.jpg"); Картинка будет загружена асинхронно, и если она большая - то это может занять ощутимое время. Хотелось бы на это время показывать gif-крутилку, но проблема в том, что как я понял, завершение асинхронной загрузки нельзя похендлить. Как бы вы решили эту проблему?

dkameleon
На сайте с 09.12.2005
Offline
386
#1
~DEN~:
Как бы вы решили эту проблему?

расположил бы в другом блоке, бекграундом которому и поставил бы гифку.

---------- Добавлено 02.08.2013 в 04:28 ----------

а почему вы решили, что загрузка простых имаджей яваскриптом синхронная?

делаете объект имадж, у него есть событие онлоад.

присваиваете срц, показываете крутилку.

в онлоад заменяете крутилку на картинку.

---------- Добавлено 02.08.2013 в 04:30 ----------

а ещё можно попробовать с несколькими бекграундами.

прелоадер загрузится первым.

картинка его по идее перекроет.

Дизайн интерьера (http://balabukha.com/)
~
На сайте с 04.07.2006
Offline
82
#2
dkameleon:
а почему вы решили, что загрузка простых имаджей яваскриптом синхронная?

А я этого и не говорил ;) Но ваша мысль про Image натолкнула меня на определенный гуглеж, и я нашел то, что вы, собственно, далее и предлагали:

http://stackoverflow.com/questions/9790347/set-an-image-object-as-a-div-background-image-using-javascript

Пока что это решение мне нравится больше всего. И я правильно понимаю, что в js background-image можно задать только CSS-свойством, ну то есть что его нельзя задать напрямую инстанцом Image?

IL
На сайте с 20.04.2007
Offline
435
#3
~DEN~:
в js background-image можно задать только CSS-свойством, ну то есть что его нельзя задать напрямую инстанцом Image?

Пробовал перечитать несколько раз.

background-image - это и есть CSS-свойство.

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
PN
На сайте с 01.05.2008
Offline
113
#4

Попробуй другое решение. Проще: Ставиь бакграунд для дивов всех (в которые потом будет догружен новый бекграунд)

Или типа <div class="load_icon"><div class="bkgX"></div></div> И к load_icon пропиши бекграунд картинку ЛОАДИНГ.

Brand from Amber
На сайте с 18.08.2007
Offline
293
#5

Потёрто. Тут всё уже сказано: /ru/forum/comment/12008480

Лучший способ понять что-то самому - объяснить это другому.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий