您的位置:首页 > Web前端 > JQuery

jQuery实现图片轮播效果

2016-01-22 00:03 1026 查看
   图片轮播是一个老生常谈的东西,今天跟着书上写了一个demo。(参考《锋利的jQuery》)

   要实现的功能,图片可以向左向右滚动,自动循环播放,并且可以跳转至指定页面。



   查看示例

   图片滚动效果主要用到的东西就是position:absolute 和 left: 0; overflow:hidden属性,用于定位图片和隐藏显示多余图片。

   具体代码可以点开示例链接——查看网页源代码。。

   看一下代码结构吧

   scroll.html:

   

<div class="v_show">
<div class="v_caption">
//4个页面标识,可点击切换至具体页面
<div class="highlight_tip">
<span class="current">1</span>
<span>2</span>
<span>3</span>
<span>4</span>
</div>
//向左 向右按钮
<div class="change_btn">
<span class="prev">back</span>
<span class="next">next</span>
</div>
</div>
//图片容器
<div class="v_content">
//图片显示区域
<div class="v_content_list">
<ul>
//将图片资源全部写在这里
<li><a href="#"><img src="img/01.jpg" alt="海贼王"/></a><h4><a href="#">海贼王</a></h4>
<span>播放:<em>28,276</em></span></li>
<li><a href="#"><img src="img/01.jpg" alt="海贼王"/></a><h4><a href="#">海贼王</a></h4>
<span>播放:<em>28,276</em></span></li>

.......
</ul>
</div>
</div>
</div>


   main.js:

   

$(function () {
var page = 1;
var i = 4;
//向右滚动效果实现
$("span.next").click(function () {
//console.log('enter');
var $parent = $(this).parents("div.v_show");
var $v_show = $parent.find("div.v_content_list");
var $v_content = $parent.find("div.v_content");

//获取内容显示区宽度
var v_width = $v_content.width();

var len = $v_show.find("li").length;
var page_count = Math.ceil(len / i);
if (!$v_show.is(":animated")) {
//如果已经是最后一页,则滚动到第一页
if (page == page_count) {
$v_show.animate({left: "0"}, "normal");
page = 1;
} else {
$v_show.animate({left: "-=" + v_width}, "normal");
page++;
}

$parent.find("span").eq((page - 1)).addClass("current").siblings().removeClass("current");
}

});

//向左滚动效果实现
$("span.prev").click(function () {
var $parent = $(this).parents("div.v_show");
var $v_show = $parent.find("div.v_content_list");
var $v_content = $parent.find("div.v_content");

var v_width = $v_content.width();

var len = $v_show.find("li").length;
var page_count = Math.ceil(len / i);
//防止多次连续点击鼠标移除后仍在进行动画
//判断当前元素是否处于动画状态,并选择是否执行动画操作
if (!$v_show.is(":animated")) {
//如果已经是第一页,则滚动到最后一页
if (page == 1) {
$v_show.animate({left: '-=' + v_width * (page_count - 1)}, "slow");
page = page_count;
} else {
$v_show.animate({left: "+=" + v_width}, "normal");
page--;
}
//上方4个标识的样式增加与移除
$parent.find("span").eq((page - 1)).addClass("current").siblings().removeClass("current");

}

});

$(".highlight_tip span").click(function () {
var $pageToGo = $(this).index() +1;

var $parent = $(this).parents("div.v_show");
var $v_show = $parent.find("div.v_content_list");
var $v_content = $parent.find("div.v_content");

var v_width = $v_content.width();

var len = $v_show.find("li").length;

if (!$v_show.is(":animated")) {
//判断向右滚动还是向左滚动
if ($pageToGo > page) {

$v_show.animate({left: "-=" + v_width*($pageToGo - page)}, "normal");
page = $pageToGo;
$parent.find("span").eq((page - 1)).addClass("current").siblings().removeClass("current");

} else {
$v_show.animate({left: "+=" + v_width*(page - $pageToGo)}, "normal");
page = $pageToGo;
$parent.find("span").eq((page - 1)).addClass("current").siblings().removeClass("current");

}
}

});
//设置自动滚动 时间设为3秒
setInterval("$('span.next').trigger('click')",3000);
}
)


主要css样式:

.highlight_tip span {
display: inline;
float: left;
width: 7px;
height: 7px;
overflow: hidden;
margin: 0 2px;
background: url(img/btn_cartoon.gif) no-repeat 0 -320px;
text-indent: -9999px;
cursor: pointer;
}

.v_content {
position: relative;
width: 592px;
height: 160px;
overflow: hidden;
border-right: 1px solid #E7E7E7;
border-bottom: 1px solid #E7E7E7;
border-left: 1px solid #E7E7E7;
}

.v_content_list {
position: absolute;
width: 2500px;
top: 0px;
left: 0px;
}

.highlight_tip .current {
background-position: 0 -220px;
}


详细实现代码可以查看上方给出的示例链接,在此不赘述。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: