我正在考虑自定义滚动条jQuery插件,有很多插件可用,但我想让我自己,问题是我没有得到如何移动内容的概念通过移动其他div元素(滚动条),以及如何通过使用鼠标滚轮移动内容?如何制作自定义滚动条jQuery插件
请帮我理解这一点。
由于
我正在考虑自定义滚动条jQuery插件,有很多插件可用,但我想让我自己,问题是我没有得到如何移动内容的概念通过移动其他div元素(滚动条),以及如何通过使用鼠标滚轮移动内容?如何制作自定义滚动条jQuery插件
请帮我理解这一点。
由于
最简单的概念将是使用了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>
以上仅仅是与所需要的一个例子逻辑和数学,
它错过了“隐藏滚动条”,只是为了保持简单。我会给你添加所有需要的调整,插件。
这是G8,真的G8,很快你会看到插件,需要应用更多的东西到这个,但我会尽力做到这一点.. 非常感谢你:) – 2012-03-05 07:43:49
@Dheeraj等不及看到你的脚本!祝你好运! – 2012-03-05 08:01:32
嗨roXon,我怎样才能使用鼠标滚轮进行滚动? – jeewan 2012-10-11 18:31:57
制作自定义滚动条没有jQuery-UI。
HTML: -
<div class="parent">
<div class="scrollbar"></div>
<div class="scrollable">
<p>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.</p>
</div>
</div>
CSS: -
.parent{
position:relative;
margin:50px;
overflow:hidden;
height:200px;
width:180px;
background:#ddd;
}
.scrollable{
overflow-y:scroll;
position:absolute;
padding:0 17px 0 0;
width: 180px;
height:100%;
}
.scrollbar{
position:absolute;
overflow:auto;
top:0px;
right:0px;
z-index:2;
background:#444;
width:7px;
border-radius:5px;
}
的Javascript: -
var $scrollable = $('.scrollable');
var $scrollbar = $('.scrollbar');
$scrollable.outerHeight(true);
var H = $scrollable.outerHeight(true);
var sH = $scrollable[0].scrollHeight;
var sbH = H*H/sH;
$('.scrollbar').height(sbH);
$scrollable.on("scroll", function(){
$scrollbar.css({top: $scrollable.scrollTop()/H*sbH });
});
我没有尝试过任何可用的插件,我只是WA nt在开始之前自己创造自己,想法应该清楚,它背后的概念/逻辑是什么,如果清楚的话我可以开始构建一个。 – 2012-03-05 06:16:07