Прокрутка по заданному проценту вертикальной прокрутки в JavaScript - PullRequest
3 голосов
/ 04 февраля 2020

У меня есть значения прокрутки X и Y в процентах (значения в диапазоне от 0 до 100), и я хочу прокрутить страницу до этого места. Я получаю процентные значения от вызова API.

function scrollPageByGivenPercentage(percentageX, percentageY) {
    // ... scroll by percentage ...
    //window.scrollTo(percentageX, percentageY);
}

Вышеуказанная функция прокручивается в пикселях, и она не выполняет свою работу. Я попытался использовать это:

function scrollPageByGivenPercentage(percentageX, percentageY) {
    var yScrollInPx = document.body.documentElement.clientHeight * percentageY;
    window.scrollTo(0, yScrollInPx);
}

Я думаю, clientHeight - неправильное свойство. Пробовал также offsetHeight.

Я вычисляю проценты из этого вопроса :

У меня есть эта функция для получения текущего значения прокрутки в процентах:

function getScrollPercent() {
    var h = document.documentElement,
        b = document.body,
        st = 'scrollTop',
        sh = 'scrollHeight';
    return (h[st] || b[st]) / ((h[sh] || b[sh]) - h.clientHeight) * 100;
}

1 Ответ

1 голос
/ 04 февраля 2020

Получите общую высоту документа, определите процент, который вам нужен в px, затем примените его к window.scrollTo(). Попробуйте это:

var scrollYPercent = 0.25;
var scrollYPx = document.documentElement.scrollHeight * scrollYPercent;
window.scrollTo(0, scrollYPx);
html, body { height: 1000px; }
p { margin-top: 400px; }
<p>Note the scroll position -></p>
...