简易JQuery翻书插件,轻松实现翻书效果
作者:翅膀的初衷 来源:本站原创 发布时间:2013-10-09 查看数:62444
实现原理:使用四个div,左边两个,一个在上一个在下,右边两个一个在上一个在下,点击右边向左翻时,先将右边下面的DIV内容更新为下一页的内容,然缩小上面的DIV宽度直到为零时,将此DIV内容更新为下面DIV的内容并设置宽度为原始大小。然后将左边下面DIV的内容更新为上面DIV的当前内容,然后将上面的DIV宽度设为零,再将上面DIV的内容更新为下一页的内容,再慢慢展开直到恢复原始大小,这样就完成了一样翻页,点左边向右翻也是同样的道理!如果再加个逐渐变黑,效果更好!不多说,直接上代码:
(function($){
$.fn.JNBooks=function(setting){
var jnbooks_index=0;
var jnbook_runing = false;
if(!setting || setting.length<1){
return;
}
if(this.css("overflow")!='hidden'){
this.css("overflow","hidden");
}
if(this.css("position")!="absolute"||this.css("position")!="relative"){
this.css("position","relative");
}
var jnbooks_width = this.width() / 2;
var jnbooks_height = this.height();
var backLeftBox = document.createElement("div");
backLeftBox.style.cssText="width:"+jnbooks_width+"px; height:"+jnbooks_height+"px; position:absolute; top:0px; left:0px; z-index:1; background-color:#fff;overflow:hidden";
var backRightBox = document.createElement("div");
backRightBox.style.cssText="width:"+jnbooks_width+"px; height:"+jnbooks_height+"px; position:absolute; top:0px; right:0px; z-index:1; background-color:#fff;overflow:hidden";
var bookLeftBox = document.createElement("div");
bookLeftBox.style.cssText="cursor:pointer;width:"+jnbooks_width+"px; height:"+jnbooks_height+"px; position:absolute; top:0px; right:"+jnbooks_width+"px; z-index:2; background-color:#fff;overflow:hidden";
var bookRightBox = document.createElement("div");
bookRightBox.style.cssText="cursor:pointer;width:"+jnbooks_width+"px; height:"+jnbooks_height+"px; position:absolute; top:0px; left:"+jnbooks_width+"px; z-index:2; background-color:#fff;overflow:hidden";
backLeftBox.innerHTML=setting[0][0];
backRightBox.innerHTML=setting[0][1];
bookLeftBox.innerHTML=setting[0][0];
bookRightBox.innerHTML=setting[0][1];
var step = parseInt(jnbooks_width / 3);
bookLeftBox.onclick=function(){
if(jnbooks_index<=0||jnbook_runing){
return;
}else{
jnbook_runing=true;
backLeftBox.innerHTML=setting[jnbooks_index-1][0];
var timer = setInterval(function(){
if(parseInt(bookLeftBox.style.width)<=0){
clearInterval(timer);
bookLeftBox.innerHTML=backLeftBox.innerHTML;
bookLeftBox.style.width=jnbooks_width+"px";
bookRightBox.style.width="0px";
backRightBox.innerHTML=bookRightBox.innerHTML;
bookRightBox.innerHTML=setting[jnbooks_index-1][1];
timer = setInterval(function(){
if(parseInt(bookRightBox.style.width)>=jnbooks_width){
clearInterval(timer);
bookRightBox.style.width=jnbooks_width+"px";
jnbooks_index--;
jnbook_runing=false;
}else{
bookRightBox.style.width = (parseInt(bookRightBox.style.width)+step)+"px";
}
},20);
}else{
var length = parseInt(bookLeftBox.style.width)-step;
if(length<0){
length=0;
}
bookLeftBox.style.width=length+"px";
}
},20);
}
}
bookRightBox.onclick=function(){
if(jnbooks_index>=setting.length-1||jnbook_runing){
return;
}
jnbook_runing=true;
backRightBox.innerHTML=setting[jnbooks_index+1][1];
var timer = setInterval(function(){
if(parseInt(bookRightBox.style.width)<=0){
clearInterval(timer);
bookRightBox.innerHTML=backRightBox.innerHTML;
bookRightBox.style.width=jnbooks_width+"px";
bookLeftBox.style.width="0px";
backLeftBox.innerHTML=bookLeftBox.innerHTML
bookLeftBox.innerHTML=setting[jnbooks_index+1][0];
timer = setInterval(function(){
if(parseInt(bookLeftBox.style.width)>=jnbooks_width){
clearInterval(timer);
bookLeftBox.style.width=jnbooks_width+"px";
jnbooks_index++;
jnbook_runing=false;
}else{
bookLeftBox.style.width=(parseInt(bookLeftBox.style.width)+step)+"px";
}
},20);
}else{
var length = parseInt(bookRightBox.style.width)-step;
if(length<0){
length=0;
}
bookRightBox.style.width=length+"px";
}
},20);
}
this.append(backLeftBox);
this.append(backRightBox);
this.append(bookLeftBox);
this.append(bookRightBox);
}
})(jQuery);
使用方法:
将上面的代码复制下来,保存为jquery.JNBooks.js
然后在页面中引用JQuery与jquery.JNBooks.js
<script type="text/javascript" src="Script/jquery.js" ></script>
<script type="text/javascript" src="Script/jquery.JNBooks.js" ></script>
然后调用
$("div").JNBooks();
完整例子
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>JNBooks演示效果</title>
<script type="text/javascript" src="Script/jquery.js" ></script>
<script type="text/javascript" src="Script/jquery.JNBooks.js" ></script>
</head>
<body>
<div style="width:300px; height:200px; font-size:12px; line-height:20px; border-left:solid 1px #ccc; border-bottom:solid 3px #666; border-right:solid 2px #666; border-top:solid 1px #ccc;" id="JNBooks">
</div>
<script type="text/javascript">
var list = new Array();
list.push(new Array('<img src="http://www.jiniannet.com/resources/upload/Images/Demo1.jpg" />','<div style="width:90%; padding:5px 0px 5px 0px; margin:auto">产品介绍:欢迎使用JQuery翻书效果插件JNBooks</div>'));
list.push(new Array('<img src="http://www.jiniannet.com/resources/upload/Images/Demo2.jpg" />','<div style="width:90%; padding:5px 0px 5px 0px; margin:auto">您可以放图片也可以放文字,自由编辑HTML</div>'));
list.push(new Array('<img src="http://www.jiniannet.com/resources/upload/Images/Demo3.jpg" />','<div style="width:90%; padding:5px 0px 5px 0px; margin:auto">欢迎使用</div>'));
$("#JNBooks").JNBooks(list);
</script>
</body>
</html>
演示效果
::: {#JNBooks} :::