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 相关文章推荐
根据分辨率不同,调用不同的css文件
Aug 25 Javascript
简单的js分页脚本
May 21 Javascript
URL地址中的#符号使用说明
Feb 12 Javascript
javascript解决innerText浏览器兼容问题思路代码
May 17 Javascript
JS获取鼠标坐标的实例方法
Jul 18 Javascript
回车直接实现点击某按钮的效果即触发单击事件
Feb 27 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
Jul 28 Javascript
Javascript 获取鼠标当前的位置实现方法
Oct 27 Javascript
jQuery实现的模仿雨滴下落动画效果
Dec 11 jQuery
vue实现直播间点赞飘心效果的示例代码
Sep 20 Javascript
vue实现点击按钮下载文件功能
Oct 11 Javascript
JS中==、===你分清楚了吗
Mar 04 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
TreeView 用法(有代码)(asp.net)
2011/07/15 Javascript
cookie.js 加载顺序问题怎么才有效
2013/07/31 Javascript
jQuery异步获取json数据方法汇总
2014/12/22 Javascript
客户端验证用户名和密码的方法详解
2016/06/16 Javascript
学习使用jQuery表单验证插件和日历插件
2017/02/13 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
react.js CMS 删除功能的实现方法
2017/04/17 Javascript
Vue学习之路之登录注册实例代码
2017/07/06 Javascript
手写Node静态资源服务器的实现方法
2018/03/20 Javascript
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
Vue插值、表达式、分隔符、指令知识小结
2018/10/12 Javascript
微信小程序实现发送验证码按钮效果
2018/12/20 Javascript
layui实现三级联动效果
2019/07/26 Javascript
jsonp格式前端发送和后台接受写法的代码详解
2019/11/07 Javascript
JS实现页面数据懒加载
2020/02/13 Javascript
Python易忽视知识点小结
2015/05/25 Python
Python使用迭代器打印螺旋矩阵的思路及代码示例
2016/07/02 Python
python网络编程调用recv函数完整接收数据的三种方法
2017/03/31 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
python使用socket创建tcp服务器和客户端
2018/04/12 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
2019/05/27 Python
python调用并链接MATLAB脚本详解
2019/07/05 Python
Python列表倒序输出及其效率详解
2020/03/04 Python
Python的PIL库中getpixel方法的使用
2020/04/09 Python
python中把元组转换为namedtuple方法
2020/12/09 Python
html5中svg canvas和图片之间相互转化思路代码
2014/01/24 HTML / CSS
俄罗斯鲜花递送:AMF
2020/04/24 全球购物
出国签证在职证明
2014/09/20 职场文书
支部书记四风问题对照检查材料
2014/10/04 职场文书
党员群众路线自我剖析材料
2014/10/06 职场文书
民事和解协议书格式
2014/11/29 职场文书
长城导游词400字
2015/01/30 职场文书
学生会自荐信
2019/05/16 职场文书
nginx proxy_cache 缓存配置详解
2021/03/31 Servers
html原生table实现合并单元格以及合并表头的示例代码
2023/05/07 HTML / CSS