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 相关文章推荐
jquery实现鼠标点击后展开列表内容的导航栏效果
Sep 14 Javascript
点评js异步加载的4种方式
Dec 22 Javascript
jQuery的promise与deferred对象在异步回调中的作用
May 03 Javascript
微信小程序 实现tabs选项卡效果实例代码
Oct 31 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
Sep 18 Javascript
微信小程序简单实现form表单获取输入数据功能示例
Nov 30 Javascript
vue中Axios的封装与API接口的管理详解
Aug 09 Javascript
AngularJS自定义表单验证功能实例详解
Aug 24 Javascript
详解微信小程序实现仿微信聊天界面(各种细节处理)
Feb 17 Javascript
JavaScript中的事件与异常捕获详析
Feb 24 Javascript
微信小程序实现签字功能
Dec 23 Javascript
jQuery AJAX应用实例总结
May 19 jQuery
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编写的简单页面跳转功能实现代码
2013/11/27 PHP
php一行代码获取文件后缀名实例分析
2014/11/12 PHP
WordPress过滤垃圾评论的几种主要方法小结
2016/07/11 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
2017/06/21 PHP
PHP实现微信退款功能
2018/10/02 PHP
PHP封装的简单连接MongoDB类示例
2019/02/13 PHP
PHP实现支持CURL字符串证书传输的方法
2019/03/23 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
2021/03/09 PHP
javascript知识点收藏
2007/02/22 Javascript
js 单引号 传递方法
2009/06/22 Javascript
js Date概念详细介绍
2013/11/22 Javascript
JQuery中dataGrid设置行的高度示例代码
2014/01/03 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
解决jquery版本冲突的有效方法
2014/09/02 Javascript
node.js中的console.error方法使用说明
2014/12/10 Javascript
Angularjs注入拦截器实现Loading效果
2015/12/28 Javascript
javascript实现PC网页里的拖拽效果
2016/03/14 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
2016/04/11 Javascript
jQuery下拉框的简单应用
2016/06/24 Javascript
JavaScript给每一个li节点绑定点击事件的实现方法
2016/12/01 Javascript
js图片延迟加载(Lazyload)三种实现方式
2017/03/01 Javascript
基于three.js编写的一个项目类示例代码
2018/01/05 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
2018/04/23 Javascript
JS数组方法shift()、unshift()用法实例分析
2020/01/18 Javascript
在MAC上搭建python数据分析开发环境
2016/01/26 Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
2018/12/05 Python
python自定义函数实现一个数的三次方计算方法
2019/01/20 Python
django 消息框架 message使用详解
2019/07/22 Python
python通过链接抓取网站详解
2019/11/20 Python
Python run()函数和start()函数的比较和差别介绍
2020/05/03 Python
瑞典手机壳品牌:Richmond & Finch
2018/04/28 全球购物
品恩科技软件测试面试题
2014/10/26 面试题
给民警的表扬信
2014/01/08 职场文书
2015年学校团委工作总结
2015/05/26 职场文书
单位收入证明范本
2015/06/18 职场文书
教学工作总结范文5篇
2019/08/19 职场文书