我终于找到了一个对我的布局有帮助的解决方案。这是 Taras Romaniv 的回答和 Christoph 的评论以及this technique to hide the scrollbar 的混合体。
A working fiddle can be found here
动态隐藏滚动条,计算滚动条的宽度,我用这个
var blockset = document.querySelector('.blockset');
var vScrollWidth = blockset.offsetWidth - blockset.clientWidth
var panelWidth = $(blockset).outerWidth()
$(blockset).css("width", keysWidth + vScrollWidth)
Blockset 位于 Panel 中,在此代码之后,它比其容器宽滚动条的宽度,因此滚动条现在不在视野范围内。
接下来,由于内容区域的底部滚动条增加了垂直滚动条的长度,我们也必须对其进行补偿。
var content = document.querySelector('.content');
var hScrollHeight = content.offsetHeight - content.clientHeight;
$(blockset).css("padding-bottom", hScrollHeight)
我们正在将 Content 的水平滚动条的高度作为填充添加到 Blockset。现在当我们垂直滚动时,两边将具有相同的高度。
最后,我们同步条形图,这样在一个部分垂直滚动就会在另一个部分垂直滚动。
$(content).scroll(function () {
$(blockset).scrollTop($(content).scrollTop())
});
$(blockset).scroll(function () {
$(content).scrollTop($(blockset).scrollTop())
});
它已经完成了。现在可以让两个部分同时垂直滚动,但可以独立水平滚动。
警告:我使用border-box 作为我的box-sizing。要使用其他 box-sizing,您必须更改很多内容。