2011-12-24 101 views
14

它似乎只發生在Chrome和Safari ..不是Firefox。我在基礎響應框架中使用它,所以我不知道如何設置高度。它似乎也沒有足夠的間距在Chrome/Safari中的圖像..同位素重疊圖像?

我該如何解決這個問題?

編輯:這是一個小提琴http://jsfiddle.net/TLjay/

的問題,那就是它似乎並沒有被顯示我有問題..所以我不知道該怎麼做的..我試過禁用一切,但同位素..所有的jQuery/CSS和它仍然縮小在Chrome/Safari中的圖像,但它在Firefox中的罰款。

而且,如果我打的「全部」下的過濾器上,伸展頁面的假設如何看待這樣可幫助在搞清楚了這一點

我得到了它與imagesLoaded工作,所以它給人足夠空間但對圖像的左側和右側的空間仍然不到哪其假設是..我的腳本如下

<script type="text/javascript"> 
    var $container = $('.isosort') 
    // initialize Isotope 
     $container.isotope({ 
      // options... 
      resizable: false, // disable normal resizing 
      layoutMode : 'fitRows', 
      animationEngine : 'best-available', 

      // set columnWidth to a percentage of container width 
      masonry: { columnWidth: $container.width()/5 } 
     }); 

     // update columnWidth on window resize 
     $(window).smartresize(function(){ 
      $container.isotope({ 
      // update columnWidth to a percentage of container width 
      masonry: { columnWidth: $container.width()/5 } 
      }); 
     }); 
     $container.imagesLoaded(function(){ 

       $container.isotope({ 
      // options... 
       }); 
     }); 

     $('#filters a').click(function(){ 
      var selector = $(this).attr('data-filter'); 
      $container.isotope({ filter: selector }); 
      return false; 
     }); 
    </script> 
+0

請將代碼添加到您的問題中。 – Abbas 2011-12-24 08:20:47

+0

@Abbas用小提琴更新了問題 – 2011-12-24 16:25:58

回答

24

更新原來的答案是錯的,因爲瀏覽器使用的緩存圖片..

問題似乎是圖像未加載,計算失敗。

如果您纏繞ISOTOP代碼$(window).load(function(){ ..... });似乎按預期工作..

http://jsfiddle.net/TLjay/2/


不知道爲什麼會發生,但一個簡單的解決方法是( 因爲它得到一旦您調整窗口大小)手動調用 resize

所以只是增加 $(window).resize();在你的代碼的最後修復它..在 http://jsfiddle.net/TLjay/1/

+3

使用包含的[imagesLoaded插件](http://isotope.metafizzy.co/docs/help.html#images)會更好。 – thirtydot 2011-12-24 16:48:14

+0

@thirtydot,true ..我不是非常*親密*與'同位素插件.. – 2011-12-24 18:26:20

+0

@thirtydot更新的主要文章與imagesLoaded,但水溝仍然薄如何修復該部分? – 2011-12-24 22:04:48

7

imagesLoaded通過檢查包含元素中當前的圖像來工作。所以在你的情況下,它實際上並沒有在$(window).load()中做任何事情,因爲該元素中沒有任何項目。相反,我會建議在使用$ .ajax.success插入項目後再次觸發imagesLoaded。

success: function(data){ 
    // Update isotope container with new data. 
    $container.isotope('remove', $container.data('isotope').$allAtoms) 
    $container.isotope('insert', $(data)) 
     // trigger isotope again after images have been loaded 
     .imagesLoaded(function() { 
     $container.isotope('reLayout'); 
     }); 
    } 
}); 
+1

好主意在圖像加載後再次調用重新佈局。這對我有用! – gray 2014-01-31 11:26:19

+0

嗨,我遇到了同樣的問題,所以我想試試你的解決方案,但我不確定在哪裏放置代碼。在使用ImagesLoaded的代碼之後? – 2014-03-28 21:58:35

+0

在你的jquery ajax調用添加此代碼,如下所示:$阿賈克斯({ 緩存:假,網址:getQuery, 成功:功能(數據){ $ container.append(申報單).isotope(」所附」,div的,功能(){ $ container.isotope( '重新佈局'); }); 如果(stButtons){stButtons.locateElements();} } }); – 2014-03-31 08:12:23