jQuery+CSS3实现3D立方体旋转效果


Posted in Javascript onNovember 10, 2015

本文介绍了如何利用jQuery+CSS3实现3D立方体旋转效果,先看一看效果图:

jQuery+CSS3实现3D立方体旋转效果

切换图片过程中,图片进行旋转:

jQuery+CSS3实现3D立方体旋转效果

HTML结构
3D图片画廊的图片列表和导航按钮分别使用两个无序列表来制作。

<section>
 <div id="css3dimageslider" class="transparency">
 <ul>
  <li> <img src="img/css3dimg1.jpg"> </li>
  <li> <img src="img/css3dimg2.jpg"> </li>
  <li> <img src="img/css3dimg3.jpg"> </li>
  <li> <img src="img/css3dimg4.jpg"> </li>
 </ul>
 </div>
 <ul id="css3dimagePager">
 <li class="active">Image 1</li>
 <li>Image 2</li>
 <li>Image 3</li>
 <li>Image 4</li>
 </ul>
 <p id="css3dtransparency" class="active">点击上面的按钮切换图片</p>
</section>

CSS样式
为了制作3D透视效果,需要在#css3dimageslider元素上设置perspective 透视属性,并在它里面的无序列表元素上设置transform-style: preserve-3d;,由于IE浏览器不支持这个属性,所以在IE浏览器中是看不到效果的。接下来通过:nth-child选择器分别选择每一个列表项,并通过translateZ和rotateY属性对它们进行3D转换,形成立方体效果。

#css3dimagePager, #css3dtransparency {
 text-align: center;
 position: relative;
 z-index: 11;
 padding: 0 0 10px;
 margin: 0;
}
#css3dimagePager li {
 padding-right: 2em;
 display: inline-block;
 cursor: pointer;
}
#css3dimagePager li.active, #css3dtransparency.active {
 font-weight: bold;
}
#css3dimageslider {
 -webkit-perspective: 800;
 -moz-perspective: 800px;
 -ms-perspective: 800;
 perspective: 800;
 -webkit-perspective-origin: 50% 100px;
 -moz-perspective-origin: 50% 100px;
 -ms-perspective-origin: 50% 100px;
 perspective-origin: 50% 100px;
 margin: 100px auto 20px auto;
 width: 450px;
 height: 400px;
}
#css3dimageslider ul {
 position: relative;
 margin: 0 auto;
 height: 281px;
 width: 450px;
 list-style: none;
 -webkit-transform-style: preserve-3d;
 -moz-transform-style: preserve-3d;
 -ms-transform-style: preserve-3d;
 transform-style: preserve-3d;
 -webkit-transform-origin: 50% 100px 0;
 -moz-transform-origin: 50% 100px 0;
 -ms-transform-origin: 50% 100px 0;
 transform-origin: 50% 100px 0;
 -webkit-transition: all 1.0s ease-in-out;
 -moz-transition: all 1.0s ease-in-out;
 -ms-transition: all 1.0s ease-in-out;
 transition: all 1.0s ease-in-out;
}
#css3dimageslider ul li {
 position: absolute;
 height: 281px;
 width: 450px;
 padding: 0px;
}
#css3dimageslider ul li:nth-child(1) {
 -webkit-transform: translateZ(225px);
 -moz-transform: translateZ(225px);
 -ms-transform: translateZ(225px);
 transform: translateZ(225px);
}
#css3dimageslider ul li:nth-child(2) {
 -webkit-transform: rotateY(90deg) translateZ(225px);
 -moz-transform: rotateY(90deg) translateZ(225px);
 -ms-transform: rotateY(90deg) translateZ(225px);
 transform: rotateY(90deg) translateZ(225px);
}
#css3dimageslider ul li:nth-child(3) {
 -webkit-transform: rotateY(180deg) translateZ(225px);
 -moz-transform: rotateY(180deg) translateZ(225px);
 -ms-transform: rotateY(180deg) translateZ(225px);
 transform: rotateY(180deg) translateZ(225px);
}
#css3dimageslider ul li:nth-child(4) {
 -webkit-transform: rotateY(-90deg) translateZ(225px);
 -moz-transform: rotateY(-90deg) translateZ(225px);
 -ms-transform: rotateY(-90deg) translateZ(225px);
 transform: rotateY(-90deg) translateZ(225px);
}
#css3dimageslider.transparency img {
 opacity: 0.7;
}

JavaScript

最后在jQuery代码中,在点击按钮的时候相应的#css3dimageslider ul元素的rotateY属性,是器旋转,并为其添加一个.active class。

<script>
 $(document).ready(function() {
 
 $("#css3dimagePager li").click(function(){
 var rotateY = ($(this).index() * -90); 
 $("#css3dimageslider ul").css({"-webkit-transform":"rotateY("+rotateY+"deg)", "-moz-transform":"rotateY("+rotateY+"deg)", "-ms-transform":"rotateY("+rotateY+"deg)", "transform":"rotateY("+rotateY+"deg)"});
  $("#css3dimagePager li").removeClass("active");
  $(this).addClass("active");
 });
 
 $("#css3dtransparency").click(function() {
  $("#css3dimageslider").toggleClass("transparency");
  $(this).toggleClass("active");
 });
 
 });
</script>

以上就是jQuery结合CSS3来制作3D立方体旋转效果的关键代码分享,希望对大家学习有所帮助。

Javascript 相关文章推荐
Javascript 各浏览器的 Javascript 效率对比
Jan 23 Javascript
JavaScript Date对象使用总结
May 14 Javascript
jQuery EasyUI API 中文文档 - ComboBox组合框
Oct 07 Javascript
jQuery链式操作实例分析
Nov 16 Javascript
Angular 路由route实例代码
Jul 12 Javascript
浅谈js内置对象Math的属性和方法(推荐)
Sep 19 Javascript
JQuery学习总结【二】
Dec 01 Javascript
vue2.0父子组件间传递数据的方法
Aug 16 Javascript
深入浅析javascript函数中with
Oct 28 Javascript
vue中使用better-scroll实现滑动效果及注意事项
Nov 15 Javascript
vue使用axios上传文件(FormData)的方法
Apr 14 Javascript
原生js实现分页效果
Sep 23 Javascript
JavaScript中利用各种循环进行遍历的方式总结
Nov 10 #Javascript
简单学习JavaScript中的for语句循环结构
Nov 10 #Javascript
js密码强度校验
Nov 10 #Javascript
详解javascript函数的参数
Nov 10 #Javascript
JavaScript函数的一些注意要点小结及js匿名函数
Nov 10 #Javascript
javascript实现五星评分功能
Nov 10 #Javascript
javascript实现密码验证
Nov 10 #Javascript
You might like
PHP开发过程中常用函数收藏
2009/12/14 PHP
php实现简单的权限管理的示例代码
2017/08/25 PHP
for 循环性能比较 提高for循环的效率
2009/03/19 Javascript
简单的js分页脚本
2009/05/21 Javascript
原生js实现跨浏览器获取鼠标按键的值
2013/04/08 Javascript
jquery 判断滚动条到达了底部和顶端的方法
2014/04/02 Javascript
JavaScript中window.open用法实例详解
2015/04/15 Javascript
js实现不重复导入的方法
2016/03/02 Javascript
JavaScript中的继承之类继承
2016/05/01 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
2016/10/13 Javascript
bootstrap响应式工具使用详解
2017/11/29 Javascript
javascrit中undefined和null的区别详解
2019/04/07 Javascript
js+canvas实现简单扫雷小游戏
2021/01/22 Javascript
JavaScript中window和document用法详解
2020/07/28 Javascript
微信小程序自定义tabBar的踩坑实践记录
2020/11/06 Javascript
Python实现把xml或xsl转换为html格式
2015/04/08 Python
详解Python中的动态属性和特性
2018/04/07 Python
python采集微信公众号文章
2018/12/20 Python
Python 处理图片像素点的实例
2019/01/08 Python
Python基础教程之异常详解
2019/01/10 Python
Python3.5文件修改操作实例分析
2019/05/01 Python
python实现发送form-data数据的方法详解
2019/09/27 Python
Python中的引用和拷贝实例解析
2019/11/14 Python
python实现ftp文件传输功能
2020/03/20 Python
基于SQLAlchemy实现操作MySQL并执行原生sql语句
2020/06/10 Python
属性与 @property 方法让你的python更高效
2020/09/21 Python
python 装饰器重要在哪
2021/02/14 Python
html5生成柱状图(条形图)效果的实例代码
2016/03/25 HTML / CSS
美国Lolё官网:购买大胆而美丽的女性运动服装
2017/05/22 全球购物
维多利亚的秘密官方网站:Victoria’s Secret
2018/10/24 全球购物
Everything But Water官网:美国泳装品牌
2019/03/17 全球购物
英文翻译的自我评价语句
2013/10/04 职场文书
2014基层党员干部学习全国两会心得体会
2014/03/17 职场文书
二审代理词范文
2015/05/25 职场文书
《全神贯注》教学反思
2016/02/22 职场文书
Docker与K8s关系介绍不会Docker也可以使用K8s
2022/06/25 Servers