Моя проблема в том, что вертикальная полоса прокрутки в браузере, которая удаляется, например, overflow:hidden;
, заставит страницу перейти, когда она появится позже. Я использую jQuery, чтобы удалить опцию прокрутки у посетителя, в то время как сценарий работает и прокручивает страницу до определенной точки, а затем, чтобы она снова появилась снова:
www.nebulafilm.dk / index.html? Содержание
Могу ли я сделать заполнитель для полосы прокрутки, когда ее нет, поэтому она не будет прыгать назад?
Или можно «отключить» его и сделать его «серым»?
Я не могу найти какие-либо решения с помощью поиска. Я нашел что-то подобное здесь: stackoverflow.com , где полоса прокрутки всегда есть. Но разница в том, что полоса прокрутки должна оставаться отключенной, даже если страница длиннее окна. Он должен быть снова «включен» только через другой скрипт, которым я управляю.
Возможно ли это каким-либо образом?
Спасибо.
Обновление:
Время обновления статуса.
У меня были некоторые проблемы с фоновым изображением звездного облака, которое было установлено на теге body
.
Когда сценарий jQuery (из ответа cwolves) добавил отступ к тегу html
и, следовательно, должен сдвинуть все элементы на странице влево, фоновое изображение по-прежнему не работает правильно.
Ну, я обнаружил, что элемент body
не реагирует как любой элемент div
. Это не просто «блок» внутри тега html
, как любой другой элемент блока. Он имеет свое поведение и, очевидно, не может быть обманут таким же образом. Поэтому фоновое изображение было невозможно прикоснуться, пока он был на body
.
Но мне потребовалось некоторое время, чтобы понять ...
Конечное решение этой проблемы настолько глупо просто, что я чуть не заплакал, когда узнал, думая о бесконечных (я мог бы немного преувеличить) часах расследования body
.
Я просто завернул все в <div id="body">
и дал вместо этого фоновое изображение. Внезапно все стало на свои места.
От:
<body>
...
</body>
И
body {background-image: url(...);}
Кому:
<body>
<div id="body">
...
</div>
</body>
И
#body {background-image: url(...);}
И немного мудрее о body
.
Больше не надо "прыгать". Вкусные.
Эффект теперь полностью запущен, и вы почти не заметите изменений с помощью полосы прокрутки и каждой детали. Сценарий Кволва идеален и делает точный расчет:
function getScrollBarWidth(){
var div = $('<div><div>' + new Array(100).join('content<br />') + '</div></div>'),
div2 = div.find('div'),
body = $(document.body);
div.css({ overflow : 'hidden', width: 100, height: 100, position : 'absolute', left : -1000, top : -1000 });
body.append(div);
var width1 = div2.width();
div.css({ overflow : 'auto' });
var width2 = div2.width();
div.remove();
return width1 - width2;
}
* * * * * * * * * * * * * * * * * * * * * * * * * getScrollBarWidth()
* * * * * * * * * * * * * * * * * 1066
var sWidth = getScrollBarWidth();
$("body").css({'overflow': 'hidden'});
$("html").css({'padding-right': sWidth});
$('html, body').delay(1000).animate({
scrollTop: $(hash).offset().top - 170
}, 2000, 'swing', function(){
$("body").css({'overflow': 'auto'});
$("html").css({'padding-right': 0});
});
Большое спасибо. Это было приятно.