我对 Masonry 有一个独特的问题,我希望得到一些帮助。因为我是通过 Typekit 从外部加载字体,所以我必须在 window.load 而不是 document.ready 中包含 Masonry 代码(有必要在 Masonry 加载之前加载字体,因为否则行长不同,所以绝对定位会搞砸来源)。我还需要直接链接到 Masonry 组中的部分(作为页面中的锚点)。将这两件事结合起来的问题是,如果您使用 window.load 则在页面加载时锚点不存在,因此链接会指向 Masonry 部分的顶部,而不是 Masonry 部分中带有链接的特定部分。关于如何纠正这个问题的任何想法?最简单的解决方案是让代码工作而不必求助于 window.load。不幸的是,我无法找到替代方案。任何帮助都是极好的。
问问题
822 次
1 回答
1
- 使用Typekit 字体事件触发砌体有/没有加载字体
- 捕获任何散列并使用 $(window).load() 强制滚动到它们
var $container;
function triggerMasonry() {
// don't proceed if doc not ready
if ( !$container ) {
return
}
$container.masonry({
// options...
});
}
$(function(){
$container = $('#container');
triggerMasonry();
});
// trigger masonry after fonts have loaded
Typekit.load({
active: triggerMasonry,
inactive: triggerMasonry // triggered in Chrome
});
// catch any hashes and force scroll to them
// resolves Masonry bug
var $window = $(window);
$window.load(function(){
if ( window.location.hash ) {
var destination = $( window.location.hash ).offset().top;
$window.scrollTop( destination );
}
});
于 2011-09-27T12:13:47.910 回答