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 相关文章推荐
js限制文本框只能输入数字(正则表达式)
Jul 15 Javascript
js输出阴历、阳历、年份、月份、周示例代码
Jan 29 Javascript
Extjs grid添加一个图片状态或者按钮的方法
Apr 03 Javascript
js实现商品抛物线加入购物车特效
Nov 18 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
Jan 12 Javascript
vue.js+Element实现表格里的增删改查
Jan 18 Javascript
浅谈mint-ui 填坑之路
Nov 06 Javascript
基于Vue的移动端图片裁剪组件功能
Nov 28 Javascript
浅谈Webpack自动化构建实践指南
Dec 18 Javascript
微信小程序实现聊天对话(文本、图片)功能
Jul 06 Javascript
详解django模板与vue.js冲突问题
Jul 07 Javascript
Vue实现摇一摇功能(兼容ios13.3以上)
Jan 26 Vue.js
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
php实现MySQL数据库备份与还原类实例
2014/12/09 PHP
php简单socket服务器客户端代码实例
2015/05/18 PHP
php cookie工作原理与实例详解
2016/07/18 PHP
ThinkPHP下表单令牌错误与解决方法分析
2017/05/20 PHP
thinkPHP实现基于ajax的评论回复功能
2018/06/22 PHP
详解PHP实现支付宝小程序用户授权的工具类
2018/12/25 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
2019/05/27 PHP
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
得到form下的所有的input的js代码
2013/11/07 Javascript
jQuery实现鼠标划过展示大图的方法
2015/03/09 Javascript
js查看一个函数的执行时间实例代码
2015/09/12 Javascript
vue制作加载更多功能的正确打开方式
2016/10/12 Javascript
EasyUi 打开对话框后控件赋值及赋值后不显示的问题解决办法
2017/01/19 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
浅谈VUE单页应用首屏加载速度优化方案
2018/08/28 Javascript
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
详解基于原生JS验证表单组件xy-form
2019/08/20 Javascript
node express使用HTML模板的方法示例
2019/08/22 Javascript
[10:18]2018DOTA2国际邀请赛寻真——找回自信的TNCPredator
2018/08/13 DOTA
Pyqt实现无边框窗口拖动以及窗口大小改变
2018/04/19 Python
Pandas DataFrame中的tuple元素遍历的实现
2019/10/23 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
2019/12/09 Python
Python 代码调试技巧示例代码
2020/08/11 Python
美国顶尖折扣时尚购物网:Bluefly
2016/08/28 全球购物
园长自我鉴定
2013/10/06 职场文书
售后服务科岗位职责范文
2013/11/13 职场文书
厂长岗位职责
2014/02/19 职场文书
城市规划应届毕业生自荐信
2014/07/04 职场文书
中班教师个人总结
2015/02/05 职场文书
2015年七一建党节演讲稿
2015/03/19 职场文书
团干部培训班心得体会
2016/01/06 职场文书
高一化学教学反思
2016/02/22 职场文书
django中websocket的具体使用
2022/01/22 Python
Java Redisson多策略注解限流
2022/09/23 Java/Android