Создание якорной ссылки в наборе масонства - PullRequest
0 голосов
/ 26 сентября 2011

У меня есть уникальная проблема с масонством, с которой мне бы хотелось помочь.Поскольку я загружаю шрифты извне через Typekit, я должен включить код Masonry в window.load вместо document.ready (Необходимо загружать шрифты до загрузки Masonry, потому что в противном случае длина строк будет разной, поэтому абсолютное позиционирование будет нарушено источник ).Мне также нужно напрямую ссылаться на разделы внутри группы масонства (как якоря на странице).Проблема с объединением этих двух вещей заключается в том, что если вы используете window.load, то при загрузке страницы якорь не существует, поэтому ссылка ведет в верхнюю часть раздела Masonry, а не в конкретный раздел в разделе Masonry со ссылкой.Есть идеи как это исправить?Самым простым решением было бы заставить код работать без необходимости прибегать к window.load.К сожалению, я не смог найти альтернативу.Любая помощь будет потрясающей.

1 Ответ

1 голос
/ 27 сентября 2011
  1. Использование Событие шрифта Typekit для запуска кладки: есть / не загружены шрифты
  2. Перехватывайте любые хэши и принудительно прокручивайте их с помощью $ (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 );
  }
});
...