一个左右滚动的图片展示,有左右按钮,可以点击。
这个案例是我参考《锋利的jQuery》一书中的案例,代码少,适合新手提升,代码里有详细的注释。
这个案例有个缺点,就是不能自动切换,不过对于掌握了jQuery基本语法的初学者,想提高自己的技能,这是个很好的案例。
下面是css样式:
[color=blue][color=blue]body {font-size:12px;color:#000;font-family:Verdana, Geneva, sans-serif;background:#FFF}
* {margin:0;padding:0;}
div,ul,li,ol,dt,dd,dl,p {overflow:hidden;margin:0;padding:0;font-size:12px}
ul,li {list-style:none;}
img {border:none}
a {text-decoration:none;color:#000}
a:hover {text-decoration:underline}
.v_show {width:320px;margin-left:200px;margin-top:100px;border:red solid 1px}
.v_caption {height:30px}
h2 {float:left}
.highlight_tip {float:left}
.change_btn {float:left;margin-left:20px}
.change_btn span {cursor:pointer}
.current {color:#00F}
.v_content {width:320px;height:60px;overflow:hidden;position:relative}
.v_content_list {width:800px;position:relative}
.v_content_list ul {float:left}
.v_content_list li {float:left;width:80px}[/color][/color]
这里面应该注意overflow:hidden ,position:relative 这两个属性,overflow:hidden把多出这个区域的部分给隐藏;对于animate()这个自定义动画的方法,必须给相关的div一个position属性才可能使div移动,因为div默认的是static,这个是固定的,不可移动的。
[color=darkred]var page = 1;
var i = 4; //每版放4个图片
//向后 按钮
$("span.next").click(function(){ //绑定click事件
var $parent = $(this).parents("div.v_show");//根据当前点击元素获取到父元素
var $v_show = $parent.find("div.v_content_list"); //寻找到“视频内容展示区域”
var $v_content = $parent.find("div.v_content"); //寻找到“视频内容展示区域”外围的DIV元素
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 : '0px'}, "slow"); //通过改变left值,跳转到第一个版面
page = 1;
}else{
$v_show.animate({ left : '-='+v_width }, "slow"); //通过改变left值,达到每次换一个版面
page++;
}
}
$parent.find("span").eq((page-1)).addClass("current").siblings().removeClass("current");
});[/color]
上面的是向后按钮的代码。
代码定义了一个page变量作为中间媒介,用它来判断相关图片的位置;
下面的是向前按钮的代码,跟向后的按钮代码相似:
[color=darkred]$("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"); //寻找到“视频内容展示区域”外围的DIV元素
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 }, "slow");
page--;
}
}
$parent.find("span").eq((page-1)).addClass("current").siblings().removeClass("current");
});[/color]
这个案例只要仔细研究,一般的话都可以看懂的。研究懂了会对你对jQuery的认识更加深入。