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截取固定长度的中英文字符的简单实例
Nov 22 Javascript
在javascript中实现函数数组的方法
Dec 25 Javascript
javascript实现百度地图鼠标滑动事件显示、隐藏
Apr 02 Javascript
jQuery toggle 代替方法
Mar 22 Javascript
javascript中JSON.parse()与eval()解析json的区别
May 19 Javascript
微信小程序加载更多 点击查看更多
Nov 29 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
Apr 10 Javascript
AngularJS学习笔记之表单验证功能实例详解
Jul 06 Javascript
详解angularjs popup-table 弹出框表格指令
Sep 20 Javascript
vue脚手架及vue-router基本使用
Apr 09 Javascript
vue父组件异步获取数据传给子组件的方法
Jul 26 Javascript
解决js中的setInterval清空定时器不管用问题
Nov 17 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+MySQL 制作简单的留言本
2009/11/02 PHP
PHP新手入门学习方法
2011/05/08 PHP
phpExcel导出大量数据出现内存溢出错误的解决方法
2013/02/28 PHP
php导入excel文件到mysql数据库的方法
2015/01/14 PHP
php生成圆角图片的方法
2015/04/07 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
2016/02/23 PHP
JQuery获取与设置HTML元素的内容或文本的实现代码
2014/06/20 Javascript
jquery中push()的用法(数组添加元素)
2014/11/25 Javascript
原生js和jquery实现图片轮播淡入淡出效果
2015/04/23 Javascript
jQuery on()方法示例及jquery on()方法的优点
2015/08/27 Javascript
基于javascript实现简单计算器功能
2016/01/03 Javascript
jQuery中的基本选择器用法学习教程
2016/04/14 Javascript
xmlplus组件设计系列之选项卡(Tabbar)(5)
2017/05/03 Javascript
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
Vue实现自定义下拉菜单功能
2018/07/16 Javascript
解决vue跨域axios异步通信问题
2019/04/17 Javascript
小程序关于请求同步的总结
2019/05/05 Javascript
Vue.js数字输入框组件使用方法详解
2019/10/19 Javascript
js函数柯里化的方法和作用实例分析
2020/04/11 Javascript
vue+elementUI 实现内容区域高度自适应的示例
2020/09/26 Javascript
vue v-model的用法解析
2020/10/19 Javascript
原生js实现下拉框选择组件
2021/01/20 Javascript
python回调函数用法实例分析
2015/05/09 Python
详解使用python的logging模块在stdout输出的两种方法
2017/05/17 Python
带你了解python装饰器
2017/06/15 Python
Python对数据进行插值和下采样的方法
2018/07/03 Python
详解Django-auth-ldap 配置方法
2018/12/10 Python
python调用opencv实现猫脸检测功能
2019/01/15 Python
Python爬虫爬取新闻资讯案例详解
2020/07/14 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
理肤泉加拿大官网:La Roche-Posay加拿大
2018/07/06 全球购物
元旦促销方案
2014/03/15 职场文书
初三学习计划书范文
2014/04/30 职场文书
班级学习雷锋活动总结
2014/07/04 职场文书
css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效
2021/04/29 HTML / CSS
浅谈Python中对象是如何被调用的
2022/04/06 Python