原创jQuery图片上下左右滚动代码

(2013-11-9更新)你知道吗?我写了一个jQuery图片滚动插件了,该插件实现了以下功能:

欢迎使用我的万能图片滚动插件

需求描述

我现在需要一个图片滚动的代码,我要求图片是整屏,然后是向上滚动的。要求要有文字和链接显示出来,同时要有翻页的功能

需求最终截图

jQuery图片滚动

核心代码

$(function(){
//首页图片滚动jQuery代码
//code by 酷剑
//2013.1.27
//contact me at cbaojian@gmail.com
var index = 0;
var len = $(“.sliderbox > li”).length;
var sliderTimer;
for(var i=1; i<=len; i++){$(“.slidernav”).append(‘<li><a href=”#”>’+i+’</a></li>’);}
for(var j=0; j<len; j++){
var title = $(“.sliderbox li:eq(“+j+”) img”).attr(“alt”);
var url = $(“.sliderbox li:eq(“+j+”) a”).attr(“href”);
$(“.slidertext”).append(‘<li><a href=”‘+url+’”>’+title+’</a></li>’);
}

$(“.slidernav li”).mouseover(function(){
index = $(“.slidernav li”).index(this);
showImg(index);
$(this).children(“a”).click(function(){return false;});
}).eq(0).mouseover();
$(“.slider”).hover(function(){
clearInterval(sliderTimer);
},function(){
sliderTimer = setInterval(function(){
showImg(index);
index++;
if(index == len){index=0;}
},3000);
}).trigger(“mouseleave”);
function showImg(index){
var sliderHeight = $(“.slider”).height();
$(“.sliderbox”).stop(true,false).animate({“top”:-sliderHeight*index});
$(“.slidernav li”).removeClass(“current”).eq(index).addClass(“current”);
$(“.slidertext li”).hide().eq(index).show();
}
})
.slider{height:300px; margin:10px auto; overflow:hidden; position:relative; width:980px;}
.sliderbox{position:absolute; top:0; left:0;}
.sliderbox li{width:980px; height:300px;}
.slidernav{position:absolute; right:10px; bottom:5px; z-index:1;}
.slidernav li{float:left; width:24px;}
.slidernav li a{width:16px; padding:2px 4px; height:12px; background:#fff; color:#000; text-align:center;}
.slidernav li.current a{background:#3B8DD1; color:#fff;}
.slidertext{background:#000; background:rgb(00,00,00); opacity:0.8; position:absolute; left:0; bottom:0; width:100%;}
.slidertext li{display:none;}
.slidertext li a{text-align:left; line-height: 30px; height: 30px; color: #fff;}

虽然是很简单的功能,但是还是从中学到了很多东西,其中最关键的地方是使用到函数的方式,从而使得过程简单了很多呢,不过我还是觉得这个可以扩展, 可以把它做成一个插件的形式来调用内容。另外对于jQuery的动画方式也更加的清晰了。图片的滚动其实就是使用到一个setInterval(),定义 这个函数,使得他不断循环,从而形成动画,当然这个比不上那些插件好看,比如图片滚动过渡的时候可以加一些模糊的效果切换的时候可以更自然点。

[dmengl2v]图片向上滚动演示[/dmengl2v]

2013.2.25更新

添加代码修改为左右滚动

修改里面的jQuery代码中的:

var sliderHeight = $(“.slider”).height();
$(“.sliderbox”).stop(true,false).animate({“top”:-sliderHeight*index});

为:

var sliderWidth = $(“.slider”).width();

$(“.sliderbox”).stop(true,false).animate({“left”:-sliderWidth*index});

修改里面的css代码

.sliderbox li{width:980px; height:300px;}
为:
.sliderbox li{width:980px; height:300px; float:left;}

另外补上html代码:
<div class="slider">
<ul class="sliderbox">
<li><a href=""><img src=""></a></li>
<li><a href=""><img src=""></a></li>
</ul>
<ul class="slidernav">《/ul>
<ul class="slidertext"></ul>
</div>

2013年5月15日更新

把内容改为函数对象的方式来做。并且支持向左向右滚动的代码支持。

 

<script type="text/javascript">
//首页图片滚动jQuery代码
//code by 酷剑
//2013.1.27
//contact me at cbaojian@gmail.com
function slider(obj){
var _this = $(this);
var index = 0;
_this.obj = obj;
var sliderBox = $(".sliderbox",_this.obj); //滚动盒子
var len = $("li",sliderBox).length; //数字长度
var sliderNav = $(".slidernav",_this.obj); //数字导航
var sliderText = $(".slidertext",_this.obj); //显示文字
var _prev = $(".prev",_this.obj); //向左
var _next = $(".next",_this.obj); //向右
var sliderTimer;
for(var i=1; i<=len; i++){sliderNav.append('<li><a href="#">'+i+'</a></li>');}
for(var j=0; j<len; j++){
var title = $("li:eq("+j+") img",sliderBox).attr("alt");
var url = $("li:eq("+j+") a",sliderBox).attr("href");
sliderText.append('<li><a href="'+url+'">'+title+'</a></li>');
}

$("li",sliderNav).mouseover(function(){
index = $("li",sliderNav).index(this);
showImg(index);
$(this).children("a").click(function(){return false;});
}).eq(0).mouseover();
if(len<=1){_prev.hide();_next.hide();}
//prev
_prev.click(function(){
index -= 1;
if(index == -1){index = len -1};
showImg(index);
});
//next
_next.click(function(){
index += 1;
if(index == len){index = 0};
showImg(index);
});

$(_this.obj).hover(function(){
clearInterval(sliderTimer);
},function(){
sliderTimer = setInterval(function(){
showImg(index);
index++;
if(index == len){index=0;}
},2000);
}).trigger("mouseleave");
function showImg(index){
var sliderHeight = $(_this.obj).height();
// sliderBox.stop(true,false).animate({"top":-sliderHeight*index},"slow");
$("li",sliderBox).hide().eq(index).show();
$("li",sliderNav).removeClass("current").eq(index).addClass("current");
$("li",sliderText).hide().eq(index).show();
}
}

</script>

更多代码与css可以查看示例

[dmengl2v]面向对象函数版-使用渐隐渐现的幻灯片示例3[/dmengl2v]

2013.6.14更新

图片循环向上滚动代码

js代码如下:

 $(function(){
  var $this = $("#scrollTop");
  var scrollTimer;
  $this.hover(function(){
     clearInterval(scrollTimer);
   },function(){
     scrollTimer = setInterval(function(){
       // scrollNews( $this );
       scrollNews($this);
       //new scrollNews(".scrollNews");
     }, 3000 );
  }).trigger("mouseleave");
})
function scrollNews(obj){
   var $self = obj.find("ul:first");
   // var Liwidth = $self.find("li:first").width(); //获取宽度,向上滚动则需要获取高度.height()
   // $self.animate({ "marginLeft" : -Liwidth +"px" }, 600 , function(){ //向左滚动,向上滚动则需要改为marginTop,其他方向类似,下同
   //       $self.css({marginLeft:0}).find("li:first").appendTo($self); //appendTo能直接移动元素
   // })
var liHeight = $self.find("li:first").height();
$self.animate({
  "marginTop":-liHeight+"px"},600,function(){
      $self.css({marginTop:0}).find("li:first").appendTo($self);
  })
}

css代码如下:

 *{margin:0; padding:0;}
li{list-style:none;}
 .scrollNews{
 width:490px;
 height:170px;
 overflow:hidden;
 background:#eee;
 margin:10px auto;
}
.scrollNews ul{width:1800px;}
 .scrollNews li{
 height:170px;
/* float:left;
 display:inline;*/
}
.left li{float:left; display:inline;}

[dmengl2v]循环向上滚动演示[/dmengl2v]


关注我

我的微信公众号:前端开发博客,在后台回复以下关键字可以获取资源。

  • 回复「小抄」,领取Vue、JavaScript 和 WebComponent 小抄 PDF
  • 回复「Vue脑图」获取 Vue 相关脑图
  • 回复「思维图」获取 JavaScript 相关思维图
  • 回复「简历」获取简历制作建议
  • 回复「简历模板」获取精选的简历模板
  • 回复「加群」进入500人前端精英群
  • 回复「电子书」下载我整理的大量前端资源,含面试、Vue实战项目、CSS和JavaScript电子书等。
  • 回复「知识点」下载高清JavaScript知识点图谱

每日分享有用的前端开发知识,加我微信:caibaojian89 交流