javascript - 如何在 Web 容器中自定义滚动条的位置

标签 javascript jquery html css frontend

目前,我正在尝试创建一个数据网格,允许用户单击 ColA 中的元素,右侧屏幕将显示另一个包含详细信息的隐藏容器。

我有一个固定高度的 div,它包含一个表格作为我的数据网格,并且因为“溢出”设置为“自动”,它在 div 的右侧会有一个滚动条,允许用户滚动整个数据网格。 (见下图) enter image description here

但是,在我的例子中,我想将滚动条移动到“colA”旁边,并且仍然允许用户滚动整个数据网格。 (见下图) enter image description here

现在,我可以将滚动条放在 ColA 旁边,因为我在那里定义了另一个固定高度 div 并将“溢出”设置为“自动”,但当然,这只允许我滚动 ColA。

这是我的问题:

  1. 是否可以通过一些 CSS 设置来满足我的要求?
  2. 如果 1 的答案是否定的,我可以通过为 colA 滚动条创建事件处理程序来实现我的目标吗? (能否请您提供一些示例代码?)
  3. 如果 1 的答案是否定的,是否有任何开源工具可以支持这种需求?

=============== 这里是表格部分的代码(去掉无关样式)===========

<td colspan="2">
<div style="height: 200px; overflow: auto; margin: 1px;">
    <table>
        <tr>
        <td>
            <table>
            <tr><td><p> data Item 1</p></td></tr>
            <tr><td><p> data Item 2</p></td></tr>
            <tr><td><p> data Item 3</p></td></tr>
            <tr><td><p> data Item 4</p></td></tr>
            </table>
        </td>
        <td>
            <table>
            <tr>
            <td><p> related item 1</p></td>
            <td><p> related item 1</p></td>
            <td><p> related item 1</p></td>
            </tr>
            <tr>
            <td><p> related item 2</p></td>
            <td><p> related item 2</p></td>
            <td><p> related item 2</p></td>
            </tr>
            <tr>
            <td><p> related item 3</p></td>
            <td><p> related item 3</p></td>
            <td><p> related item 3</p></td>
            </tr>
            <tr>
            <td><p> related item 4</p></td>
            <td><p> related item 4</p></td>
            <td><p> related item 4</p></td>
            </tr>
            </table>
            </td>
        </tr>
    </table>
</div>

非常感谢任何帮助。

最佳答案

将滚动条放在 a 列上,然后你可以像这样更改 b 列滚动位置:

var setScrollHeight = function(e){
    colA = $(".col-a")[0];
    colB = $(".col-b")[0];

    console.log(e);
    var scrollPercent = colA.scrollTop / (colA.scrollHeight - parseInt(colA.clientHeight));

    if(e.originalEvent.deltaY !== undefined && e.originalEvent.target != colA)
        scrollPercent += e.originalEvent.deltaY < 0 ? -0.16 : 0.16; 

    colA.scrollTop = (colA.scrollHeight - colA.clientHeight) * scrollPercent;
    colB.scrollTop = (colB.scrollHeight - colB.clientHeight) * scrollPercent;
}

$(".col-a").scroll( setScrollHeight);
$(".container").on("mousewheel DOMMouseWheel onmousescroll", setScrollHeight);

在这里查看:JSFiddle

更新:默认滚动条现在可以使用了

关于javascript - 如何在 Web 容器中自定义滚动条的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26515757/

相关文章:

html - 我可以用 CSS 实现吗?

html - Bootstrap 4 navbar-inverse 没有颜色

javascript - 为什么不设置 document.domain 来允许对父域的 AJAX 请求?

javascript - 抓取隐藏在 javascript 对象后面(?)的文本

javascript - 如何计算给定三个点的圆心?

javascript - 如何使用 javascript 和 JQuery 创建包含定义的列表?

javascript - 根据与另一个数组的重合对对象数组进行排序 JS REACT REDUX

javascript - 带右侧图标的 bulma 输入字段 : how to bind jquery event

javascript - 如何显示使用 AJAX 动态生成的隐藏元素?

html - 列表项的图像在 html 中重复