八音盒动画制作:

通过学到了CSS3动画以后,发现通过动画也是可以制作八音盒,话不多说,走起!

Demo代码:

  • HTML片段
<body><section><div></div><div></div><div></div><div></div><div></div><div></div></section></body>
  • CSS样式
<style>body{perspective: 1000px;/* 定义透视 */}//父盒子section{position: relative;//相对定位width: 300px;height: 200px;margin: 100px auto;transform-style: preserve-3d;animation: move 10s linear infinite;background: url(../../../images/champion.jpg) no-repeat;}//子盒子divsection div{position: absolute;//绝对定位top:0;left: 0;width: 100%;height: 100%;background: url(../../../images/champion.jpg) no-repeat}/* z轴移动200个像素单位,选中第一个盒子*/section div:nth-child(1){transform: translateZ(300px);}/* 这里要先旋转后在移动,不然图片的位置会和预计的效果不一样 *//* 选中第二个盒子 */section div:nth-child(2){transform: rotateY(60deg)  translateZ(300px);}/* 这里要先旋转后在移动,不然图片的位置会和预计的效果不一样 */section div:nth-child(3){transform: rotateY(120deg)  translateZ(300px);}/* 这里要先旋转后在移动,不然图片的位置会和预计的效果不一样 */section div:nth-child(4){transform: rotateY(180deg)  translateZ(300px);}/* 这里要先旋转后在移动,不然图片的位置会和预计的效果不一样 */section div:nth-child(5){transform: rotateY(240deg)  translateZ(300px);}/* 这里要先旋转后在移动,不然图片的位置会和预计的效果不一样 */section div:nth-child(6){transform: rotateY(300deg)  translateZ(300px);}/* 定义一个动画效果 */@keyframes move{from{transform: rotateY(0);}to{transform: rotateY(360deg);/* 沿着y轴移动360度 */}}/* 当鼠标经过盒子的时候,停止旋转 */section:hover{animation-play-state: paused;/* 停止动画 */}</style>

代码解析:

  1. 首先在body中定义一个父容器section,在父容器里面嵌套6个子div盒子模型,并且将子盒子div容器添加一个绝对定位,父容器设置相对定位,也就是所谓的“子绝父相”,使得子盒子可以在父盒子的范围中,位置也可以随意调整,并且不影响其他外部盒子。
section{position: relative;//相对定位width: 300px;height: 200px;margin: 100px auto;}
//子盒子div
section div{position: absolute;//绝对定位}
  1. 通过伪类元素给子盒子添加移动的效果,总共有6个盒子,所以设置每个盒子都移动60度,刚好就是360度
             /* 选中第一个盒子 *//* z轴移动200个像素单位,选中第一个盒子*/section div:nth-child(1){transform: translateZ(300px);//想Z轴移动300个像素单位}/* 这里要先旋转后在移动,不然图片的位置会和预计的效果不一样 *//* 选中第二个盒子 */section div:nth-child(2){     transform: rotateY(60deg)  translateZ(300px);}/* 选中第三个盒子 *//* 这里要先旋转后在移动,不然图片的位置会和预计的效果不一样 */section div:nth-child(3){       transform: rotateY(120deg)  translateZ(300px);}/* 选中第四个盒子 *//* 这里要先旋转后在移动,不然图片的位置会和预计的效果不一样 */section div:nth-child(4){transform: rotateY(180deg)  translateZ(300px);}/* 选中第五个盒子 *//* 这里要先旋转后在移动,不然图片的位置会和预计的效果不一样 */section div:nth-child(5){transform: rotateY(240deg)  translateZ(300px);}/* 选中第六个盒子 *//* 这里要先旋转后在移动,不然图片的位置会和预计的效果不一样 */section div:nth-child(6){transform: rotateY(300deg)  translateZ(300px);}
  1. 旋转动画的定义
    这里定义一个动画,名字为move。from代表着0%,也就是动画刚开始的时候, to代表100%,也就是动画完成的时候。这里的八音盒案例,通过分析可以得出是沿着Y轴进行移动,所以只需要给动画添加rotateY的方法即可。
/* 定义一个动画效果,动画名字为:move */@keyframes move{from{transform: rotateY(0);/* 沿着y轴移动0度 */}to{transform: rotateY(360deg);/* 沿着y轴移动360度 */}}
  1. 调用动画
    通过animation属性调用动画,参数分别是动画名字、过渡时间、动画的速度曲线、动画的播放次数。
transform-style: preserve-3d;/* 保留3d的效果 */
animation: move 10s linear infinite;

除此之外,还需要给body设置透视的效果,效果更加噢!

body{perspective: 1000px;/* 定义透视 */}
  1. 最后可以给盒子父盒子设置一个hover选择器,当鼠标经过图片的时候,八音盒停止旋转!
/* 当鼠标经过盒子的时候,停止旋转 */
section:hover{animation-play-state: paused;/* 停止动画 */}

效果展示:

CSS学习笔记——动画进阶(八音盒动画效果)相关推荐

  1. Mr.J-- jQuery学习笔记(十九)--自定义动画实现图标特效

    之前有写过自定义动画Mr.J-- jQuery学习笔记(十八)--自定义动画 这次实现一个小demo 图标特效 页面渲染 <!DOCTYPE html> <html lang=&qu ...

  2. CSS学习笔记(详细,不定期更新)

    CSS 学习笔记 CSS书写规范 顺序 布局位置属性(position, top, right, z-index, display, float等) 自身大小盒子模型(width, height, p ...

  3. CSS学习笔记(狂神-完整版)

    CSS学习笔记(狂神-完整版) HTML + CSS + JavaScript 结构 + 表现 + 动作 1.什么是CSS 如何学习 CSS是什么 CSS怎么用(快速入门) CSS选择器(重点+难点) ...

  4. css学习笔记 day two

    CSS学习笔记 Day two 13.3 css边框属性 属性: 边框样式:border-style:solid/double/groove/ridge/insert/outset; 说明:第一个表示 ...

  5. Unity学习笔记(4)-----粒子效果的实现

    Unity学习笔记(4)-–粒子效果的实现 一.效果展示 下面用若干张张动图展示效果: 大概就是这样,并不是很难. 实际效果要比图中的好一点(顺畅得多). 实现步骤 大致可以分为如下几个步骤,然后逐个 ...

  6. jqGrid 学习笔记整理——进阶篇(一 )

    jqGrid 学习笔记整理--进阶篇(一 ) 本篇为基础篇的扩展,使其具有增.删.改.查的基本功能. 在浏览导航栏添加所需按钮 <!DOCTYPE html> <html>&l ...

  7. HTML/CSS学习笔记02【表单标签】

    w3cschool菜鸟教程.CHM(腾讯微云):https://share.weiyun.com/c1FaX6ZD HTML/CSS学习笔记01[概念介绍.基本标签.表单标签][day01] HTML ...

  8. HTML/CSS学习笔记01【概念介绍、基本标签】

    w3cschool菜鸟教程.CHM(腾讯微云):https://share.weiyun.com/c1FaX6ZD HTML/CSS学习笔记01[概念介绍.基本标签.表单标签][day01] HTML ...

  9. CSS 学习笔记 - 盒模型

    CSS学习笔记 - 盒模型 外边距margin 内边距padding 背景background 背景图background-image 边框border 样式 宽度 颜色 圆角 边框图片border- ...

最新文章

  1. 深度图像检测算法总结与对比
  2. 动态内存分配与柔性数组
  3. android中button点击频率控制
  4. Docker 初步认识
  5. 高级指令——kill指令、ifconfig指令、reboot指令、shutdown指令、uptime指令、uname指令
  6. centos7 hadoop3.0.1安装
  7. AI岗位秋招纪实:算法原理扎实才是王道,而不是调参
  8. 多线程安全小结-可见性(内存屏障,共享变量副本)、原子性、有序性(编译器优化、cpu流水线乱序)
  9. LibSvm使用说明和LibSvm源码解析
  10. 宝塔实测-电商ERP进销存系统源码
  11. java工程师容易秃头吗_当程序员会容易秃头?下面这3种职业一样会秃
  12. 神奇的平面几何定理--康威圆定理
  13. [NOTE] NFS 和TFTP安装与配置
  14. 网站安全公司对渗透测试行业的运营观点
  15. 【校园卡】更新联通校园卡套餐海报及常规操作,校园卡最新消息及选购建议,增加评论功能...
  16. 云计算时代的进阶者,专访景安董事长杨小龙
  17. HPE增强长期归档存储 转售SpectraLogic高端磁带库
  18. 把1,2,3,4,5,6,7,8,9九个数分成三组,各个数字使用一次
  19. 自考第三波+GCT考试总结
  20. 关于计算机与MCU通信及MAX232、CH340T与PL2303的区别

热门文章

  1. 手机上有哪些可以记录生日倒计时天数的软件?
  2. 无线路由器经常掉线断网的可能的原因
  3. 【企业架构】确定策略和动机
  4. trello01:后端的搭建
  5. Vim中如何全选并复制?
  6. JQuery实现简易音乐播放器
  7. 自习室预约小程序有哪些功能?
  8. 【华人学者风采】汪萌 合肥工业大学
  9. React中实现插槽
  10. 官方精简版Windows10:微软自己都看不过去了