1.3D坐标系

3D坐标可以用左手来模拟,其中大拇指方向默认是X轴正方向,食指方向是Y轴正方向,中指方向是Z轴正方向。注意:当设置transform:rotateX(90deg)时,相当于将X轴转动90°,此时Z轴正方向向上,所以设置transform:translateZ(150px)时,就产生了3D立方体的上面,具体原理可以通过chrome浏览器审查元素来调试。

2.3D视图

  transform-style:flat(默认,二维效果) / preserve-3d(三维效果)。设置一个元素的transform-style:preserve-3d;只影响这个元素的子元素(如果孙元素也有3d效果,那么还必须给子元素设置preserve-3d)。这样所有子元素都可以相对与父元素的平面进行3d变形操作。和二维变形一样,三维变形可以使用transform属性来设置。可以通过制定的函数或者通过三维矩阵来对元素变型。列举几个函数:

  translate3d(x,y,z) 使元素在这三个纬度中移动,也可以分开写,如:translateX(length),translateY(length), translateZ(length)。注意z轴的值只能为px;

  scale3d(number,number,number) 使元素在这三个纬度中缩放,也可分开写,如:scaleX(),scaleY(),scaleY()。

  rotateX(angle) 是元素依照x轴旋转;

  rotateY(angle) 是元素依照y轴旋转;

  rotateZ(angle) 是元素依照z轴旋转。

3.perspective和transform-style的设置问题

(1)当设置perspective(length);不设置transform-style:preserve-3d;当元素静止时,会有立体的效果:

(2)当设置perspective(length);不设置transform-style:preserve-3d;当元素旋转时的效果:

(3)当设置transform-style:preserve-3d;不设置perspective(length);当元素静止时,不会有立体的效果:

(4)当设置perspective(length);不设置transform-style:preserve-3d;当元素旋转时的效果:

注意:(1)如果一个元素以x轴或y轴旋转90度以上的话,那么它的背面将面向用户。背面的元素始终是透明的,所以用户通过后面看到正面的反向形态,就像是从在玻璃门后面看对外张贴的标志。为了防止显示镜像的前面。可以将backface-visibility设置为hidden;如果backface-visibility:hidden;那么这个元素就不会在背面可见了。这么做的一个原因就是,想一个元素有两个面,就像一个扑克牌。比如:创建一张扑克牌,正面和背面一定不一样,这两个面的位置是背靠背的。这两个元素一起转动,正面逐步向后反转隐藏,同时背面向前反转并出现。如果背面的元素是可见的,旋转时它将掩盖它底下的元素,而不是露出它下面的元素。

   (2)如果父元素设置overflow:hidden;那么子元素就无法跳出父元素的平面,也就不能出现3D效果。就如同,transform-style:flat;

3.自己做得3D立方体

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><style>*{margin: 0;padding: 0;}.box{width: 200px;height: 200px;margin: 100px auto;font-size: 30px;color:red;line-height: 200px;position: relative;text-align: center;perspective:1000px;transform-style: preserve-3d;transform:rotateX(-30deg) rotateY(30deg);}.front, .back, .left, .right, .top, .bottom{width: 100%;height: 100%;opacity: 0.5;position: absolute;left: 0;top: 0;}.front{background-color: pink;transform: translateZ(100px);}.back{background-color: orange;transform: translateZ(-100px);}.left{background-color: blue;transform: rotateY(-90deg) translateZ(100px);}.right{background-color: red;transform: rotateY(90deg) translateZ(100px);}.top{background-color: green;transform: rotateX(-90deg) translateZ(-100px);}.bottom{background-color: yellowgreen;transform: rotateX(-90deg) translateZ(100px);}</style>
</head>
<body><div class="box"><div class="front">front</div><div class="back">back</div><div class="left">left</div><div class="right">right</div><div class="top">top</div><div class="bottom">bottom</div></div></body>
</html>

4.详细说明参照原地址

http://www.cnblogs.com/duanhuajian/archive/2012/08/30/2664026.html

5.扩展内容

有了3D的原理,我们就可以实现3D轮播图动画效果了,原理就是每个li标签有4个面,分别是前 、后、 上、下,相当于剔除了3D立方体的左右两面,再将每个li标签添加过渡动画:transition:all 1s linear;并且每个li之间必须有延时操作,代码中的图片自己可以从网上下载,但是注意图片的大小跟盒子的大小要匹配,具体参照如下源码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>3D轮播图</title><style>html,body{height: 100%;}body{margin: 0;padding: 0;background-color: #F7F7F7;}.banner{width: 560px;height: 300px;margin: 100px auto;border: 1px solid #CCC;position: relative;}ul{list-style: none;margin: 0;padding: 0;height: 100%;}li{position: absolute;top: 0;width: 112px;height: 100%;background-color: green;transform: rotateX(0deg);transform-style: preserve-3d;transition: all 1s;}li:nth-child(1){left: 0;}li:nth-child(2){left: 112px;}li:nth-child(3){left: 224px;}li:nth-child(4){left: 336px;}li:nth-child(5){left: 448px;}span{display: block;height: 100%;width: 100%;position: absolute;left: 0;top: 0;}li span:nth-child(1){transform: translateZ(150px);background-image: url(images/1.jpg);}li span:nth-child(2){transform: rotateX(90deg) translateZ(150px);background-image: url(images/2.jpg);}li span:nth-child(3){transform: rotateX(180deg) translateZ(150px);background-image: url(images/3.jpg);}li span:nth-child(4){transform: rotateX(270deg) translateZ(150px);background-image: url(images/4.jpg);}li:nth-child(1) span{background-position: 0 0;}li:nth-child(2) span{background-position: -112px 0;}li:nth-child(3) span{background-position: -224px 0;}li:nth-child(4) span{background-position: -336px 0;}li:nth-child(5) span{background-position: -448px 0;}.prev, .next{display: block;width: 60px;height: 60px;text-align: center;line-height: 60px;font-size: 40px;color: #FFF;text-decoration: none;background-color: rgba(0, 0, 0, 0.5);position: absolute;top: 50%;margin-top: -30px;}.next {right: 0;}</style>
</head>
<body><div class="banner"><ul><li><span></span><span></span><span></span><span></span></li><li><span></span><span></span><span></span><span></span></li><li><span></span><span></span><span></span><span></span></li><li><span></span><span></span><span></span><span></span></li><li><span></span><span></span><span></span><span></span></li></ul><a href="javascript:;" class="prev">&lt;</a><a href="javascript:;" class="next">&gt;</a></div><script src="jquery.min.js"></script><script>var current = 0;$('.prev').on('click',function(){current--;$('li').each(function(key){$(this).css({'transform':'rotateX('+current*90+'deg)','transition-delay':key*0.25+'s'});});});$('.next').on('click',function(){current++;$("li").each(function(key){$(this).css({'transform':'rotateX('+(-current)*90+'deg)','transition-delay':key*0.25+'s'});});});</script>
</body>
</html>

转载于:https://www.cnblogs.com/rained/p/6169286.html

1.Web前端之CSS3中3D立方体以及3D轮播图相关推荐

  1. Web APIs介绍(四)——offset/client/scroll/轮播图/本地存储

    1.1. 元素偏移量 offset 系列 1.1.1 offset 概述 offset 翻译过来就是偏移量, 我们使用 offset系列相关属性可以动态的得到该元素的位置(偏移).大小等. 获得元素距 ...

  2. html中制作banner,css banner轮播图怎么做?

    css banner轮播图怎么做?下面本篇文章给大家简单介绍一下.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 初步了解动画效果吧.轮播图我一直以为靠jquery插件完成的,突然发 ...

  3. css3 tupianlunbo_CSS3——animation的基础(轮播图)

    作为前端刚入门的小菜鸟,只想记录一下每天的小收获 对于animation动画 1.实现动画效果的组成: (1)通过类似Flash的关键帧来声明一个动画 (2)在animation属性中调用关键帧声明的 ...

  4. html 淡出淡入轮播图,用CSS3 transition属性实现淡入淡出轮播图

    最近想本身写下轮播图,在网上发现一个网友用CSS transition属性实现的轮播,赶脚超简单哦,本身学习了后整理以下.(找不到原网址了-.-...就不贴了...) (若是不了解transition ...

  5. 在vue脚手架中,学习实现一个轮播图(2-旋转木马)

    目录 效果展示: index.html: template: data: methods: mounted(): style: 效果展示: 轮播图(旋转木马) index.html: <styl ...

  6. html中轮换图片插件,jQuery轮播图插件

    插件描述:该插件基于jquery开发,现阶段很多PC网站都需要用到轮播图切换的效果 全屏轮播图 该插件基于jquery开发,现阶段很多PC网站都需要用到轮播图切换的效果,很多时候要在页面中复用轮播图, ...

  7. html中多个图片轮播代码怎么写,Html5如何快速在页面中写出多个轮播图效果

    我们在做项目的过程中,有时候客户需求要求你在同一个页面中,写几个不同样式的轮播图效果,那么如何快速实现呢?(要知道若果你每个轮播图都要用原生javascript写的话,会很麻烦,代码也不够简洁) 这里 ...

  8. html图片自动淡出变化,用CSS3 transition属性实现淡入淡出轮播图

    最近想自己写下轮播图,在网上发现一个网友用CSS transition属性实现的轮播,赶脚超简单哦,自己学习了后整理如下.(找不到原网址了-.-...就不贴了...) (如果不了解transition ...

  9. css33d图片轮播_1.Web前端之CSS3中3D立方体以及3D轮播图

    1.3D坐标系 3D坐标可以用左手来模拟,其中大拇指方向默认是X轴正方向,食指方向是Y轴正方向,中指方向是Z轴正方向.注意:当设置transform:rotateX(90deg)时,相当于将X轴转动9 ...

最新文章

  1. 上传图片时 , 返回 nginx 出现413 Request Entity Too Large 问题
  2. 从零开始的 React 组件开发之路 (一):表格篇
  3. APUE学习之多线程编程(二):线程同步
  4. python四大高阶函数求导_4个python常用高阶函数的使用方法
  5. 史上最难吃系列,肯德基就不能好好做鸡吗?
  6. 解决CentOS 6 字体变成方框的方法
  7. 数据结构:实验四 图的遍历
  8. 三维扫描仪为媒,虚拟试衣间下嫁普通制衣生产厂家
  9. 华为USG6000V防火墙的初始密码及修改密码的操作
  10. 计算机运行快捷方式,电脑怎么创建运行快捷方式到开始菜单
  11. 毕马威it咨询 java_【毕马威(KPMG)工资】it咨询师待遇-看准网
  12. 基于PLC的搬运机器手控制系统设计
  13. Vue.js 踩坑记 (一)
  14. 北京“全面城市化”之后,你怎么看?
  15. 共享单车公司每年花上亿元赎车
  16. 2018年,Java程序员转型大数据开发,是不是一个好选择?
  17. 使用word2vec对新浪微博进行情感分析
  18. 购买运虚拟主机还是云服务器,购买运虚拟主机还是云服务器
  19. 我的苹果电脑中毒了?mac也会中病毒?喜闻乐见(附杀毒软件测试)
  20. 解读下一代网络:算力网络正从理想照进现实

热门文章

  1. Darwin Streaming Server 安装流程
  2. android 查找所有的串口,Android 串口通讯 获取卡号
  3. 360mysql连接池_自己动手写个数据库连接池
  4. 华为n3计算机在哪里,在华为nova3i中连接电脑的两种方法介绍
  5. app闪退后重启_安卓APP崩溃(crash)后重新启动,捕获全局异常重启APP
  6. HDOJ水题集合11:桶排序, 折半搜索
  7. 【PAT乙】1085 PAT单位排行 (25分) map排序
  8. NYOJ31 - 5个数求最值
  9. 消息中间件→产生原因、JMS与AMQP、主流消息中间件、基本概念、ActiveMQ、集群、实际场景问题解决方案、集成rabbitMQ与kafka
  10. 快捷键截屏_win7截图快捷键是什么 win7截图快捷键怎么按