2015-09-25 2 views
0

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

это мой JQuery код:

$('#m-portfolio .slick-slide').each(function(){ 
    var $item = $(this), 
     img  = $item.find('.m-p-view').attr('data-lazyload'), 
     bg  = $item.find('.m-p-view').attr('data-bg'); 

    $item.find('div.slice').css('background-image', 'url(' + img + ')'); 
    $item.find('.m-p-view').css('background-image', 'url(' + bg + ')');  
}); 

ответ

1
$(function() { 
    $('#m-portfolio .slick-slide').each(function (i, item) { 
     var $item = $(this).hide(), 
      $mpview = $item.find('.m-p-view'), 
      $slice = $item.find('.slice'), 
      img = $mpview.attr('data-lazyload'), 
      bg = $mpview.attr('data-bg'); 
     $('<img src="' + img + '" />').load(function() { 
      $slice.css('background-image', 'url(' + img + ')'); 
      $('<img src="' + bg + '" />').load(function() { 
       $mpview.css('background-image', 'url(' + bg + ')').parent('.slick-slide').delay(i + '000').fadeIn(); 
      }); 
     }); 
    }); 
}); 
+0

что срез DIV? Является ли изображение предварительного просмотра более крупным? Не совсем. Оба они - фоновые фоны. Один div является верхним, чем другой. Когда я нажимаю на верхнюю, он складывается, как бумага, и появляется нижний фон. Теперь проблема в другом. У меня есть, например, 10 таких элементов с одинаковыми классами, и из-за этого я использовал 'each', и я не хочу, чтобы они сразу загружались вместе. – Afshin

+0

Спасибо. Не совсем, но это как-то то, что мне нужно. Я буду работать над этим – Afshin

+0

@Afshin Haghighat: с функцией 'load()' вы обязательно убедитесь, что изображение полностью загружено до его отображения, поэтому не будет мерцающего изображения. то, если вы предварительно установите '.m-p-view' в' hidden', с помощью функции fadeIn() 'вы можете заставить ее отображать один за другим в указанное время, используя' i' для увеличения каждого отдельного элемента. Это связано с тем, что рендеринг изображений еще быстрее, чем вы можете думать, по этой причине также, если вы 'load()' все изображения не увидите реального эффекта один за другим, который можно достичь с эффектом затухания. –

Смежные вопросы