Javascript 有没有办法在滚动条顶部放置标记?

Javascript 有没有办法在滚动条顶部放置标记?,javascript,html,css,scrollbar,Javascript,Html,Css,Scrollbar,与许多IDE和文本编辑器(如)中的功能类似,我希望能够在滚动条上显示小标记(属于overflow:scroll元素) 我认为这可以通过将指针事件:none元素作为可滚动元素的覆盖并在其上放置绝对定位元素来实现,但考虑到滚动条具有特定于平台/浏览器的宽度、填充、nub大小以及诸如此类的内容,要获得正确的位置是很困难的。此外,这似乎是一个相当棘手的解决方案 有什么指示吗?给你。这是一个巨大的挑战。它并不完美,但我希望它能为您指明前进的方向。 所以,首先是一个简单的解释 有一个固定尺寸的容器。其中有两

与许多IDE和文本编辑器(如)中的功能类似,我希望能够在滚动条上显示小标记(属于
overflow:scroll
元素)

我认为这可以通过将
指针事件:none
元素作为可滚动元素的覆盖并在其上放置绝对定位元素来实现,但考虑到滚动条具有特定于平台/浏览器的宽度、填充、nub大小以及诸如此类的内容,要获得正确的位置是很困难的。此外,这似乎是一个相当棘手的解决方案


有什么指示吗?

给你。这是一个巨大的挑战。它并不完美,但我希望它能为您指明前进的方向。
所以,首先是一个简单的解释

有一个固定尺寸的容器。其中有两个元素:
.internal container
用于文本和将在滚动条上有标记的
.scroll marker

文本是
标记,突出显示的文本是
标记,带有
.red
.yellow
蓝色
类。这些类用于了解每个标记的颜色。每个标记都在循环中创建并附加在
上。滚动标记
,它们绝对定位。为了正确地进行滚动定位,进行了三个规则的计算

var container=document.querySelector('.container');
var containerInner=document.querySelector('.container-inner');
var containerHeight=container.offsetHeight;
var containerScrollHeight=containerInner.scrollHeight;
var scrollMarker=document.querySelector('.scrollMarker');
var colorfulStuff=document.querySelectorAll('.container-inner-span');//来自文本的彩色跨距
forEach(函数(span){//循环以创建每个标记
var spanTop=span.offsetTop;
var spanBottom=spanTop+span.offsetHeight;
var markerTop=Math.ceil(跨距顶部*集装箱高度/集装箱高度);
var markerBottom=Math.ceil(跨距底部*集装箱高度/集装箱交叉高度);
如果(span.className==“红色”){//请选择正确的颜色
var markerColor='#f65e5a';
}else if(span.className==“黄色”){
var markerColor='#fec740';
}else if(span.className==“蓝色”){
var markerColor='#2985d0';
}
var markerement=document.createElement(“span”);//创建标记,设置颜色和位置并将其放在那里
markerElement.style.backgroundColor=markerColor;
markerElement.style.top=markerTop+“px”
markerElement.style.height=(markerBottom-markerTop)+“px”
scrollMarker.appendChild(markerement);
})
.container{
背景:#2d3744;
边界半径:4px;
位置:相对位置;
保证金:30像素自动;
高度:320px;
宽度:300px;
盒影:2px2p5px0RGBA(0,0,0,0.65);
}
.货柜内{
填充:20px 30px;
高度:计算(100%-40px);
溢出y:自动;
溢出x:隐藏;
}
p{
颜色:白色;
边际:12px0;
字号:18px;
字体系列:无衬线;
字母间距:0.44px;
}
瑞德先生{
颜色:#f65e5a;
}
黄先生{
颜色:#fec740;
}
蓝先生{
颜色:#2985d0;
}
.滚动标记{
位置:绝对位置;
身高:100%;
宽度:12px;
指针事件:无;
排名:0;
右:0;
}
.滚动标记跨距{
/*标记*/
位置:绝对位置;
宽度:100%;
}
/*滚动条样式*/
.容器内部::-webkit滚动条轨迹{
-webkit盒阴影:插入0 0 6px rgba(0,0,0,0.3);
背景色:#2d3744;
}
.容器内部::-webkit滚动条{
宽度:12px;
背景色:#2d3744;
}
.容器内部::-webkit滚动条拇指{
边界半径:10px;
-webkit盒阴影:插入0 0 6px rgba(0,0,0,3);
背景色:#4c5f74;
}

我的同僚们都是精英。发明人asperiores provident magnam阻碍了这一权利的实现,这是因为在非magni的情况下,由于时间的推移而导致的透明化。沃鲁帕特姆,伊塔克

我的同僚们都是精英。发明人asperiores provident magnam阻碍了这一权利的实现,这是因为在非magni的情况下,由于时间的推移而导致的透明化。沃鲁帕特姆,伊塔克

我的同僚们都是精英。发明人asperiores provident magnam阻碍了这一权利的实现,这是因为在非magni的情况下,由于时间的推移而导致的透明化。沃鲁帕特姆,伊塔克

我的同僚们都是精英。发明人asperiores provident magnam阻碍了这一权利的实现,这是因为在非magni的情况下,由于时间的推移而导致的透明化。沃鲁帕特姆,伊塔克

我的同僚们都是精英。发明人asperiores provident magnam阻碍了这一权利的实现,这是因为在非magni的情况下,由于时间的推移而导致的透明化。沃鲁帕特姆,伊塔克

我的同僚们都是精英。发明人asperiores provident magnam阻碍了这一权利的实现,这是因为在非magni的情况下,由于时间的推移而导致的透明化。沃鲁帕特姆,伊塔克

我的同僚们都是精英。发明人asperiores provident magnam阻碍了这一权利的实现,这是因为在非magni的情况下,由于时间的推移而导致的透明化。沃鲁帕特姆,伊塔克

我的同僚们都是精英。发明人asperiores provident magnam阻碍了这一权利的实现,这是因为在非magni的情况下,由于时间的推移而导致的透明化。沃鲁帕特姆,伊塔克

我的同僚们都是精英。发明人asperiores provident magnam阻碍了对莫迪的授权,这是一种对未经授权的透明的过失