1

我使用slick.js旋轉木馬以及內置的延遲加載功能來顯示全屏圖像庫。我遇到的一個問題是,懶惰的加載程序只能使用img標籤顯示,所以我無法應用background-size:cover,並且我不想通過使用js插件使其變成全屏來矯正它。有沒有人有任何想法?使用slick.js旋轉木馬和懶加載程序來顯示全屏圖像旋轉木馬

+1

如果您提供了一些代碼[和一個小提琴],我可以嘗試幫助你。 – TheWanderingMind

+0

謝謝@BishopBarber。這裏有一個jsbin http://jsbin.com/yijiyuyekidu/1/edit?html,css,js輸出我希望這可以幫助! –

回答

1

你真的應該使用img標籤。您不能在div標籤上使用延遲加載,因爲浮油只會將延遲加載效果添加到屬性集的data-lazy標籤。從plugin's source

$('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading'); 

所有你需要做的就是把每個img標籤在div標籤:

<div class="a-slide"> 
    <img data-lazy="http://lorempixel.com/800/800/animals/"/> 
</div> 

然後,就像你一樣,設定你的htmlbodydiv將高度和寬度標記爲100%。但是,不要忘了把你的img標籤的高度和寬度也設爲100%,因爲現在你擁有了它們。此外,你甚至不需要background-size:cover。但是,如果您希望圖像不會失去太多質量,請使用object-fit: cover;。你的CSS將類似於此:

html{ 
    height: 100%; 
    min-height: 100%; 
} 

body{ 
    height: inherit; 
    width: inherit; 
    margin: 0; 
    padding: 0; 
    overflow: hidden; 
} 

.a-slide{ 
    height: inherit; 
    width: inherit; 
} 

.a-slide img { 
    height: inherit; 
    width: inherit; 
    object-fit: cover; /* This is a new property that can be used on img tags */ 
} 

然後調用光滑的插件,你必須與lazyLoad設置設爲ondemandprogressive

$('.lazy-slick').slick({ 
    lazyLoad: 'ondemand' 
}); 

Working demo

如果不是完全預期的行爲,不要猶豫地說。

+0

是的,這正是我在@BishopBarber之後所做的。然而,通過使用寬度和高度,img標籤上的100%可以使圖片傾斜很多,因此我希望使用background-size:cover,因爲無論瀏覽器尺寸如何,都可以保持透視。有關如何解決這個問題的任何想法?並再次感謝您的幫助! –

+0

@FrazerFindlater'object-fit:cover;'你的'img'標籤是你最好的選擇,只有CSS。看到我的編輯 – TheWanderingMind

+0

是的,我想過使用它,但我不認爲IE9 +處理得太好。是否有任何你知道的輕量級Jquery全屏插件?我想我可能不得不妥協。 –