原理是基于css3的

1、景深:perspective:100px;

2、中心点:transform-origin:center center 0;

3、transform-style:preserve-3d  父级作变换会保留效果到子集上面

通过节点嵌套 实现立方体效果:

<div class="box">
<div class="div">
<div>
<span>1</span>
<div>
<span>2</span>
<div>
<span>3</span>
<div>
<span>4</span>
</div>
</div>
</div>
</div>
</div>
</div>
   .box { width:100px;height:100px; padding:50px; margin:100px auto; perspective: 200px;}
.box .div { position: relative; width:100px;height:100px; transform-origin:center center -50px; transform-style:preserve-3d; transition:3s; }
.box .div div{ position:absolute; left:100px; top:0px; transform:rotateY(90deg); background:green; width:100px;height:100px; transform-style:preserve-3d; transform-origin:left;}
.box .div>div{ left:0px;transform:rotateY(0deg);}
.box:hover .div { transform:rotateY(-360deg); }
.div span{ color:white; display:block; color:white; text-align:center; line-height:100px; }

--------------以上是实现原理----------------------

下面是实现的效果

function setLayout(){
var list = id("imgList");
var li = list.getElementsByTagName("li");
var liH = (list.clientHeight)/4;
var str = "";
for(var i=0;i<16;i++){
str += '<li><div class="div"><div><span></span><div><span></span><div><span></span><div><span></span></div></div></div></div></div></li>';
}
list.innerHTML=str;
id("css").innerHTML += "#imgList li{height:"+liH+"px}";
for(var i=0; i<li.length;i++){
var span = li[i].getElementsByTagName("span");
for(var j=0; j<span.length;j++){
span[j].style.backgroundImage = "url("+imgUrls[j]+")";
span[j].style.backgroundPosition=-(i%4)*4+"rem -"+parseInt(i/4)*liH+"px";
}
}
}

主要是在页面生成16个li然后通过背景设置span的background-position确定每个小格子的位置

最新文章

  1. 阿里云服务器怎么去掉tomcat的8080端口
  2. Git 版本控制 在 WIN 下的一些使用方法
  3. ORA-00845: MEMORY_TARGET not supported on this system
  4. 一个小面试题sql
  5. thinkphp 模板替换
  6. C# 日期格式化的中的 正斜杠的问题
  7. java设计模式(二)单例模式 建造者模式
  8. mac 上面安装mysql-python
  9. python小工具:用python操作HP的Quality Center (二)----- 用异步方式提高速度
  10. mapreduce新旧api对比
  11. Mysql中的WITH ROLLUP用法
  12. 谷歌技术&quot;三宝&quot;之GFS
  13. windows10 hyper-v安装配置centos6.8
  14. 【Oracle】【1】查询N分钟之前的数据
  15. Java基础-类和对象
  16. Stateful Kubernetes Applications Made Easier: PSO and FlashBlade
  17. 为elasticSearch开发c++接口
  18. iOS可执行文件__TEXT段限制 以及 Android 65K函数限制
  19. Haskell语言学习笔记(49)ByteString Text
  20. 在linux中禁用一块硬盘

热门文章

  1. 解决升级mac os X EI Capitan后遇到LibclangError: dlopen(libclang.dylib, 6): image not found.的问题
  2. 53. Maximum Subarray@python
  3. CF-1013 (2019/02/09 补)
  4. PAT 乙级 1051
  5. 使用powershell批量更新git仓库
  6. Linux系统修改网卡名(eth0-3)
  7. Linux常用快捷键以及如何查看命令帮助
  8. 【转】centos中service命令与/etc/init.d的关系以及centos7的变化
  9. 【android】【android studio】修改emulator的本地化环境
  10. Anaconda安装和环境的搭建