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 TextArea动态显示剩余字符
Oct 22 Javascript
JavaScript Konami Code 实现代码
Jul 29 Javascript
一步一步制作jquery插件Tabs实现过程
Jul 06 Javascript
JS获取页面窗口大小的代码解读
Dec 01 Javascript
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
Apr 02 Javascript
node.js中的fs.truncate方法使用说明
Dec 15 Javascript
jQuery代码实现发展历程时间轴特效
Jul 30 Javascript
卸载安装Node.js与npm过程详解
Aug 15 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
Dec 25 Javascript
angular或者js怎么确定选中ul中的哪几个li
Aug 16 Javascript
js实现上传并压缩图片效果
Jan 10 Javascript
vue实现点击追加选中样式效果
Nov 01 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&amp;&amp;mysql)五
2006/10/09 PHP
对Session和Cookie的区分与解释
2007/03/16 PHP
解析php dirname()与__FILE__常量的应用
2013/06/24 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
2013/06/27 PHP
PHP批量检测并去除文件BOM头代码实例
2014/05/08 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
PHP7基于curl实现的上传图片功能
2018/05/11 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
2018/06/06 PHP
javascript的对话框详解与参数
2007/03/08 Javascript
用JS动态改变表单form里的action值属性的两种方法
2016/05/25 Javascript
浅谈JavaScript中小数和大整数的精度丢失
2016/05/31 Javascript
jQuery快速实现商品数量加减的方法
2017/02/06 Javascript
vue中el-upload上传图片到七牛的示例代码
2018/10/19 Javascript
使用JavaScrip模拟实现仿京东搜索框功能
2019/10/16 Javascript
vue下的@change事件的实现
2019/10/25 Javascript
vue中的使用token的方法示例
2020/03/10 Javascript
[02:51]2014DOTA2国际邀请赛 IG战队官方纪录片
2014/07/21 DOTA
快速排序的算法思想及Python版快速排序的实现示例
2016/07/02 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
2019/06/13 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
2019/08/09 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
2020/01/16 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
2020/03/12 Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
2020/11/11 Python
学点简单的Django之第一个Django程序的实现
2021/02/24 Python
John Hardy官方网站:手工设计首饰的奢侈品牌
2017/07/05 全球购物
英国奢侈品概念店:Base Blu
2019/05/16 全球购物
宗教学大学生职业生涯规划范文
2014/02/08 职场文书
上课打牌的检讨书
2014/02/15 职场文书
创新型城市实施方案
2014/03/06 职场文书
爱情寄语大全
2014/04/09 职场文书
资产运营委托书范本
2014/10/16 职场文书
实训报告范文大全
2014/11/04 职场文书
卫生院艾滋病宣传活动总结
2015/05/09 职场文书
培训后的感想
2015/08/07 职场文书
严以用权学习心得体会
2016/01/12 职场文书
又涨知识了,自律到底多重要?
2019/06/27 职场文书