Masonry 插件:调整 div 大小不会导致重新洗牌
将 Masonry 项目包裹在 1000px 宽的 div 中,我有一个按钮可以使用 jQuery 的 addClass()
将 div 大小调整为 2000x,问题是 Masonry 不会重新排列项目以填充额外的 1000px 空间,我知道调整大小之所以有效,是因为调整浏览器窗口大小会导致重新洗牌。
Masonry:
$(function(){
$('#container').masonry({
// options
itemSelector : '.item',
columnWidth : 240
});
});
按钮:
$("a.button").toggle(function(){
$(this).addClass("flip");
$("div#container").fadeOut("fast", function() {
$(this).fadeIn("fast").addClass("resize");
});
CSS:
width: 1000px; /* default */
width: 2000px !important; /* on button press */
我尝试运行 ('a')。使用相同的按钮单击 Masonry 函数,似乎工作正常但问题依然存在。
有什么建议吗?我很困惑:/
Have Masonry items wrapped in 1000px wide div, I have a button to resize the div to 2000x using jQuery's addClass()
, problem is Masonry won't reshuffle the items to fill the extra 1000px space, I know the resize works because resizing the browser window causes a reshuffle.
Masonry:
$(function(){
$('#container').masonry({
// options
itemSelector : '.item',
columnWidth : 240
});
});
Button:
$("a.button").toggle(function(){
$(this).addClass("flip");
$("div#container").fadeOut("fast", function() {
$(this).fadeIn("fast").addClass("resize");
});
CSS:
width: 1000px; /* default */
width: 2000px !important; /* on button press */
I tried running ('a').click on the Masonry function using the same button, and it seems to work normally but the problem is still there.
Any advice? I'm stumped :/
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我相信当您单击调整大小按钮时,您需要再次运行砌体函数。
I believe you need to run the masonry function agian when your re-size button is clicked.
从 http://masonry.desandro.com/methods.html#reloaditems ,调用
.masonry('reloadItems')
将抓取与itemSelector
匹配的(可能是新的)项目并重新定位砖块,但调用.masonry()
将仅根据项目的最新尺寸重新定位项目。From http://masonry.desandro.com/methods.html#reloaditems , calling
.masonry('reloadItems')
will grab (possibly new) items that matchitemSelector
and reposition the bricks, but calling.masonry()
will just reposition items based on the most recent dimensions of its items.尝试使用 jquery 触发调整大小事件:
它对我有用!
Try triggering the resize event with jquery:
It worked for me!