<div class="container">
<div> <figure></figure> <figure></figure> <figure></figure> <figure></figure> </div>
<div><figure></figure><figure></figure><figure></figure><figure></figure></div>
<div><figure></figure><figure></figure><figure></figure><figure></figure></div>
</div>
<style>
*{
/* 3D 加速 */
transform-style:preserve-3d;
}
body{
background:black;
}
.container{
width:200px;
height:200px;
position:relative;
margin:200px auto; /* preserve-3d是在做3d转换的时候用到的,然后就会有Z轴的3d转换效果, 如果不设置或者设置成flat看到的只是一个平面上的变换 */ transform-style:preserve-3d;
}
.container div{
width:200px;
height:200px;
position:absolute;
} .container div:nth-child(1){
transform:rotateX(90deg);
} .container div:nth-child(2){
transform:rotateY(90deg);
} @keyframes rotate{
from{
transform: rotateY(0deg);
}
to{
transform: rotateY(360deg);
}
} /** 每个div 有4个 figure*/
figure{
width:100%;
height:100%;
margin:0;
position:absolute;
background:url(http://img.duoziwang.com/2016/09/02/15483442009.jpg) no-repeat; /**把背景图像扩展至足够大,以使背景图像完全覆盖背景区域。**/
background-size:cover;
} figure:nth-child(1){
/** 有些时候需要实现一些倒影的效果。比如说,你看到一个美女,
你想从另一个角度来看这个MM的风姿 。 **/
-webkit-box-reflect:above;
}
figure:nth-child(2){
/* 下倒影, 就像走在湖面上的效果 */ -webkit-box-reflect:below;
}
figure:nth-child(3){
-webkit-box-reflect:left;
}
figure:nth-child(4){
-webkit-box-reflect:right;
} body{
animation: rotate 2s linear infinite; transform-orgin:50% 200px;
} html{
overflow:hidden;
} </style>
<script> var div = document.querySelector('div');
var flag = false;// 是否启动拖拽 document.addEventListener('mousedown', function() {
flag = true; document.body.style.setProperty('animation-play-state', 'paused'); }, false); document.addEventListener('mouseup', function() {
flag = false; document.body.style.setProperty('animation-play-state', 'running'); }, false); document.addEventListener('mousemove', function move(e) {
if (!flag) {
move.lastX = e.x;
move.lastY = e.y;
return;
}
var transform = getComputedStyle(div).getPropertyValue('transform'); transform == 'none' && (transform = ''); div.style.setProperty('transform', transform + 'rotateX(' + (move.lastY - e.y) / 5 + 'deg) rotateY(' + (e.x - move.lastX) / 5 + 'deg)'); move.lastX = e.x; move.lastY = e.y; }, false); </script>

最新文章

  1. 在Windows7上如何找到Cookie(亲测100%可找到)
  2. SDWebImage清除图片缓存
  3. Spring Boot 之 RESRful API 权限控制
  4. ssh 配置自动登录
  5. 在同一上机器上建立两个SVN服务
  6. android取得所在位置的经纬度
  7. HttpRuntime详解分析
  8. HBuilder开发App教程04-最难搞定的是mui
  9. [HNOI2012]射箭
  10. Java面试16|设计模式
  11. css 冷知识
  12. istio实现自动sidecar自动注入(k8s1.13.3+istio1.1.1)
  13. [20180819]关于父子游标问题(11g).txt
  14. PostgreSQL 安装了contrib 之后 登录失败的问题
  15. Flask离线文档 --技术文档
  16. CentOS 使用 yum 更新软件包与系统
  17. JQuery 树状结构 jQuery-treeview.js 插件
  18. 初识Java作业
  19. 使用Puppeteer进行数据抓取(四)——图片下载
  20. [smarty] 在smarty模板中使用smarty变量初始化 javascript 变量的问题

热门文章

  1. boost智能指针总结
  2. LeetCode:棒球比赛【682】
  3. python约束 与MD5加密写法
  4. UVALive 6906 A - Cluster Analysis
  5. Educational Codeforces Round 11A. Co-prime Array 数学
  6. launch 文件解析
  7. 轮询、长轮询、长连接、socket连接、WebSocket
  8. ijkplayer实现IMediaDataSource
  9. 程序包com.sun.istack.internal不存在
  10. authentication token manipulation error