CSS3 Animations
1 @keyframes属性
@keyframes 动画名称{关键帧持续时间% {css样式;}}
@keyframes myanimation{ 0% {top:0px;background-color:#0000cc;} 50% {top:100px;background-color;#339900;} 100% {top:0px;background-color:#330000;}}
2 animation属性
animation: name duration timing-function delay iteration-count direction;
animation-name 规定需要绑定到选择器的 keyframe 名称。。
animation-duration 规定完成动画所花费的时间, 以秒或毫秒计。
animation-timing-function 规定动画的速度曲线。
linear 动画从头到尾的速度是相同的。
ease 默认。动画以低速开始, 然后加快, 在结束前变慢。
ease-in 动画以低速开始。
ease-out 动画以低速结束。
ease-in-out 动画以低速开始和结束。
cubic-bezier(n,n,n,n) 在 cubic-bezier 函数中自己的值。可能的值是从 0 到 1 的数值。 参考地址: http://cubic-bezier.com/#.17,.67,.83,.67
animation-delay 规定在动画开始之前的延迟。以秒或毫秒计, 默认值是 0。
animation-iteration-count 规定动画应该播放的次数。
n 定义动画播放次数的数值。
infinite 规定动画应该无限次播放。
animation-direction 规定是否应该轮流反向播放动画。
normal 默认值。动画应该正常播放。
alternate 动画应该轮流反向播放。
使用方法一: from...to...
<!DOCTYPE html><html><head><meta charset="UTF-8"><title></title><style type="text/css">*{ margin: 0; padding: 0;}div{ width: 100px; height: 100px; background-color: orange;}/*div:hover{width: 800px;}*//*@keyframes 动画名{from{动画第一步(这里你可以不写他会继承上面的)}to{动画最后一步}}*//*动画声明*/@keyframes widthChange{/*from{width: 100px;}*/to{width: 800px;}}div{ /*animation: 动画名称 过渡总时长;*/ animation: widthChange 1s;}</style></head><body><div></div></body></html>
使用方法二: 百分比
<!DOCTYPE html><html><head><meta charset="UTF-8"><title></title><style type="text/css">*{margin: 0;padding: 0;}div{width: 100px;height: 100px;background-color: orange;position: absolute;left: 0;top: 0;}/*动画声明*/@keyframes positionChange{ /*from{ left: 0; } to{ left: 800px; }*/ /*百分数评分的的过渡总时长*/ 0%{ left: 0; top: 0; } 50%{ left: 800px; top: 0; } 100%{ left: 800px; top: 500px; }}div{ /*animation: 动画名称 过渡总时长;*/ animation: positionChange 10s;}</style></head><body><div></div></body></html>
使用方法三: animation参数格式
<!DOCTYPE html><html><head><meta charset="UTF-8"><title></title><style type="text/css">*{ margin: 0; padding: 0;}div{ width: 100px; height: 100px; background-color: orange;}@keyframes widthChange{ to{ width: 800px; }}div{ /* * 动画名称 * 动画总时长s ms * 动画形式ease ease-in ease-out ease-in-out linear 贝塞尔曲线、 * 延迟时间s ms * 循环次数①阿拉伯数字②infinite(无限次) * 停留到最后一帧forwards * 反向播放动画alternate(来回当做2次处理) normal 正常 * * */ animation: widthChange 5s;}div:hover{/*动画停止*/animation-play-state: paused}</style></head><body><div></div></body></html>
建立3D场景
transform-style 属性规定如何在 3D 空间中呈现被嵌套的元素。
注释:该属性必须与 transform 属性一同使用。
flat 子元素将不保留其 3D 位置。
preserve-3d 子元素将保留其 3D 位置。
transform-style: flat|preserve-3d;
perspective 属性定义 3D 元素距视图的距离, 以像素计。该属性允许您改变 3D 元素查看 3D 元素的视图。
当为元素定义 perspective 属性时, 其子元素会获得透视效果, 而不是元素本身。
注释:perspective 属性只影响 3D 转换元素。
perspective: number|none;
景深:
perspective是设置3d效果的景深, 通俗来说就是设置你的眼睛与这个3d元素的距离。
而生活经验告诉我们, 你从远处和近处分别观察同一个物体(比如正方形)时, 其3d效果肯定是不同的。
perspective-origin 属性定义 3D 元素所基于的 X 轴和 Y 轴。该属性允许您改变 3D 元素的底部位置。
当为元素定义 perspective-origin 属性时, 其子元素会获得透视效果, 而不是元素本身。
注释:该属性必须与 perspective 属性一同使用, 而且只影响 3D 转换元素。
<!DOCTYPE html><html lang="zh"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta http-equiv="X-UA-Compatible" content="ie=edge" /><title>Document</title><style type="text/css">*{ margin: 0; padding: 0; list-style: none;}div{ width: 300px; height: 220px; margin: 100px auto; border: 1px solid #000; transform-style: preserve-3d; perspective: 800px; /*景深基点基本上没人改*/ perspective-origin: left top;}img{ width: 100%; display: block; transition: 1s; } div:hover>img{ transform: rotateX(-45deg);}</style></head><body><div><img src="img/薛凯琪.jpg"/></div></body></html>
backface-visibility 属性定义当元素不面向屏幕时是否可见。
如果在旋转元素不希望看到其背面时, 该属性很有用。
背面隐藏
<!DOCTYPE html><html lang="zh"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta http-equiv="X-UA-Compatible" content="ie=edge" /><title>Document</title><style type="text/css">*{ margin: 0; padding: 0; list-style: none;}div{ width: 300px; height: 220px; margin: 100px auto; border: 1px solid #000;transform-style: preserve-3d; perspective: 1000px;}img{ width: 100%; display: block; transition: 1s; transform-origin: left center; /*背面隐藏*/ backface-visibility: hidden;}div:hover>img{ transform: rotateY(-100deg);}</style></head><body><div><img src="img/薛凯琪.jpg"/></div></body></html>