css transform 3D幻灯片特效实现步骤解读


Posted in Javascript onMarch 27, 2013

js

$(function(){ 
var length = $(".container a").length; 
var $items = $(".container a"); 
$items.on("transitionend", function(event){ 
$items.removeClass("trans"); 
}); 
$(".container a").each(function(index, value){ 
var $child = $(this); 
if (index === 0) { 
$child.addClass("current showing"); 
} else if (index === 1) { 
$child.addClass("left showing"); 
} else if (index == 2) { 
$child.addClass("out-left"); 
} else if (index == (length - 2)) { 
$child.addClass("out-right"); 
} else if (index === (length - 1)) { 
$child.addClass("right showing"); 
} else { 
$child.addClass("hiding"); 
}; 
$child.click(function(){ 
var $item = $(this); 
//next item 
var $nextItem = (index === (length - 1)) ? $items.eq(0) : $items.eq(index + 1); 
//previous item 
var $preItem = (index === 0) ? $items.eq(length - 1) : $items.eq(index - 1); 
var $rightItem; 
if(index == 0){ 
$rightItem = $items.eq(length - 2); 
} else if (index == 1) { 
$rightItem = $items.eq(length - 1); 
} else { 
$rightItem = $items.eq(index - 2); 
} 
var $leftItem; 
if(index == length - 2){ 
$leftItem = $items.eq(0); 
} else if (index == length - 1) { 
$leftItem = $items.eq(1); 
} else { 
$leftItem = $items.eq(index + 2); 
} 
//current item click,return 
if ($item.hasClass("current")) { 
return false; 
} else if ($item.hasClass("left")) { 
//center move right 
$preItem.attr("class","trans right showing"); 
//left move center 
$item.attr("class","trans current showing"); 
//right item move out 
$rightItem.attr("class","trans out-right"); 
//next move left 
$nextItem.attr("class","trans left showing"); 
//left ready 
$leftItem.attr("class","out-left"); 
} else if ($item.hasClass("right")) { 
//center move left 
$nextItem.attr("class","trans left showing"); 
//right move center 
$item.attr("class","trans current showing"); 
//left item clear 
$leftItem.attr("class","trans out-left"); 
//previous move right 
$preItem.attr("class","trans right showing"); 
//right ready 
$rightItem.attr("class","out-right"); 
}; 
}); 
}); 
});

html
<html> 
<head> 
<title>slideshow</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<link rel="stylesheet" type="text/css" href="slide.css"> 
</head> 
<body> 
<div class="container"> 
<div class="wapper"> 
<a href="javascript:void(0)"><img src="https://lh6.googleusercontent.com/-KIgBNvrrORQ/UVJOzcGIOKI/AAAAAAAAACE/mL6ujDu-3vQ/s1038/1.jpg" alt="1" /></a> 
<a href="javascript:void(0)"><img src="https://lh6.googleusercontent.com/-hWNOas_yOGk/UVJOzaN-dPI/AAAAAAAAACI/QJb_mj76hv0/s1038/10.jpg" alt="2" /></a> 
<a href="javascript:void(0)"><img src="https://lh4.googleusercontent.com/-Dop6scyA0D4/UVJOzVaYywI/AAAAAAAAACM/5RwzULHpEWQ/s1038/2.jpg" alt="3"/></a> 
<a href="javascript:void(0)"><img src="https://lh6.googleusercontent.com/-5HrHIQyz6Ok/UVJO1golL-I/AAAAAAAAACk/hJN972jmg4g/s1038/3.jpg" alt="4"/></a> 
<a href="javascript:void(0)"><img src="https://lh6.googleusercontent.com/-W1LBipEDZUU/UVJO1qI3kQI/AAAAAAAAACg/eeTYFiGmNgw/s1038/4.jpg" alt="5"/></a> 
<a href="javascript:void(0)"><img src="https://lh6.googleusercontent.com/-KvNsoffzejc/UVJO1LRTnoI/AAAAAAAAACU/Nv7yH95zqFo/s1038/5.jpg" alt="6"/></a> 
<a href="javascript:void(0)"><img src="https://lh6.googleusercontent.com/-T31bgnUYzeA/UVJO3B3VHCI/AAAAAAAAACw/TOpCZ0zJfZ0/s1038/6.jpg" alt="7"/></a> 
<a href="javascript:void(0)"><img src="https://lh5.googleusercontent.com/-tvR6IES_W9I/UVJO4HZYM8I/AAAAAAAAAC8/9yzl4C4qtm8/s1038/7.jpg" alt="8"/></a> 
<a href="javascript:void(0)"><img src="https://lh5.googleusercontent.com/-Li5wNWZ6BOI/UVJO3ZdRYDI/AAAAAAAAAC0/Nk_JSi8fJtQ/s1038/8.jpg" alt="9"/></a> 
<a href="javascript:void(0)"><img src="https://lh6.googleusercontent.com/-mig_PoX_wtM/UVJO5NrvmZI/AAAAAAAAADE/GI3o24bq3eY/s1038/9.jpg" alt="10"/></a> 
</div> 
</div> <script type="text/javascript" src="jquery-1.8.3.js"></script> 
<script type="text/javascript" src="slide.js"></script> 
</body> 
</html>

css
body,div{margin: 0;padding: 0;} 
.container{width: 100%;height: 450px; position: relative;} 
.container .wapper{margin: 0 auto; width: 480px;height: 300px; position: relative;-webkit-transform-style: preserve-3d;-webkit-perspective: 1000px;-moz-transform-style: preserve-3d;-moz-perspective: 1000px;} 
.container a{display: block;position: absolute;left: 0;top: 0;-webkit-box-shadow: 0px 1px 1px rgba(255,255,255,0.4);-moz-box-shadow:0px 1px 1px rgba(255,255,255,0.4);box-shadow: 0px 1px 1px rgba(255,255,255,0.4);cursor: pointer;} 
.container a img{width: 480px;height: 300px;display: block;border: 0;} 
.container .current{z-index: 2;} 
.container .left{-webkit-transform: translateX(-350px) translateZ(-200px) rotateY(45deg);-moz-transform: translateX(-350px) translateZ(-200px) rotateY(45deg);z-index: 1;} 
.container .right{-webkit-transform: translateX(350px) translateZ(-200px) rotateY(-45deg);-moz-transform: translateX(350px) translateZ(-200px) rotateY(-45deg);z-index: 1;} 
.showing{opacity: 1;visibility: visible;} 
.hiding{opacity: 0;visibility: hidden;} 
.out-right{-webkit-transform: translateX(-450px) translateZ(-300px) rotateY(45deg);-moz-transform: translateX(-450px) translateZ(-300px) rotateY(45deg);z-index: 1;opacity: 0;visibility: hidden;} 
.out-left{-webkit-transform: translateX(450px) translateZ(-300px) rotateY(-45deg);-moz-transform: translateX(450px) translateZ(-300px) rotateY(-45deg);z-index: 1;opacity: 0;visibility: hidden;} 
.trans{-webkit-transition: all 1s ease-in-out;-moz-transition: all 1s ease-in-out;transition: all 1s ease-in-out;}
Javascript 相关文章推荐
SinaEditor使用方法详解
Dec 28 Javascript
jquery form 加载数据示例
Apr 21 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
Oct 16 Javascript
基于BootStarp的Dailog
Apr 28 Javascript
浅谈JavaScript 浏览器对象
Jun 03 Javascript
Vue2.0 UI框架ElementUI使用方法详解
Apr 14 Javascript
微信小程序删除处理详解
Aug 16 Javascript
基于jQuery的左滑出现删除按钮的示例
Aug 29 jQuery
深入理解Angularjs 脏值检测
Oct 12 Javascript
Next.js实现react服务器端渲染的方法示例
Jan 06 Javascript
Vue数据绑定简析小结
May 07 Javascript
微信小程序rich-text富文本用法实例分析
May 20 Javascript
JS删除数组元素的函数介绍
Mar 27 #Javascript
jquery struts 验证唯一标识(公用方法)
Mar 27 #Javascript
Json对象与Json字符串互转(4种转换方式)
Mar 27 #Javascript
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
Mar 27 #Javascript
早该知道的7个JavaScript技巧
Mar 27 #Javascript
JavaScript中的style.display属性操作
Mar 27 #Javascript
jquery ajax提交整个表单元素的快捷办法
Mar 27 #Javascript
You might like
解析Linux下Varnish缓存的配置优化
2013/06/20 PHP
php二维数组排序方法(array_multisort usort)
2013/12/25 PHP
php使用Image Magick将PDF文件转换为JPG文件的方法
2015/04/01 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
Nginx实现反向代理
2017/09/20 Servers
判断滚动条到底部的JS代码
2013/11/04 Javascript
javascript制作2048游戏
2015/03/30 Javascript
jQuery实现商品活动倒计时
2015/10/16 Javascript
Spring mvc 接收json对象
2015/12/10 Javascript
详解利用exif.js解决ios手机上传竖拍照片旋转90度问题
2016/11/04 Javascript
详解Vue2.0里过滤器容易踩到的坑
2017/06/01 Javascript
浅谈react-native热更新react-native-pushy集成遇到的问题
2017/09/30 Javascript
Angular实现的简单定时器功能示例
2017/12/28 Javascript
vue嵌套路由与404重定向实现方法分析
2018/05/04 Javascript
vue自定义指令的创建和使用方法实例分析
2018/12/04 Javascript
深入浅析vue-cli@3.0 使用及配置说明
2019/05/08 Javascript
vue 地图可视化 maptalks 篇实例代码详解
2019/05/21 Javascript
扫微信小程序码实现网站登陆实现解析
2019/08/20 Javascript
js页面加载后执行的几种方式小结
2020/01/30 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
2020/08/08 Javascript
浅谈flask截获所有访问及before/after_request修饰器
2018/01/18 Python
Python各类图像库的图片读写方式总结(推荐)
2018/02/23 Python
python 列表递归求和、计数、求最大元素的实例
2018/11/28 Python
Python集中化管理平台Ansible介绍与YAML简介
2019/06/12 Python
Python发展史及网络爬虫
2019/06/19 Python
Django项目中使用JWT的实现代码
2019/11/04 Python
Python 获取异常(Exception)信息的几种方法
2020/12/29 Python
小学语文国培感言
2014/03/04 职场文书
心理学专业求职信
2014/06/16 职场文书
人代会标语
2014/06/30 职场文书
干部作风建设年活动剖析材料
2014/10/23 职场文书
2014年电话客服工作总结
2014/12/09 职场文书
师德先进个人事迹材料
2014/12/19 职场文书
2014年终个人总结报告
2015/03/09 职场文书
2015年新农村建设工作总结
2015/05/22 职场文书
python中的plt.cm.Paired用法说明
2021/05/31 Python