Я заметил, что при попытке скрыть полосу прокрутки с помощью overflow:hidden
прокручивает сайт вверху, если этот стиль CSS используется для элементов html
и body
:
html,body {
height: 100%;
}
Это код jQuery:
$('#end').click(function(){
$("html, body").css("overflow", "hidden");
});
Живая демонстрация: http://jsfiddle.net/hYNGn/
Это происходит во всех основных браузерах: Chrome, Firefox, IE9, Opera...
Как избежать такого поведения?
Благодарю.
Тело имеет height: 100%
но узлы детей заставляют его переполняться. Когда вы устанавливаете переполнение для hidden
результата, тело возвращается к высоте: 100% относительно окна, чтобы оно выглядело как свиток.
Вы можете сделать это, чтобы сохранить высоту, но я не вижу смысла делать это, и он вызывает прокрутку в Chrome/Chromium
$("html, body").css({
"overflow": "hidden",
"height": "auto"
});
Только установите тело, чтобы скрыть переполнение:
$('#end').click(function(){
$("body").css("overflow", "hidden");
});
Может быть, это?
$('#end').click(function(){
var thetop = - $(window).scrollTop();
$("div.demo").css("margin-top",thetop);
$("html, body").css("overflow", "hidden");
});
Лучшим обходным решением вашей проблемы будет перемещение части прокрутки в div вместо этого.
Объявление: переполнение, скрытое до тела
html,body {
height: 100%;
overflow: hidden;
}
Объявление:
.demo {
width: 100%;
height: 100%;
overflow: auto;
position: absolute;
}
И используйте это событие click:
$('#end').click(function(){
$("div.demo").css("overflow", "hidden");
});
попробуй это:
$('#end').click(function(){
$("html, body").css("overflow", "hidden");
var bodyElement = $("body");
bodyElement.scrollTop(bodyElement.height());
});