参考资料:

张鑫旭  : http://www.zhangxinxu.com/wordpress/2012/09/css3-3d-transform-perspective-animate-transition/

Demo : Demo (建议移动端看,因为用了Zepto.js)

Demo截图:

Demo代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=640,user-scalable=no"/>
<title>Document</title>
<style>
*{ margin:0;padding:0;}
body,html{width:100%;height:100%; perspective:10000px;-webkit-perspective:10000px; background-color: #fff;-webkit-transition: top .5s;transition: top .5s;overflow:hidden;}
.main{ width:100%;height:100%; margin-left:120px;transform-origin: center center; }
.box{ position:relative;width:100%;height:100%;transform-style: preserve-3d;-webkit-transform-style: preserve-3d;transition: transform 1s;-webkit-transition: -webkit-transform 1s;transform-origin: 200px center; -webkit-transform-origin: 200px center; }
.box .piece{position: absolute;left:0;top:20%;width:400px;height:50%;-webkit-transition: opacity 1s, transform 1s;transition: opacity 1s, transform 1s; border:5px solid #ccc; -webkit-box-sizing: border-box; background: rgba(0,0,0,.5);transform-origin: center center;-webkit-transform-origin: center center; }
.box .piece:nth-child(1){ background-color: red;}
.box .piece:nth-child(2){ background-color: blue;}
.box .piece:nth-child(3){ background-color: yellow;}
.box .piece:nth-child(4){ background-color: pink;}
.box .piece:nth-child(5){ background-color: purple;}
.box .piece:nth-child(6){ background-color: black;}
.box .piece:nth-child(7){ background-color: white;}
.box .piece:nth-child(8){ background-color: gray;}
.box .piece:nth-child(9){ background-color: orange;}
.box .piece:nth-child(10){ background-color: violet;}
</style>
<script src="zepto.min.js"></script>
<script>
$(function(){ var $oBox = $('#box'),
$aPieces = $oBox.find('.piece'),
winWidth = $(window).width(),
transform = (function(){ var arr = [ 'transform','webkitTransform','mozTransform','oTransform','msTransform' ];
var oDiv = document.createElement('div'); for( var i=0,len=arr.length;i<len;i++ ){ if( oDiv.style[ arr[i] ] != undefined ){
return arr[i];
} } })(); for( var i=0,len=$aPieces.length;i<len;i++ ){ var deg = 360/len*i;
var imgWidth = $aPieces.eq(i).width()/2;
var piecesWidth = $aPieces.eq(0).width();
var z = imgWidth/Math.tan(360/len/ 180 * Math.PI) + piecesWidth ; $aPieces[i].style[ transform ] = " rotateY("+ deg +"deg) translateZ("+ z +"px)"; } var num = 0;
var oBox = document.querySelector('#box'); $(document).swipeLeft(function(){ num++;
var left = -(360 / $aPieces.length)*num;
oBox.style[ transform ] = 'rotateY('+left+'deg)'; return false; }); $(document).swipeRight(function(){ num--;
var left = -(360 / $aPieces.length)*num;
oBox.style[ transform ] = 'rotateY('+left+'deg)'; return false; }); }) </script>
</head>
<body>
<div class="main" >
<div class="box" id="box" >
<div class="piece" >1</div>
<div class="piece" >2</div>
<div class="piece" >3</div>
<div class="piece" >4</div>
<div class="piece" >5</div>
<div class="piece" >6</div>
<div class="piece" >7</div>
<div class="piece" >8</div>
<div class="piece" >9</div>
<div class="piece" >10</div>
</div>
</div>
</body>
</html>

后记:

其实看完这个 张鑫旭 的文章就应该会做了,因为我这的当时是最近看了支付宝芝麻信用里的信用猜猜那个想做的这个demo 最开始以为是围着一个点转圈做的后来想到 张鑫旭 文章跟着做了这个

主要还是根据Math.tan求这个z轴的距离然后就是perspective景深的设置,像 向左滑动,向右滑动偷懒用了 Zepto.js 的 swipeLeft、swipeRight 事件,其实想根据这个有多少面去算这个 两个 面的间隔但是后来发现没什么规律所以放弃了,当然如果有好的建议谢谢告知。

css3 - 旋转的木马的更多相关文章

  1. css3旋转倾斜3d小动画

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  2. css3旋转小三角

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 可控制转速CSS3旋转风车特效

    以前制作网页动画一般使用javascript,现在已经有越来越多动动画使用纯CSS实现,并且动画的控制也可以使用CSS3实现,因为CSS 3来了,CSS 3的动画功能确实强大.以下是一个纯CSS3制作 ...

  4. CSS3 旋转 太阳系

    参考https://www.tadywalsh.com/web/cascading-solar-system/ 首先 旋转有两种方式  一种是使用 transform-origin  另一种是tran ...

  5. css3旋转

    首先创建一个容器如div,然后设置其相关的3d属性,主要是三个1.perspective 透视,值越小3D感越强,值越大视觉正常.2.perspective-origin,透视点一般居于容器的中心.3 ...

  6. CSS3 旋转代码备忘

    .Aclose { -webkit-transition-property: all; -webkit-transition-duration: .3s; -moz-transition-proper ...

  7. CSS3旋转缩放移动倾斜等效果——transform

    1.transform浏览器支持情况 也就是说目前不考虑老浏览器的话是不用加前缀的,感谢菜鸟教程:https://www.runoob.com/cssref/css3-pr-transform.htm ...

  8. css3旋转、过渡、动画属性

    1.transform 该属性对元素进行旋转.缩放.移动和倾斜 translate元素从当前位置移动 rotate元素顺时针旋转 scale元素的尺寸增大或减小 skew元素翻转 2.transiti ...

  9. css3旋转立方体-_-

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

随机推荐

  1. 【leetcode-101】 对称二叉树

    101. 对称二叉树 (1过) 给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [ ...

  2. GC ROOT

    (GC Root有哪些) 基本思想是通过一系列称为“GC roots”的对象作为起始点,可以作为根节点的是: 虚拟机栈(栈帧中的本地变量表)中引用的对象(即所有Java线程当前活跃的栈帧里指向GC堆里 ...

  3. 致备战noip2018的勇士

    戒骄戒躁,自律当先.稳扎稳打,颗粒归仓.目标高远,落实当下.无惧将来,无畏过往.愿你们承担一份荣耀,愿你们书写一段辉煌.——致备战noip2018的你们 ——退役学姐致gryz备战中的勇士 ——lpy ...

  4. react使用proxy代理配置

    proxy,默认为NULL,类型为URL,一个为了发送http请求的代理 在package.json文件中使用proxy配置可以解决跨域问题 使用注意事项: create-react-app脚手架低于 ...

  5. vue使用字体图标转码问题

    使用iconfont字体之后,出现的是一个方框,而没有出现相应的图标 需要通过String.fromCharCode方法转成指定unicode编码对应的十六进制字符 <div class=&qu ...

  6. ssh 跳板机部署

    1.首先创建存放日志的文件夹并开放读写权限       mkdir /var/log/jump/       chmod -R 777 /var/log/jump/   2.将原有ssh程序修改为另外 ...

  7. 一.ArrayList原理及实现学习总结

    一.ArrayList介绍 ArrayList是一种线性数据结构,它的底层是用数组实现的,相当于动态数组.与Java中的数组相比,它的容量能动态增长.类似于C语言中的动态申请内存,动态增长内存. 当创 ...

  8. Creating A Moddable Unity Game

    前言: 对游戏进行修改与拓展(MOD)是我一直以来感兴趣的东西,我的程序生涯,也是因为在初中接触到GBA口袋妖怪改版开始的,改过也研究过一些游戏的MOD实现方式,早就想在自己的游戏中实现“MOD系统” ...

  9. MVC |分部视图 PartialView()

    介绍如何定义 其实它和普通视图没有多大区别,只是创建分部视图的时候视图里没有任何内容,你需要什么标签你自己加.第二就是分部视图不会执行_ViewStart.cshtml中的内容) 控制器 Partia ...

  10. 【解题报告】SRM-08

    A Description 给一个 01 串设为其 S,询问是否存在只出现两次的 01 串 T. 这里的出现定义为存在一串下标 ,满足  且 . Input 一行,一个 01 串 Output 一行, ...