gpt4 book ai didi

jquery - 如何制作自定义滚动条 jQuery 插件

转载 作者:行者123 更新时间:2023-12-03 22:00:25 25 4
gpt4 key购买 nike

我正在考虑制作自定义滚动条 jQuery 插件,有很多可用的插件,但我想制作自己的插件,问题是我没有得到如何通过移动其他 div 元素(滚动条)来移动内容的概念)以及我应该如何使用鼠标滚轮移动内容?

请帮助我理解这一点。

谢谢

最佳答案

滚动条逻辑

(onInit, onResize) thumbSize = viewportSize * viewportSize / areaSize
(onThumbDrag) viewportScrollPos = areaSize / viewportSize * thumbPos
(onViewportScroll) thumbPos = viewportScrollPos / viewportSize * thumbSize

最简单的概念是使用 jQuery UI 可拖动并将 .draggable() 方法附加到 .scrollbar

var $scrollable  = $(".scrollable"),
$scrollbar = $(".scrollbar"),
height = $scrollable.outerHeight(true), // visible height
scrollHeight = $scrollable.prop("scrollHeight"), // total height
barHeight = height * height / scrollHeight; // Scrollbar height!

// Scrollbar drag:
$scrollbar.height( barHeight ).draggable({
axis : "y",
containment : "parent",
drag: function(e, ui) {
$scrollable.scrollTop( scrollHeight / height * ui.position.top );
}
});

// Element scroll:
$scrollable.on("scroll", function() {
$scrollbar.css({top: $scrollable.scrollTop() / height * barHeight });
});
.parent{
position:relative;
overflow:hidden;
height:200px;
width:180px;
background:#ddd;
}
.scrollable{
overflow-y:scroll;
position:absolute;
padding:0 17px 0 0;
width: 180px;
height:100%;
}
.scrollbar{
cursor:n-resize;
position:absolute;
overflow:auto;
top:0px;
right:0px;
z-index:2;
background:#444;
width:17px;
border-radius:8px;
}
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="//code.jquery.com/ui/1.11.0/jquery-ui.min.js"></script>

<div class="parent">
<div class="scrollbar"></div>
<div class="scrollable">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras non nunc eget sapien molestie mollis. Proin vestibulum vehicula varius. Duis a nunc ac risus facilisis consectetur.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras non nunc eget sapien molestie mollis. Proin vestibulum vehicula varius. Duis a nunc ac risus facilisis consectetur.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras non nunc eget sapien molestie mollis. Proin vestibulum vehicula varius. Duis a nunc ac risus facilisis consectetur.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras non nunc eget sapien molestie mollis. Proin vestibulum vehicula varius. Duis a nunc ac risus facilisis consectetur.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras non nunc eget sapien molestie mollis. Proin vestibulum vehicula varius. Duis a nunc ac risus facilisis consectetur.
</div>
</div>

以上只是一个示例,涉及所需的逻辑和数学,
它错过了“隐藏滚动条”,只是为了保持简单。我将让您添加所有需要的调整、插件。

关于jquery - 如何制作自定义滚动条 jQuery 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9562225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com