#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, чтобы исключить это.