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 相关文章推荐
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
Dec 27 Javascript
按下回车键指向下一个位置的一个函数代码
Mar 10 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
Jun 16 Javascript
javascript图片切换综合实例(循环切换、顺序切换)
Jan 13 Javascript
js实现的页面矩阵图形变换特效
Jan 26 Javascript
XML、HTML、CSS与JS的区别整理
Feb 18 Javascript
node.js中http模块和url模块的简单介绍
Oct 06 Javascript
解决layui中的form表单与button的点击事件冲突问题
Aug 15 Javascript
React 使用recharts实现散点地图的示例代码
Dec 07 Javascript
Node.js+Express+Mysql 实现增删改查
Apr 03 Javascript
vue移动端弹起蒙层滑动禁止底部滑动操作
Jul 22 Javascript
Openlayers实现图形绘制
Sep 28 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
与数据库连接
2006/10/09 PHP
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
2006/12/06 PHP
php_xmlhttp 乱码问题解决方法
2009/08/07 PHP
php指定函数参数默认值示例代码
2013/12/04 PHP
举例详解PHP脚本的测试方法
2015/08/05 PHP
使用PHP如何实现高效安全的ftp服务器(二)
2015/12/30 PHP
YII2.0之Activeform表单组件用法实例
2016/01/09 PHP
动态调用CSS文件的JS代码
2010/07/29 Javascript
Javascript 面向对象(三)接口代码
2012/05/23 Javascript
根据身份证号自动输出相关信息(籍贯,出身日期,性别)
2013/11/15 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
Linux下编译安装php libevent扩展实例
2015/02/14 Javascript
深入分析Javascript跨域问题
2015/04/17 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
JavaScript浮点数及运算精度调整详解
2016/10/21 Javascript
Javascript计算二维数组重复值示例代码
2016/12/18 Javascript
vue项目中在可编辑div光标位置插入内容的实现代码
2020/01/07 Javascript
详解vue3.0 的 Composition API 的一种使用方法
2020/10/26 Javascript
Python实现二叉搜索树
2016/02/03 Python
Python实现的端口扫描功能示例
2018/04/08 Python
详谈python在windows中的文件路径问题
2018/04/28 Python
python3中的logging记录日志实现过程及封装成类的操作
2020/05/12 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
运行python提示no module named sklearn的解决方法
2020/11/29 Python
HTML5 CSS3实现一个精美VCD包装盒个性幻灯片案例
2014/06/16 HTML / CSS
关于h5中的fetch方法解读(小结)
2017/11/15 HTML / CSS
如何在Oracle中查看各个表、表空间占用空间的大小
2015/10/31 面试题
毕业生文员求职信
2013/11/03 职场文书
数控专业毕业生自荐信范文
2014/03/04 职场文书
对公司合理化的建议书
2014/03/12 职场文书
旅游活动总结
2014/08/27 职场文书
年会主持人开场白台词
2015/05/29 职场文书
工作表现证明
2015/06/15 职场文书
大学三好学生主要事迹范文
2015/11/03 职场文书
小学语文教师研修感悟
2015/11/18 职场文书
如何vue使用el-table遍历循环表头和表体数据
2022/04/26 Vue.js