Прокрутка окна браузера / фокусировка на #section-ссылке на статическом сайте Jekyll

#html #navigation #jekyll #static-site

#HTML #навигация #jekyll #статический сайт

Вопрос:

Я веду свой собственный маленький блог, используя Jekyll Github. Я использую kramdown в качестве движка, и я хотел бы воспользоваться этой {:toc} функцией для создания простой таблицы содержимого со ссылками. Список ссылок генерируется отлично, но если я нажимаю на ссылку, окно моего браузера не переходит к этой части сообщения, но моя адресная строка обновляется правильно. Конечным результатом является то, что я мог бы получить URL-адрес раздела в самом низу сообщения, но мне все равно нужно было бы вручную прокрутить его до конца, чтобы прочитать его.

Я проверил это в некоторых других сообщениях в блоге на моем сайте, вручную введя полный mysite.com/blog/post/#section и получил тот же результат (приемлемый URL-адрес, но не отображается / не перемещается в раздел). Я также проверил на 2 мобильных устройствах и другом компьютере — все то же самое.

Я полагаю, что это как-то связано с HTML / CSS или, возможно, мне нужен какой-то плагин jQuery. Это мои догадки после некоторого бесплодного поиска в Google. Я думаю, что мне не хватает некоторой терминологии или базового понимания, которые мешают мне правильно устранять неполадки самостоятельно.

Кто-нибудь может указать мне правильное направление?

Спасибо!

Ответ №1:

Кажется, что ваши ссылки работают (фрагмент изменяется в URL), но они нигде не ссылаются (ничего не происходит при изменении URL).

Рассмотрим ссылку на нижний колонтитул:

 <a href="#my-footer">Go to footer</a>
  

Нажатие на это изменит ваш URL на суффикс #my-footer , но ничего не сделает без:

 <footer id="my-footer">...</footer>
  

Итак, я бы сказал, что вам не хватает id атрибутов вещей, на которые вы хотите ссылаться. Вам не понадобится никакой JavaScript, включая jQuery.

Обязательно используйте инструменты проверки браузера или просмотр источника, чтобы увидеть id , что значение соответствует тому, на что вы ссылаетесь.

Дополнительная информация о ссылках на фрагменты: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#Linking_to_an_element_on_the_same_page


Если id атрибутов там нет, дважды проверьте свои _config.yml kramdown настройки — в частности auto_ids :

 kramdown:
  auto_ids: true
  

На момент написания этой статьи значение Kramdown в Jekyll установлено auto_ids: true по умолчанию:

Вот полный список поддерживаемых параметров Kramdown: https://jekyllrb.com/docs/configuration/markdown /

Комментарии:

1. Это отличная информация, и я узнал совсем немного — спасибо @Ross. Я проверил страницы, и они кажутся правильными. Я также заметил, что если я открою любую ссылку на новой вкладке, эта страница будет правильно загружаться с заголовком раздела в верхней части окна браузера. Я все еще не понимаю, почему мой браузер не прокручивается до привязки, но это отличное начало в правильном направлении.

2. Еще одна распространенная ошибка здесь — это что-то еще, одновременно захватывающее фокус. Я заметил это особенно с autofocus элементом формы — страница загружается с фрагментом, прокручивается до него, но затем прокручивается до <input autofocus...> элемента. Потенциально может быть прослушиватель щелчков JavaScript, блокирующий распространение этого события — вы можете попробовать отключить JavaScript, чтобы исключить это.