Я ищу библиотеку, которая позволяет «следить» за тем, что мы читаем (связанным с нашей прокруткой) на странице контента справа от нее, я видел действительно похожие вещи на нескольких веб-сайтах, и я думаю, что есть конкретный открытый исходная библиотека в связи с этим.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Может это поможет. Похоже, что вам нужно:
$(function(){
function sumSection(){
return $(".container").height()
}
function setDimensionBar(){
$(".bar").css({
"height": ($(window).height()/sumSection())*100 + "%"
})
}
function setSection(){
$.each($("section"), function(i, element){
$(element).css({
"min-height": $(window).height()
})
})
}
function addBehaviours(){
let sections = $("section")
$.each($(".node"), function(i, element){
$(element).on("click", function(e){
e.preventDefault()
let scroll = $(sections[i]).offset().top
$('html, body').animate({
scrollTop: scroll
}, 500);
})
})
}
function arrangeNodes(){
$(".node").remove()
$.each($("section"), function(i, element){
let name = $(element).data("name")
let node = $("<li class='node'><span>"+name+"</span></li>")
$(".timeline").append(node)
$(node).css({
"top": ($(".timeline").height()/$(document).height()) * $(element).offset().top
})
})
addBehaviours()
}
$(window).on("scroll", function(){
let top = (window.scrollY/sumSection())*100
$(".bar").css({
"top": top + "%"
})
})
$(window).on("resize", function(){
setSection()
arrangeNodes()
setDimensionBar()
})
setTimeout(
function(){
setSection()
arrangeNodes()
setDimensionBar()
},
200
)
})
@Azrix Вы можете отметить мой ответ как лучший - он может быть полезен другим в будущем
Да, второе решение похоже на то, что я ищу. Спасибо !