如何用jQuery实现一个简单的3D轮播图

demo1.jpg

写功能的时候查了很多的demo。
各有好坏。
恰巧自己也是刚转前端。索性摸索自己写了一个。
项目要求的功能很多、整理的时候把一些特殊功能都去掉了。
只留下轮播的效果。
效果如下:

4868e4a9-be3f-4d26-9b0d-34e999b3aabc.gif
  • 核心代码

  .carousel .img{
    overflow: hidden;
    position: absolute;
    transition: width 0.4s,height 0.4s,top 0.4s,left 0.4s,z-index 0.4s;
  }

轮播的时候图片移动和缩放、归功于class---img
<div class="carousel">

<div class="img">
img/text等
</div>
<div class="img">
img/text等
</div>
</div>
盒子不一定非要用div、用ul、li啥的都一个样。只要class设置成img就行。哪怕你懒得在这里设置、js里循环大盒子carousel去设置img也是一样的。再或者carousel.li{...}设置、总之只要给他动画属性就行了。都一个样

之后、之后设定好各自图片的位置class(img1/2/3/4/5)就好了
在对各自位置class进行重新分配的时候、会由class--img的动画将其过渡到相应的位置。


98d7bee6-adb7-4aed-83e0-65ac2d61579a.gif
我们的需求是展示3张图片、所以我只写了3个实体的位置class

反正自己需要啥样的排版、自己写几个class就行了
.slide .img1{
width: 0px;
height: 0px;
top: 30%;
left: -50%;
z-index: 1;
}
.slide .img2{
width: 500px;
height: 200px;
top: 20%;
left: -20%;
z-index: 2;
}
.slide .img3{
width: 840px;
height: 340px;
top: 10%;
left: 15%;
z-index: 3;
}
.slide .img4{
width: 500px;
height: 200px;
top: 20%;
left: 60%;
z-index: 2;
}
.slide .img5{
width: 0px;
height: 0px;
top: 30%;
left: 110%;
z-index: 1;
}

接下来。就交由js进行了
  • 首先。要给每个img添加相应的唯一标记、方便接下来获取。
    imgNub = $(".carousel .img").size();
    //获取轮播图片数量
    for(i=0;i<imgNub;i++){
    $(".carousel .img:eq("+i+")").attr("imgId",i);
    }
    然后为相应位置的img配置初始位置。
    我展示出来了3张。img2在左、img3在中间、img4在右侧。img1/5隐藏掉了。(如果你先展示出来5张、就再加个img0、img6。都一个样)
    基本就是为了兼容各种数量的图片。给他们一个初始的位置。
    嗯、截取一段意思意思。
    if(imgNub>3&&imgNub<6){
    //img 1、2、3、4、(5)
    for(i=0;i<imgNub;i++){
    $(".carousel .img:eq("+i+")").addClass("img"+(i+1));
    }
    }

经过以上半手动设置。每个img有了自己的位置class以及唯一的标识id。

接下来、只要实现左右滑动就OK了。
//右滑动
function right(){
var fy = [];
//我们需要将原来的每个位置class。依序放到数组里。
for(i=0;i<imgNub;i++){
//imgId最初设置的时候是0-X。取出相应位置class的时候自然也是有序的
fy[i]=$(".carousel .img[imgId="+i+"]").attr("class");
}
for(i=0;i<imgNub;i++){
if(i==0){
//将最左边图移动到最右边、实现轮播。0->5
$(".carousel .img[imgId="+i+"]").attr("class",fy[imgNub-1]);
}else{
//其他依次后(左)移:1->0 2->1....
$(".carousel .img[imgId="+i+"]").attr("class",fy[i-1]);
}
}
imgClicked();
}
最后就是左右两张图的点击事件、每次移动之后刷一遍就行:
$(".carousel .img").removeAttr("onclick");
$(".carousel .img2").attr("onclick","left()");
$(".carousel .img4").attr("onclick","right()");

最后、虽然我为了易懂把一些与效果无关的代码去掉了。但关于一些其他功能还是可以说两句。

比如文字:
你完全可以在每个img的box里写一个p。然后隐藏掉。
在每次刷新完之后赋值给需要展示的p。(其实点击跳转的事件也是一个道理、把img3--也就是屏幕中央的那个img的跳转单独打开就行了)

$('.list_title').html($('.img3').find(".li_title").text())
$('.list_text').html($('.img3').find(".li_text").text())

自动轮播:
更没说的~加个定时器就行。

如果你要是干活、只想要一段代码。前端效果插件网站上一搜一大片、各种功能各种样式。
但是我看的都是万变不离其宗、所以我也没弄太多的功能上来。
这个demo是我觉得能讲清楚原理最简化的demo了。

https://github.com/kiritoSong/CarouselDemo
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,728评论 1 92
  • 各种纯css图标 CSS3可以实现很多漂亮的图形,我收集了32种图形,在下面列出。直接用CSS3画出这些图形,要比...
    剑残阅读 9,476评论 0 8
  • 1. tab列表折叠效果 html: 能源系统事业部 岗位名称: 工作地点 岗位名...
    lilyping阅读 1,832评论 0 1
  • 一、关键词:梳理、成长、深思 二、3月整体分析 3月重点核心目标3个,完成1个,有1个完成一半。练车,新的一年正式...
    Doris壹燕阅读 225评论 0 3
  • “你陪我长大,我陪你到老” 01 我们曾经笃信, 幸福就是逃离父母的樊笼,去看外面的大千世界; 终有一天,我们得尝...
    白格姨妈阅读 202评论 3 0