#javascript #hash #scroll
#javascript #хэш #прокрутите
Вопрос:
У меня есть фиксированный div в верхней части моей страницы и список ссылок немного дальше по странице. Пользователь может щелкнуть ссылку, которая запускает onclick:
function setOffset(){
location.hash = offset; //where offset is some number I want as the hash
scrollTo(0, 40);
}
Чего я хочу, так это перейти к хэшированной ссылке, затем прокрутить еще 40, чтобы вывести элемент в поле зрения из-под фиксированного div. Проблема в том, что scrollTo переходит к началу страницы и уничтожает хэш. У кого-нибудь есть какие-нибудь идеи?
Ответ №1:
http://www.w3schools.com/jsref/met_win_scrollto.asp
scrollTo(xPos, yPos)
Итак, в вашем коде:
scrollTo(0, 40);
говорит о необходимости прокрутки до x-позиции 0 (которая находится слева) и y-позиции 40 (которая находится на 40 пикселей вниз от вершины). Вам нужно будет вычислить позицию вашего хэша, затем добавить к нему 40, чтобы прокрутить дополнительные 40 пикселей. Я полагаю, вы можете получить положение элемента на своей странице с помощью его свойства offsetTop.
HTH.
Редактировать: Похоже, в вашем примере у вас уже есть смещение, которое, как я предполагаю, является смещением элемента, до которого вы пытаетесь прокрутить, поэтому ваш код будет выглядеть следующим образом:
function setOffset(){
scrollTo(0,offset 40);
}
Комментарии:
1. К сожалению, смещение является уникальным идентификатором, но offsetTop, похоже, именно то, что мне нужно. Спасибо!
2. не проблема, мне пришлось много редактировать этот ответ, так как для меня сейчас раннее утро (я еще не пил кофе), поэтому извините, если возникла какая-либо путаница.
3. @Vidas Спасибо за ссылку, но в контексте этого вопроса я считаю, что ссылка на школы W3 предоставляет ценную информацию, в будущем, прежде чем использовать ее в качестве ссылки, я буду ссылаться на вашу ссылку. Отличная информация!:)