轮播+滑动+返回顶部效果,插件

时间:2023-01-03 10:33:53

轮播+滑动+返回顶部效果,插件

 

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
</head>
<body>

<style type="text/css">
*
{
border
: 0;
margin
: 0;
padding
: 0;
outline
: 0;
}
ul
{
font-size
: 0;
list-style
: none;
position
: relative;
}
li
{
display
: inline-block;
}
li img
{
width
: 210px;
}
.left,.right
{
cursor
: pointer;
position
: absolute;
top
: 20px;
}
.sld
{
position
: relative;
overflow
: hidden;
width
: 840px;
margin
: auto;
}
</style>
<div class="sld">
<ul>
<li><img src="img/img_14.jpg"/></li>
<li><img src="img/img_14.jpg"/></li>
<li><img src="img/img_14.jpg"/></li>
<li><img src="img/img_14.jpg"/></li>
<li><img src="img/img_14.jpg"/></li>
<li><img src="img/img_14.jpg"/></li>
<li><img src="img/img_14.jpg"/></li>
<li><img src="img/img_14.jpg"/></li>
</ul>
</div>
<div class="left">

</div>
<div class="right" style="right: 20px;">

</div>

<script type="text/javascript">
$(
function(){
$(
"ul").jslider("li",4,2,$(".left"),$(".right"));
$(
"#arrow").jscroll();
});
$.fn.extend({
jslider:
function(dom,num,queue,leftEle,rightEle){
var $ul = this;
var wd = parseInt($(dom).width());
// 定义主框宽度 - -.!可以在css中设置很大就能不定义了。
$ul.width(wd*num*(queue+1))
// 将最后一个队列复制到最前面
$li = $ul.children(dom+":gt("+(num*queue-num-1)+")").clone().prependTo($ul);
// 开始点击事件
leftEle.on("click",function(){
if(!$ul.is(":animated")){
// 到达到最右边再点击按钮直接跳到第一队列。
if(parseInt($ul.css("left"))==(-wd*num*queue)){
$ul.css(
"left","0");
}
// 正常执行动画
//
判断剩余个数,如果少于4个就只滚动剩余数目
var lf = parseInt($ul.css("left"));
var surplus = (wd*num*queue + lf)/wd;
var actualNum = num < surplus ? num : surplus;
$ul.animate({
"left":"-="+wd*actualNum},"low");
}
});
rightEle.on(
"click",function(){
if(!$ul.is(":animated")){
if(parseInt($ul.css("left"))==0){
$ul.css(
"left","-"+wd*num*queue+"px");
}
var lf = parseInt($ul.css("left"));
var surplus = -lf/wd;
var actualNum = num < surplus ? num : surplus;
$ul.animate({
"left":"+="+wd*actualNum},"low");
}
})
// 循环和终止循环
//
var sr = setInterval(function(){
//
rightEle.click();
//
},2000);
//
eh($ul);
//
eh(leftEle);
//
eh(rightEle);
//
function eh(ele){
//
ele.hover(function(){
//
clearInterval(sr);
//
},function(){
//
sr = setInterval(function(){
//
rightEle.click();
//
},2000);
//
})
//
};
//
touch事件
var xStart,xEnd,xM,mr,lf,unApex,mv;
$ul.on(
"mousedown",function(e){
// 获取x坐标,阻止默认事件
xStart = e.pageX;
e.preventDefault();
mr
= true;
lf
= parseInt($ul.css("left"));
}).on(
"mousemove",function(e){
if(mr){
xM
= e.pageX-xStart;
// 判断是否到达顶点,滚动距离为鼠标滑动距离的 1.8倍
unApex = (lf+xM*1.8)>=(-wd*num*queue)&&(lf+xM*1.8)<0;
if(unApex){
$ul.css(
"left",lf+xM*1.8);
}
mv
= true;
}
}).on(
"mouseleave mouseup",function(e){
xEnd
= e.pageX;
// 舍入,显示完整产品
var abs = Math.round((lf+xM*1.8)/wd)*wd;
// 如果要执行 moseup动画必须要有mousemove事件
if(unApex&&mv){
$ul.animate({
"left":abs},"fast");
}
mv
= mr = false;
})
}
// 滚动到最顶部
,jscroll:function(){
var $arrow = this;
$(window).on(
"scroll",function(){
var windH = $(window).height();
var scollH = $(window).scrollTop();
var $body = $("body");
if(scollH>windH){
$arrow.css(
"display","block");
}
else{
$arrow.css(
"display","none");
}
if(scollH==0){
$body.animate().stop(
true,true);
}
$arrow.on(
"click",function(){
$body.animate({scrollTop:
0}, 'slow');
})
})

}
})
</script>
</body>
</html>