javascript实现炫酷魔方
实现效果:
魔方动态转换,同时每个面里的每个块都能进行动态变换。
实现代码:
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>魔方</title>
- <style type="text/css">
- *{
- margin: 0;
- padding: 0;
- }
- body{
- width: 100%;
- height: 100%;
- background: radial-gradient(#fff,pink);
- }
- .container{
- width: 300px;
- height: 300px;
- /* border:1px solid #000;*/
- margin:150px auto;
- perspective: 20000px;
- }
- .box{
- width: 300px;
- height: 300px;
- border:1px solid transparent;
- box-sizing: border-box;
- position:relative;
- transform-style: preserve-3d;
- /*transform: rotateX(45deg) rotateY(45deg);*/
- animation: rotate 10s linear infinite;
- }
- /*@keyframes ro{
- 0%{
- transform:rotateX(0deg) rotateY(0deg);
- }
- 100%{
- transform: rotateX(360deg) rotateY(360deg);
- }
- }*/
- @keyframes rotate{
- 100%{
- transform:rotatex(360deg) rotatey(360deg) rotatez(360deg);
- }
- }
- .box-page{
- width: 300px;
- height: 300px;
- position: absolute;
- box-sizing: border-box;
- transform-style: preserve-3d;
- }
- .top{
- /*background-color: red;*/
- transform: translateZ(150px);
- }
- .bottom{
- /*background-color: pink;*/
- transform: translateZ(-150px) rotateX(180deg);
- }
- .left{
- /*background-color: orange;*/
- transform: translateX(-150px) rotateY(-90deg);
- }
- .right{
- /*background-color: green;*/
- transform: translateX(150px) rotateY(90deg);
- }
- .before{
- /*background-color: purple;*/
- transform: translateY(150px) rotateX(-90deg);
- }
- .after{
- /*background-color: blue;*/
- transform: translateY(-150px) rotateX(90deg);
- }
- /* .box-page div:nth-child(1){
- animation: a1 4.5s ease-in 0.5s;
- }
- .box-page div:nth-child(2){
- animation: a1 4.5s ease-in 1s;
- }
- .box-page div:nth-child(3){
- animation: a1 4.5s ease-in 1.5s;
- }
- .box-page div:nth-child(4){
- animation: a1 4.5s ease-in 2s;
- }
- .box-page div:nth-child(5){
- animation: a1 4.5s ease-in 2.5s;
- }
- .box-page div:nth-child(6){
- animation: a1 4.5s ease-in 3s;
- }
- .box-page div:nth-child(7){
- animation: a1 4.5s ease-in 3.5s;
- }
- .box-page div:nth-child(8){
- animation: a1 4.5s ease-in 4s;
- }
- .box-page div:nth-child(9){
- animation: a1 4.5s ease-in 4.5s;
- }
- @keyframes a1{
- 0%{
- transform: translateZ(0px) scale(0) rotateZ(0deg);
- }
- 20%{
- transform: translateZ(300px) scale(0) rotateZ(720deg);
- }
- 90%{
- transform: translateZ(300px) scale(0) rotateZ(720deg);
- }
- 100%{
- transform: translateZ(0px) scale(0) rotateZ(0deg);
- }
- }*/
- .box-page div:first-child,.box-page div:nth-child(3),.box-page div:nth-child(5),.box-page div:nth-child(7),.box-page div:nth-child(9){
- transform: rotateY(0deg);
- animation: rotatey 6s linear infinite;
- }
- @keyframes rotatey{
- 20%{
- transform: rotateY(0deg);
- background-size: 300px 300px;
- }
- 40%{
- transform: rotateY(540deg);
- background-size: 100px 100px;
- }
- 60%{
- transform: rotateY(540deg);
- background-size: 100px 100px;
- }
- 80%{
- transform: rotateY(0deg);
- background-size:300px 300px;
- }
- }
- .box-page div:nth-child(2),.box-page div:nth-child(4),.box-page div:nth-child(6),.box-page div:nth-child(8)
- {
- transform: rotateX(0deg);
- animation: rotatex 6s linear infinite;
- }
- @keyframes rotatex{
- 20%{
- transform: rotateX(0deg);
- background-size: 300px 300px;
- }
- 40%{
- transform: rotateX(540deg);
- background-size: 100px 100px;
- }
- 60%{
- transform: rotateX(540deg);
- background-size: 100px 100px;
- }
- 80%{
- transform: rotateX(0deg);
- background-size: 300px 300px;
- }
- }
- </style>
- </head>
- <body>
- <div class="container">
- <div class="box">
- <div class="top box-page"></div>
- <div class="bottom box-page"></div>
- <div class="left box-page"></div>
- <div class="right box-page"></div>
- <div class="before box-page"></div>
- <div class="after box-page"></div>
- </div>
- </div>
- <script type="text/javascript">
- var arr=document.querySelectorAll(".box>div");
- for(var n = 0; n < arr.length; n++){
- //行遍历
- for(var i=0; i<3; i++){
- //列遍历
- for(var j=0; j<3; j++){
- var divs=document.createElement("div");
- divs.style.cssText="width:100px; height:100px; border:2px solid #fff; box-sizing:border-box;position:absolute; background-image:url(imgs/a"+n+".jpg); background-size:300px 300px;" ;
- arr[n].appendChild(divs);
- divs.style.left=j*100+"px";
- divs.style.top=i*100+"px";
- divs.style.backgroundPositionX=-j*100+"px";
- divs.style.backgroundPositionY=-i*100+"px";
- }
- }
- }
- </script>
- </body>
- </html>
javascript实现炫酷魔方的更多相关文章
- 用javascript写Android和iOS naitve应用,实在炫酷。
关注NativeScript有一段时间了,说好了的三月发第一个Beta版,终于发布了. // declare the extended NativeScriptActivity functionali ...
- html5跟随鼠标炫酷网站引导页动画特效
html5跟随鼠标炫酷网站引导页动画特效一款非常不错的引导页,文字效果渐变,鼠标跟随出绚丽的条纹.html5炫酷网站引导页,鼠标跟随出特效. 体验效果:http://hovertree.com/tex ...
- HTML5打造的炫酷本地音乐播放器-喵喵Player
将之前捣腾的音乐频谱效果加上一个播放列表就成了现在的喵喵播放器(Meow meow Player,额知道这名字很二很装萌~),全HTML5打造的网页程序,可本地运行也可以挂服务器上用. 在线Demo及 ...
- 一款炫酷的幻灯片播放框架介绍(附demo及使用方法)
废话不多说,先上demo(建议在chrome下打开 F键全屏 esc退出全屏): 我的demo-博客园简介 官网demo 更多demo 今天为大家介绍一款基于css3和JavaScript的幻灯片播放 ...
- 7款经典炫酷的HTML5/jQuery动画应用示例及源码
jQuery是一款普遍受前端开发者欢迎的Javascript框架,但是开发者貌似更关注jQuery开发的插件,海量的jQuery插件让前端开发者非常方便.HTML5的加入让jQuery这个家族更加丰富 ...
- 7款纯CSS3实现的炫酷动画应用
1.纯CSS3实现人物摇头动画 这次我们要来分享一款超级可爱的纯CSS3人物摇头动画,初始化的时候人物的各个部位是利用CSS3动画效果拼接而成,接下来就是人物听音乐的场景,一边听音乐一边摇着脑袋,十分 ...
- Css3炫酷总结使用
先从CSS3的选择器说起: E F:所有的子孙元素: E>F: E中的子元素: E+F:E元素之后的最近的选择器: E~F:E中所以后面兄弟元素(CSS3 不包括自己本身,前面也不包括) att ...
- Android开发必知--WebView加载html5实现炫酷引导页面
大多数人都知道,一个APP的引导页面还是挺重要的,不过要想通过原生的Android代码做出一个非常炫酷的引导页相对还是比较复杂的,正巧html5在制作炫酷动画网页方面比较给力,我们不妨先利用html5 ...
- 基于Bootstrap的炫酷jQuery slider插件
简要教程 这是一款在原生bootstrap slider的基础上制作效果非常炫酷的jQuery slider插件.该slider插件可以自定义slider的颜色.形状.透明度和tooltip等属性,美 ...
随机推荐
- BTrace实战
BTrace在解决现场问题的时候非常有用. 1.概述 1.1下载 https://github.com/btraceio/btrace,最新版本是1.3.9 目前1.3.x系列最低支持JDK1.7,要 ...
- Yuchuan_Linux_C 编程之十一 进程间通信
一.整体大纲 二.进程间通信概念及方法 Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间.任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间不能相互访问,要交换 ...
- django 从零开始 2迁移模型数据到数据库中和admin初识
和flask 一样 如果模型models 发生改动,则需要进行一个迁移数据库,但是我还没有想讲到那么深入,现在模型是django自带的一些sessiong,damin之类的模型 所以如果你想进去adm ...
- python opencv Sobel、Laplace、canny算子的边缘提取 以及参数解析
前提:各种算子不完全区分好坏,但根据我实际操作分析得到,有的算子之间效果大相径庭,但有的也很相似,也就是各有各的用法,这里按 Sobel.Laplace.canny三种算子作比较,看其结果: 一. ...
- 数据结构 5 哈希表/HashMap 、自动扩容、多线程会出现的问题
上一节,我们已经介绍了最重要的B树以及B+树,使用的情况以及区别的内容.当然,本节课,我们将学习重要的一个数据结构.哈希表 哈希表 哈希也常被称作是散列表,为什么要这么称呼呢,散列.散列.其元素分布较 ...
- POJ 1065 & ZOJ 1025
#include <cstdio> #include <iostream> #include <algorithm> #include <cstring> ...
- Web Scraper 高级用法——利用正则表达式筛选文本信息 | 简易数据分析 17
这是简易数据分析系列的第 17 篇文章. 学习了这么多课,我想大家已经发现了,web scraper 主要是用来爬取文本信息的. 在爬取的过程中,我们经常会遇到一个问题:网页上的数据比较脏,我们只需要 ...
- 如何在vue中修改动态标签中的样式和修改组件库样式
vue中修改动态标签中的样式和修改组件库样式 因为vue中的标签在渲染的时候,都会给标签加上id 所以你想在<style lang="scss" scoped>直接修改 ...
- ElasticSearch之映射常用操作
本文案例操作,建议先阅读我之前的文章<ElasticSearch之安装及基本操作API> Mapping (映射)类似关系型数据库中的表的结构定义.我们将数据以 JSON 格式存入到 El ...
- ES6编译问题SyntaxError: Unexpected token import
遇到SyntaxError: Unexpected token import 如何解决 ??? 究其原因是node es6问题这还不够,因为我们没有去配置babel,所以我们需要在.babelrc去做 ...