CSS3中的3D动画实现(钟摆、魔方)--实现代码
CSS3中的3D动画实现(钟摆、魔方)
transition-property 过渡动画属性 all|[attr]
transition-duration 过渡时间
transition-delay 延迟时间
transition-timing-function 运动类型
- ease:(逐渐变慢)默认值
- linear:(匀速)
- ease-in:(加速)
- ease-out:(减速)
- ease-in-out:(先加速后减速)
- cubic-bezier 贝塞尔曲线( x1, y1, x2, y2 )
http://cubic-bezier.com/
CSS3的2D变形----传统的transform变形效果
transform : translate、scale、rotate、skew…
translate:平移、scale:缩放、rotate:旋转、skew:倾斜
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>transform</title>
<link rel="stylesheet" href="reset.css">
<style>
.box{
margin: 20px auto;
width: 200px;
height: 200px;
background: url("img/zf_cube1.png") no-repeat;
background-size: 100% 100%;
transform: translateX(100px) translateY(200px) rotate(45deg) scale(1.5);
/*
rotate(30deg):默认就是沿着垂直于屏幕方向的轴旋转的
rotateX:沿着X轴旋转
rotateY:沿着Y轴旋转
*/
}
</style>
</head>
<body>
<div class="box"></div>
</body>
</html>
CSS3的2D变形----实现钟摆效果(animation帧动画
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>clock</title>
<link rel="stylesheet" href="reset.css">
<style>
.clockBox{
position: absolute;
top:50%;
left:50%;
margin:-150px 0 0 -60px;
width: 120px;
height: 300px;
background: url("img/clock.png") no-repeat;
background-size: 100% 100%;
}
.clockBox{
transform-origin: center top 0;
transform: rotate(-45deg);
animation:clockMove 1s linear infinite both;
/*
* animation-name:运动轨迹的名称(@keyframes设置运动轨迹)
* animation-duration:完成动画需要的总时间
* animation-timing-function:运动方式,默认值ease非匀速,linear匀速,ease-in加速,ease-out减速...
* animation-delay:延迟时间,默认时0s代表立即执行
* animation-iteration-count:动画执行的次数,默认是1代表执行一次就结束了,infinite是无限次运动
* animation-fill-mode:设置动画的状态
* none默认值:无任何特殊状态设置
* forwards:动画完成后会停留在最后一帧的位置,(默认动画执行完成会回退到起始位置)
* backwards:只有在动画有延迟时间的时候才有用,当动画在延迟时间内,让运动的元素在运动轨迹的第一帧位置等待
* both:同时具备以上两个效果
*/
}
@keyframes clockMove {
from,to{
transform: rotate(45deg);
}
50%{
transform: rotate(-45deg);
}
}
</style>
</head>
<body>
<div class="clockBox"></div>
</body>
</html>
CSS3的3D变形----实现3D变形效果的步骤和原理
perspective:定义3D元素距视图的距离
none默认值,与设置零相同,不设置透视
number 设置的具体指(单位px)
认知3D空间轴和3D变形效果
translate(X|Y|Z) rotate(X|Y|Z)......
transform-style:preserve-3d在3D空间中呈现被嵌套的元素
transform-origin:设置旋转的几点位置
X轴:left center right length %
Y轴:top center bottom length %
Z轴:length
CSS3的3D变形----搭建3D魔方让其自动360度旋转
cube.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet/less" href="css/cube.less">
<script src="js/less.min.js"></script> </head>
<body>
<div class="main">
<ul class="cubeBox">
<li><img src="img/zf_cube1.png" alt=""></li>
<li><img src="img/zf_cube2.png" alt=""></li>
<li><img src="img/zf_cube3.png" alt=""></li>
<li><img src="img/zf_cube4.png" alt=""></li>
<li><img src="img/zf_cube5.png" alt=""></li>
<li><img src="img/zf_cube6.png" alt=""></li>
</ul>
</div>
</body>
</html>
cube.less
@import "reset.css";
html, body {
height: 100%;
overflow: hidden;
}
.main {
position: absolute;
top: 50%;
left: 50%;
margin: -284px 0 0 -160px;
width: 320px;
height: 568px;
background: url("../img/zf_cubeBg.jpg") no-repeat;
background-size: cover; /*以背景图最适合的比例铺满整个屏幕:以后项目中凡是大容器或者整个页面的背景图大小最好都这样设置*/
}
.cubeBox {
@v:;
position: absolute;
top: 50%;
left: 50%;
margin: -(unit(255/2,px)) 0 0 -(unit(255/2,px));
width: 255px;
height: 255px;
li {
position: absolute;
top:;
left:;
width: 100%;
height: 100%;
img {
display: block;
width: 100%;
height: 100%;
}
}
}
/*--实现魔方--*/
@v-1: unit(255/2, px);
@v-2: unit(-255/2, px);
.main {
perspective: 2000px;
.cubeBox {
transform-style: preserve-3d;
//=为了可以看见效果,给魔方一个初始的旋转角度
transform: scale(0.6) rotateX(-30deg) rotateY(45deg);
//=>自动360deg旋转
animation:cubeMove 5s linear infinite both;
li {
//=>正反面
&:nth-child(1) {
transform: translateZ(@v-1);
}
&:nth-child(2) {
transform: translateZ(@v-2) rotateY(180deg);
}
//=>左右面
&:nth-child(3) {
transform: translateX(@v-2) rotateY(-90deg);
}
&:nth-child(4) {
transform: translateX(@v-1) rotateY(90deg);
}
//=>上下面
&:nth-child(5) {
transform: translateY(@v-2) rotateX(90deg);
}
&:nth-child(6) {
transform: translateY(@v-1) rotateX(-90deg);
}
}
}
}
@keyframes cubeMove {
0%{
transform: translate(50px) scale(0.6) rotateY(30deg);
}
25%{
transform: translate(100px) scale(0.6) rotateY(270deg);
}
50%{
transform: translate(-50px) scale(0.6) rotateY(0deg);
}
75%{
transform: translate(100px) scale(0.6) rotateX(180deg);
}
100%{
transform: translate(50px) scale(0.6) rotateZ(120deg);
}
}
CSS3中的3D动画实现(钟摆、魔方)--实现代码的更多相关文章
- css3中变形与动画(三)
transform可以实现矩阵变换,transition实现属性的平滑过渡,animation意思是动画,动漫,这个属性才和真正意义的一帧一帧的动画相关.本文就介绍animation属性. anima ...
- CSS3中2D/3D转换、过渡、动画
转换.过渡.动画 2D 转换 1.translate() 方法 通过 translate() 方法,元素从其当前位置移动,根据给定的 left(x 坐标) 和 top(y 坐标) 位置参数: 实例 d ...
- css3中变形与动画(一)
css3制作动画的几个属性:变形(transform),过渡(transition)和动画(animation). 首先介绍transform变形. transform英文意思:改变,变形. css3 ...
- css3中的制作动画小总结
系列教程 CSS3属性中有关于制作动画的三个属性:Transform,Transition,Animation: Transform 在CSS3中transform主要包括以下几种:旋转rotate. ...
- css3中变形与动画(二)
css3制作动画的几个属性:变形(transform),过渡(transition)和动画(animation). transform介绍过了.接下来介绍过渡transition. 一.例子 先通过一 ...
- CSS3中的animation动画
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 怎样使CSS3中的animation动画当每滑到一屏时每次都运行
这个得结合js来做的.比如这里有3个层,js判断滚动到当前层位置的时候给其加上一个class即可,而加的这个class就是带css3执行动画的 class <div id="a1&qu ...
- css3中outline切换动画效果
今天刚看了篇文章<纯CSS实现的outline切换transition动画效果> 里面的效果研究了一下,下图为实现时的效果 代码如下: <!DOCTYPE html> < ...
- css3中做3D导航栏
看别人做的一个3D导航栏,觉得很厉害,这里先保存下来,后面有时间好好分析一下: <!doctype html> <html lang="en"> <h ...
随机推荐
- [物理学与PDEs]第2章习题2 质量力有势时的能量方程
试证明: 如果质量力有势, 即存在 $\phi$ 使 ${\bf F}=-\n \phi$, 那么理想流体的能量守恒方程的微分形式可写为 $$\bex \cfrac{\rd}{\rd t}\sex{e ...
- Codeforces Round #501 (Div. 3) D. Walking Between Houses
题目链接 题意:给你三个数n,k,sn,k,sn,k,s,让你构造一个长度为k的数列,使得相邻两项差值的绝对值之和为sss, ∑i=1n∣a[i]−a[i−1]∣,a[0]=1\sum_{i=1}^n ...
- 解决-webkit-box-orient: vertical;(文本溢出)属性在webpack打包后无法编译的问题
在scss里面: /*! autoprefixer: off */-webkit-box-orient: vertical;/* autoprefixer: on */
- 网络学习day04_VLSM、子网划分
IP子网划分 首先,在进行子网划分的学习之前,我们先来回顾一下IP地址的相关知识,同时了解一下公有和私有IP地址: 在Internet上有千百万台主机,为了区分这些主机,人们给每台主机都分配了一个专门 ...
- python 读写文件中 w与wt ; r与rt 的区别
w,r,wt,rt都是python里面文件操作的模式.w是写模式,r是读模式.t是windows平台特有的所谓text mode(文本模式),区别在于会自动识别windows平台的换行符.类Unix平 ...
- vim简单使用教程【转】
vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的.下面的文章翻译自<Learn Vim Progress ...
- JS基础之传参(值传递、对象传递)
一.概念 我们需了解什么是按值传递(call by value),什么是按引用传递(call by reference).在计算机科学里,这个部分叫求值策略(Evaluation Strategy). ...
- 【转】【Linux】Swap与Memory
背景介绍 Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级.所以,程序和数据如果在内存的话,会有非常快的读写速度.但是,内存的造价是要高于磁盘的,且内存的断电丢失数据也 ...
- Copley-STM32串口+CANopen实现双电机力矩同步
原来有个CANopen的主站卡,现在没了,只有单片机,用单片机来制作一个CANopen的主站卡貌似不是很难,但是需要时间.无奈仔细看了一个Copley的说明,决定采用CAN口+串口来实现之前的功能. ...
- mysql收集统计信息
一.手动 执行Analyze table innodb和myisam存储引擎都可以通过执行“Analyze table tablename”来收集表的统计信息,除非执行计划不准确,否则不要轻易执行该 ...