Клик по #page без сдвига окна

Digdug
На сайте с 11.07.2012
Offline
119
827

Есть ссылка <a href="#page1">page</a>. Кликая на эту ссылку, окно браузера сдвигается. Как убрать сдвиг?

ДП
На сайте с 23.11.2009
Offline
203
#1

А что должно происходить при клике?

Как бы там в ссылке и прописано, чтобы окно смещалось к элементу с id=page1 или name=page1

AlexStep
На сайте с 23.03.2009
Offline
354
#2
Digdug:
окно браузера сдвигается

Окно браузера или содержимое страницы?

Digdug
На сайте с 11.07.2012
Offline
119
#3
AlexStep:
Окно браузера или содержимое страницы?

Содержимое страницы резко поднимается до самого верха (точнее до уровня #page). Вот думаю, как это убрать.

dma84
На сайте с 21.04.2009
Offline
168
#4

самый простой способ onclick="return false"

Если есть обработчик на этой ссылке, то внутри него e.preventDefault()

Digdug
На сайте с 11.07.2012
Offline
119
#5
dma84:
самый простой способ onclick="return false"
Если есть обработчик на этой ссылке, то внутри него e.preventDefault()

Не работает так, пробовал. Объясню, что хочу)

У меня есть block1, кликнув по ссылке, block1 меняет стиль на display:block. Короче говоря, типичный спойлер, выполненный через target в css. Все работает нормально, все открывается... но вот раздражает то, что скачет содержимое окна. Через js пробовал делать такой трюк, там все нормально, но тогда возникает проблема с ajax.

Samail
На сайте с 10.05.2007
Offline
361
#6

Digdug, вы код этого спойлера покажите, может там href="#page1" можно заменить на что-то.

Digdug
На сайте с 11.07.2012
Offline
119
#7
Samail:
Digdug, вы код этого спойлера покажите, может там href="#page1" можно заменить на что-то.

<div class="read-more" id="post-37">

text spoiler

</div>

<a href="#post-37" id="post-id-37" class="more-link">Показать</a>

css:

.read-more { display:none; }

.read-more:target { display:block; }

dma84
На сайте с 21.04.2009
Offline
168
#8
Samail:
Digdug, вы код этого спойлера покажите, может там href="#page1" можно заменить на что-то.

Например на checkbox

Digdug
На сайте с 11.07.2012
Offline
119
#9

Целый день сидел гуглил, пробовал разные методы, вот еще раз погуглил и нашел нужное решение:


$(document).ready(function(){
$('a[href^="#"]').on('click',function (e) {
e.preventDefault();

var target = this.hash,
$target = $(target);

$('html, body').stop().animate({
'scrollTop': $target.offset().top
}, 900, 'swing', function () {
window.location.hash = target;
});
});
});

Все работает как часы!

S
На сайте с 30.09.2016
Offline
469
#10

Странно... У меня и в прежнем варианте блок нормально показывается, ничего никуда не скачет. Да и не должно, вроде бы. Не вижу причин для этого.

Ну разве что текст разворачивается и устанавливается на начало - но это вроде бы норма для удобного чтения.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий