jQuery实现图片卡片层叠式切换效果

时间:2022-11-30 12:00:42
本功能的开发,主要看到一个网站有这个功能,但是是flash做的,当时就吐血了,于是就自己研究用jquery来做一下,功能比较简单,没用进行美化,代码没有经过优化的,如果哪位高手可以优化修改下也不错!
好吧,废话就到这里!
模仿网站的地址:www.web-designers.cn(韩雪冬)
再做完这个效果
在一个模板网站找到个类似的功能
http://demo.cssmoban.com/cssthemes/hmtl5-template/index.html
非常之不错,很酷!
先上个图吧!
效果:

jQuery实现图片卡片层叠式切换效果

这个切换效果是最基本的,就3个图片切换

1.一个框架,主要用来存放切换图片层

2.3个div层,用来做切换层,当然,也可以做大于3个以上的

原理:先把3个层的div分别布局好,就像现在这个图片一样。首页,我们分别给3个层添加一个标识,用来区分3个对象层的,主要是用来切换的时候判断是哪个对象在什么位置,

再对他们进行切换!

先放一下他们的CSS布局样式:

 

body{ margin:0;}
/*主框架*/
.out_warp
{ position:relative; width:860px; height:400px; background:#ccc; margin: 100px auto 0 auto;z-index:-99;}
/*左边层*/
.left
{width:520px; height:260px; background:#F63;position:absolute; top:70px;left:0; z-index:0;}
/*中间层*/
.cont
{width:680px; height:340px; max-height:340px; max-width:680px; background:#096; position:absolute;top:30px;left:90px; z-index:1;}
/*右边层*/
.right
{width:520px; height:260px; background:#939;position:absolute;top:70px;left:340px; z-index:0;}

 

再放html代码:

<div id="out_warp" class="out_warp">
<div id="left" class="left" flat=""></div>
<div id="cont" class="cont" flat=""></div>
<div id="right" class="right" flat=""></div>
</div>
<div class="button"><input type="button" value="左" id="button_left"/>
<input type="button" value="右" id="button_right"/>
<input type="button" value="信息" id="button2" onclick="one();"/>
</div>

jq操作代码:

$(function(){

init();
//初始化
//首次为他们标识,为了切换做好准备
function init(){
$(
'.right').attr('flat', 'right');
$(
'.left').attr('flat', 'left');
$(
'.cont').attr('flat', 'cont'); } ;

//看他们的标识的状态
$("#button2").click(function(){ alert('left:'+$('.left').attr('flat')+' cont:'+$('.cont').attr('flat')+' right:'+$('.right').attr('flat')); });


//记录移动对象,用于区分
var left_move; //记录左边的对象
var cont_move; //记录中间的对象
var right_move; //记录右边的对象
var flat; //判断按了左或是右
/// /切换动画后,修改flat标识,该赋值方式为向左转
var to_left=function(){
left_move.attr(
'flat', 'right');//左图层变成右
cont_move.attr('flat', 'left');//中间边左边
right_move.attr('flat', 'cont');//右边边中间

};

//向右转
var to_right=function(){
left_move.attr(
'flat', 'cont');//左图层变成右
cont_move.attr('flat', 'right');//中间边左边
right_move.attr('flat', 'left');//右边边中间

};

//判定当前的图层块,并做对应的操作
function left_obj(){
left_move
=$("[flat=left]");//取得左边对象,进行记录
//以下为切换效果,到底是向哪个方向,就需要判断按了是哪个按钮
if(flat=="left"){
left_move.animate({
left:
"340px", //向最右边切换
width: "520px",
height:
"260px"
},
10 );//10,以最快的速度变换位置
left_move.css("z-index","0");
}
else if(flat=="right"){
left_move.animate({
//向最中间切换
left:"90px",
top:
"30px",
width:
"680px",
height:
"340px"
},
150 );
left_move.css(
"z-index","1");
}
}
//end_left_obj

function right_obj(){
right_move
=$("[flat=right]"); //取得最右边对象
if(flat=="left"){
right_move.animate({
left:
"90px", //向中间切换
top:"30px",
width:
"680px",
height:
"340px"
},
150 );
right_move.css(
"z-index","1"); //最高层
}else if(flat=="right"){
right_move.animate({
left:
"0", //向最左边切换
top:"70px",
width:
"520px",
height:
"260px"
},
10 ); //10,以最快的速度变换位置
right_move.css("z-index","0");
}
}
//end_right_obj

function cont_obj(){
cont_move
=$("[flat=cont]");
if(flat=="left"){
cont_move.animate({
//向最左边切换
left:"0",
top:
"70px",
width:
"520px",
height:
"260px"
},
100 );

}
else if(flat=="right"){
cont_move.animate({
//向最右边切换
left:"340px",
top:
"70px",
width:
"520px",
height:
"260px"
},
100 );
}
cont_move.css(
"z-index","0");
}
//end_cont_obj



//点击向左切换
$("#button_left").click(function(){
flat
="left";
left_obj();
right_obj();
cont_obj();
to_left();
//修改标识
})
//点击向右切换
$("#button_right").click(function(){
flat
="right";
left_obj();
right_obj();
cont_obj();
to_right();
//修改标识
})



});
//end_function

当然,我们也可以重新修改最外层的框架以及切换层的高度和宽度,还可以对它们进行美工,做得更加漂亮,效果就更好了!如果采用CSS3进行设计就非常好,可以忽略ie

jQuery实现图片卡片层叠式切换效果jQuery实现图片卡片层叠式切换效果完整代码
 <!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=utf-8" />

<title>123</title>

<style>

body
{ margin:0;}

.out_warp
{ position:relative; width:860px; height:400px; background:#ccc; margin: 100px auto 0 auto;z-index:-99;}

.left
{width:520px; height:260px; background:#F63;position:absolute; top:70px;left:0; z-index:0;}

.cont
{width:680px; height:340px; max-height:340px; max-width:680px; background:#096; position:absolute;top:30px;left:90px; z-index:1;}

.right
{width:520px; height:260px; background:#939;position:absolute;top:70px;left:340px; z-index:0;}

img
{ width:100%; height:100%;}/*自适应div高、宽*/

</style>

<script type="text/javascript" src="jquery-1.7.2.min.js"></script>

</head>



<body>

<div id="out_warp" class="out_warp">

<div id="left" class="left" flat=""><img src="1.jpg"/></div>

<div id="cont" class="cont" flat=""><img src="2.jpg"/></div>

<div id="right" class="right" flat=""><img src="3.jpg"/></div>

</div>

<div class="button"><input type="button" value="左" id="button_left"/>

<input type="button" value="右" id="button_right"/>

<input type="button" value="信息" id="button2" onclick="one();"/>

</div>

<script type="text/javascript" language="javascript">



$(
function(){

init();
//初始化



function init(){

$(
'.right').attr('flat', 'right');

$(
'.left').attr('flat', 'left');

$(
'.cont').attr('flat', 'cont'); } ;



$(
"#button2").click(function(){ alert('left:'+$('.left').attr('flat')+' cont:'+$('.cont').attr('flat')+' right:'+$('.right').attr('flat')); });





//记录移动对象,用于区分

var left_move; //记录左边的对象

var cont_move; //记录中间的对象

var right_move; //记录右边的对象

var flat; //判断按了左或是右

/// /切换动画后,修改flat标识,该赋值方式为向左转

var to_left=function(){

left_move.attr(
'flat', 'right');//左图层变成右

cont_move.attr(
'flat', 'left');//中间边左边

right_move.attr(
'flat', 'cont');//右边边中间



};

//向右转



var to_right=function(){

left_move.attr(
'flat', 'cont');//左图层变成右

cont_move.attr(
'flat', 'right');//中间边左边

right_move.attr(
'flat', 'left');//右边边中间



};



//



//判定当前的图层块,并做对应的操作

function left_obj(){

left_move
=$("[flat=left]");//取得左边对象,进行记录



if(flat=="left"){

left_move.animate({

left:
"340px",//最右边的左边

width:
"520px",

height:
"260px",

},
10 );//10,以最快的速度变换位置

left_move.css(
"z-index","0");

}
else if(flat=="right"){

left_move.animate({

left:
"90px",//中间

top:
"30px",

width:
"680px",

height:
"340px",

},
150 );

left_move.css(
"z-index","11");

}









}
//end left



function right_obj(){

right_move
=$("[flat=right]");

if(flat=="left"){

right_move.animate({

left:
"90px", /*中间*/

top:
"30px",

width:
"680px",

height:
"340px",

},
150 );

right_move.css(
"z-index","1"); //最高层

}
else if(flat=="right"){

right_move.animate({

left:
"0",//最左边对象位置

top:
"70px",

width:
"520px",

height:
"260px",

},
10 );//10,以最快的速度变换位置

right_move.css(
"z-index","0");

}







}
//end right



function cont_obj(){

cont_move
=$("[flat=cont]");

if(flat=="left"){

cont_move.animate({

left:
"0",

top:
"70px",

width:
"520px",

height:
"260px",

},
100 );



}
else if(flat=="right"){

cont_move.animate({

left:
"340px",

top:
"70px",

width:
"520px",

height:
"260px",

},
100 );

}

cont_move.css(
"z-index","0");

}









$(
"#button_left").click(function(){

flat
="left";

left_obj();

right_obj();

cont_obj();

to_left();

})



$(
"#button_right").click(function(){

flat
="right";

left_obj();

right_obj();

cont_obj();

to_right();

})







});

</script>

</body>

</html>

 

    文章就写到这里,本人是个新手,如有哪里写不好或错漏,欢迎指点!!!