每日鸡汤,每个你想要学习的念头都是未来的你向自己求救
之前css 的系统学习说了, css 的animation 有很多值,
animation-name. animation-duration; animation-timing-function 等等
看来时间函数是知识点最多的,值得系统的学习一下
这个时间函数,虽然可以写在animation 后面;但是这也是一个单独的css属性可以单独写的,同理还是transiton-timing-function
a {
animation-timing-function: ease/ease-in/ ease-out/linear/cubic-bezier
}
时间函数就是定义css 动画的执行的节奏,也就是快慢
- ease 和ease-in-out类似但是不相同这是很重要, 【开始和结束都慢,中间快,也就是使变化的边界很柔和】,也是animation-timing-function 或者transition-timing-function 的初始值/默认动画
- ease cubic-bezier(0.25, 0.1, 0.25 ,0.1)这个加速更快
- ease-in-out. cubic-bezier(0.42, 0, 0.58, 1) 缓慢加速,开始是和ease-in 一样,结束和ease-out一样
- ease-in. 低速开始了, 开始慢慢的, 结束快 in 进入, 名字里面有的慢, 因为ease是缓解的意思cubic-bezier(0.42, 0, 1, 1)
- ease-out 低速结束,开始快,结束慢cubic-bezier(0, 0, 0.58, 1)
- linear cubic-bezier(0, 0, 1, 1) 也很有用 动画从头到尾的速度都是相同的,,当变化很下的时候,比如几像素的更改或者颜色的变化
- 上面这几个都是特殊的贝塞尔曲线
- step-start 动画steps(1, start)执行一步,动画执行时以左侧端点为开始???
- step-end 动画step(1, end)动画分成一步,动画执行时,右侧结尾端点为开始,???
- step-start 和step-end都是 step(5, start)函数的特殊形式
- start = jump-start
- step(4, end) =step(4, jump-end)
- 首先要注意timing-funtion作用于每个关键帧之间,而不是整个动画,就是@keyframes中设置的两个关键帧之间
- step(n[大于0], <direction(方向)>) 第一个参数就是表明每个关键帧之间变化的次数,n 把关键帧的间隔等分
- 第二个参数可选,默认是end, 可以取值为start和end, 用来指定每个间隔的起点或是终点发生变化
- start 是两个关键帧的前者,end是两个关键帧的后者
- start 跳过0%, end跳过100%
- 左连续和右连续用函数的角度看,其实很好理解,关键帧的左边是否有线条?左连续,同理;
- start 左连续 用下一帧的现实效果填充间隔, includes pauses at both the 0% and 100% marks,
- end 右连续 以上一帧的效果填充动画
- jump-none There is no jump on either end. Instead, holding at both the 0% mark and the 100% mark, each for 1/n of the duration
- step-start 就是立刻就跳转到当前关键帧结束的状态
- step-end 就是保持当前关键帧开始的状态,然后突然结束、
- jump-both 左右连续,0% 100% 会停止
- 贝塞尔曲线,好家伙这个很重要,又称三次贝塞尔 ,是生成animation 速度曲线的函数,四个参数, cubuc-bezier(x1, y1, x2,y2)
- 这个贝塞尔的坐标我好不容易会看了
- 看官方文档
- 这个曲线上就只有四个点,而且y1 就是和坐标(0,0)连接的点
- y2就是和坐标和(1,1)连接的点
- 而且宽度就是1,因为x的取值就是0-1, 竖着的就是y坐标,可以取负值
- y坐标两个点一定在这个曲线的两边么?肯定不是啊
- 在这个官方网站自己玩
- 好了, 这回基本上能看懂了了,
- 一般参数0.33 前面的0 可以省略直接写.33