【发布时间】:2021-12-24 03:55:41
【问题描述】:
为什么使用 Packery 时 Isotope 中的网格项会垂直重叠?
是因为它们的大小是动态的吗?即,每个 Twitter 提要项在加载后可以有不同的大小?
或者我打电话给imagesLoaded 或Packery 的方式有什么问题?
我无法让代码 sn-p 在 SO 上工作,所以这是一个小提琴 https://jsfiddle.net/e9bdjf3z/1/
jQuery
$( document ).ready(function() {
var $grid = $('.grid').imagesLoaded( function() {
$('.grid').packery({
itemSelector: '.grid-item',
rowHeight: 400,
});
});
});
CSS
/* clear fix */
.grid:after {
content: '';
display: block;
clear: both;
}
.grid-item {
float: left;
width: 300px;
height: 400px;
}
.widget-div {
border: 1px solid #c2c2c2;
}
HTML
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script async src="https://platform.twitter.com/widgets.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.isotope/3.0.6/isotope.pkgd.min.js" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/packery/2.1.2/packery.pkgd.min.js" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdn.jsdelivr.net/npm/isotope-packery@2.0.1/packery-mode.min.js"></script>
<script src="https://unpkg.com/imagesloaded@4/imagesloaded.pkgd.min.js"></script>
<div class="grid">
<div class="grid-item">
<div class="widget-div">
<div class="text-div">1<br />
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</div>
<div class="twitter-div">
<a class="twitter-timeline" data-width="300" data-height="400" data-theme="light"
data-tweet-limit="1" data-chrome="transparent nofooter noheader noborders" href="https://twitter.com/TheEconomist?ref_src=twsrc%5Etfw">Tweets</a>
</div>
</div>
</div>
<div class="grid-item">
<div class="widget-div">
<div class="text-div">2<br />
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</div>
<div class="twitter-div">
<a class="twitter-timeline" data-width="300" data-height="400" data-theme="light"
data-tweet-limit="1" data-chrome="transparent nofooter noheader noborders" href="https://twitter.com/nytimes?ref_src=twsrc%5Etfw">Tweets</a>
</div>
</div>
</div>
<div class="grid-item">
<div class="widget-div">
<div class="text-div">3<br />
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</div>
<div class="twitter-div">
<a class="twitter-timeline" data-width="300" data-height="400" data-theme="light"
data-tweet-limit="1" data-chrome="transparent nofooter noheader noborders" href="https://twitter.com/washingtonpost?ref_src=twsrc%5Etfw">Tweets</a>
</div>
</div>
</div>
<div class="grid-item">
<div class="widget-div">
<div class="text-div">4<br />
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</div>
<div class="twitter-div">
<a class="twitter-timeline" data-width="300" data-height="400" data-theme="light"
data-tweet-limit="1" data-chrome="transparent nofooter noheader noborders" href="https://twitter.com/sfchronicle?ref_src=twsrc%5Etfw">Tweets</a>
</div>
</div>
</div>
<div class="grid-item">
<div class="widget-div">
<div class="text-div">5<br />
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</div>
<div class="twitter-div">
<a class="twitter-timeline" data-width="300" data-height="400" data-theme="light"
data-tweet-limit="1" data-chrome="transparent nofooter noheader noborders" href="https://twitter.com/latimes?ref_src=twsrc%5Etfw">Tweets</a>
</div>
</div>
</div>
<div class="grid-item">
<div class="widget-div">
<div class="text-div">6<br />
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</div>
<div class="twitter-div">
<a class="twitter-timeline" data-width="300" data-height="400" data-theme="light"
data-tweet-limit="1" data-chrome="transparent nofooter noheader noborders" href="https://twitter.com/ch?ref_src=twsrc%5Etfw">Tweets</a>
</div>
</div>
</div>
<div class="grid-item">
<div class="widget-div">
<div class="text-div">7<br />
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</div>
<div class="twitter-div">
<a class="twitter-timeline" data-width="300" data-height="400" data-theme="light"
data-tweet-limit="1" data-chrome="transparent nofooter noheader noborders" href="https://twitter.com/seattletimes?ref_src=twsrc%5Etfw">Tweets</a>
</div>
</div>
</div>
<div class="grid-item">
<div class="widget-div">
<div class="text-div">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</div>
<div class="twitter-div">
<a class="twitter-timeline" data-width="300" data-height="400" data-theme="light"
data-tweet-limit="1" data-chrome="transparent nofooter noheader noborders" href="https://twitter.com/portlandorbuzz?ref_src=twsrc%5Etfw">Tweets</a>
</div>
</div>
</div>
<div class="grid-item">
<div class="widget-div">
<div class="text-div">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</div>
<div class="twitter-div">
<a class="twitter-timeline" data-width="300" data-height="400" data-theme="light"
data-tweet-limit="1" data-chrome="transparent nofooter noheader noborders" href="https://twitter.com/miaminewsnow?ref_src=twsrc%5Etfw">Tweets</a>
</div>
</div>
</div>
<div class="grid-item">
<div class="widget-div">
<div class="text-div">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</div>
<div class="twitter-div">
<a class="twitter-timeline" data-width="300" data-height="400" data-theme="light"
data-tweet-limit="1" data-chrome="transparent nofooter noheader noborders" href="https://twitter.com/AtlNewsNow?ref_src=twsrc%5Etfw">Tweets</a>
</div>
</div>
</div>
</div>
</div>
【问题讨论】:
标签: jquery jquery-isotope packery