实用的 CSS — 贝塞尔曲线(cubic-bezier)
欢迎移步我的博客阅读:《实用的 CSS — 贝塞尔曲线(cubic-bezier)》
前言
在了解 cubic-bezier
之前,你需要对 CSS3 中的动画效果有所认识,它是 animation-timing-function
和 transition-timing-function
中一个重要的内容。
本体
简介
cubic-bezier
又称三次贝塞尔,主要是为 animation
生成速度曲线的函数,规定是 cubic-bezier(<x1>, <y1>, <x2>, <y2>)
。
我们可以从下图中简要理解一下 cubic-bezier
:
从上图我们需要知道的是 cubic-bezier
的取值范围:
P0:默认值 (0, 0)
P1:动态取值 (x1, y1)
P2:动态取值 (x2, y2)
P3:默认值 (1, 1)
我们需要关注的是 P1 和 P2 两点的取值,而其中 X 轴
的取值范围是 0 到 1,当取值超出范围时 cubic-bezier
将失效;Y 轴
的取值没有规定,当然也毋须过大。
最直接的理解是,将以一条直线放在范围只有 1 的坐标轴中,并从中间拿出两个点来拉扯(X 轴的取值区间是 [0, 1],Y 轴任意),最后形成的曲线就是动画的速度曲线。
使用
在测试例子中:
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
.animation {
width: 50px;
height: 50px;
background-color: #ed3;
-webkit-transition: all 2s;
-o-transition: all 2s;
transition: all 2s;
}
.animation:hover {
-webkit-transform: translateX(100px);
-ms-transform: translateX(100px);
-o-transform: translateX(100px);
transform: translateX(100px);
}
</style>
</head>
<body>
<div class="animation"></div>
</body>
</html>
我们可以在浏览器中看到,当鼠标移到元素上时,元素开始向右移动,开始比较慢,之后则比较快,移开时按原曲线回到原点。
在例子中,当我们不为 transition
添加 cubic-bezier
或是其他 timing-function
时,默认的速度曲线是 ease
,此时的速度曲线是:
那么让我们在代码中加入 cubic-bezier(.17, .86, .73, .14)
:
...
.animation {
...
-webkit-transition: all 2s cubic-bezier(.17, .86, .73, .14);
-o-transition: all 2s cubic-bezier(.17, .86, .73, .14);
transition: all 2s cubic-bezier(.17, .86, .73, .14);
}
...
再刷新页面观察效果,会看到动画在执行过程中有一段很缓慢的移动,前后的速度相似,此时的运动曲线是:
几个常用的固定值对应的 cubic-bezier
值以及速度曲线
ease
:cubic-bezier(.25, .1, .25, 1)liner
:cubic-bezier(0, 0, 1, 1) / cubic-bezier(1, 1, 0, 0)ease-in
:cubic-bezier(.42, 0, 1, 1)ease-out
:cubic-bezier(0, 0, .58, 1)ease-in-out
:cubic-bezier(.42, 0, .58, 1)In Out . Back(来回的缓冲效果):cubic-bezier(0.68, -0.55, 0.27, 1.55)
效果参考
文章所提到的动画效果可以在下面站点中看到,当然你也可以大胆尝试:
参考
本文转载于:猿2048实用的 CSS — 贝塞尔曲线(cubic-bezier)
实用的 CSS — 贝塞尔曲线(cubic-bezier)的更多相关文章
- 计算机图形学:贝塞尔曲线(Bezier Curve)
计算机图形学:贝塞尔曲线(Bezier Curve) 贝塞尔能由贝塞尔样条组合而成,也可产生更高维的贝塞尔曲面.
- css贝塞尔曲线模仿饿了么购物车小球动画
在线观看贝塞尔曲线值:传送门 在线观看动画效果:传送门 代码: <!DOCTYPE html> <html> <head> <meta charset=&qu ...
- CSS — 贝塞尔曲线(cubic-bezier)
cubic-bezier 又称三次贝塞尔,主要是为 animation 生成速度曲线的函数,规定是 cubic-bezier(<x1>, <y1>, <x2>, & ...
- 贝塞尔曲线(cubic bezier)
对于css3的Transitions,网上很多介绍,相信大家都比较了解,这里用最简单的方式介绍下: transition语法:transition:<transition-property> ...
- 再谈CSS动画 - 说点不知道的(一)贝塞尔曲线
今天重新翻看<CSS 揭秘>"过渡与动画"一章,并把该章代码重新敲了一遍,代码托管在我的Github,在此总结一些心得. 动画的奥秘 在网页中添加动画的目的是让用户有更 ...
- CSS总结六:动画(一)ransition:过渡、animation:动画、贝塞尔曲线、step值的应用
transition-property transition-duration transition-timing-function transition-delay animation-name a ...
- 深度掌握SVG路径path的贝塞尔曲线指令
一.数字.公式.函数.变量,哦,NO! 又又一次说起贝塞尔曲线(英语:Bézier curve,维基百科详尽中文释义戳这里),我最近在尝试实现复杂的矢量图形动画,发现对贝塞尔曲线的理解馒头那么厚,是完 ...
- iOS开发 贝塞尔曲线
iOS开发 贝塞尔曲线UIBezierPath - 陌云 时间 2014-03-14 11:04:00 博客园-所有随笔区 原文 http://www.cnblogs.com/moyunmo/p/ ...
- iOS开发 贝塞尔曲线UIBezierPath
最近项目中需要用到用贝塞尔曲线去绘制路径 ,然后往路径里面填充图片,找到这篇文章挺好,记录下来 自己学习! 转至 http://blog.csdn.net/guo_hongjun1611/articl ...
随机推荐
- C++ 删除一个字符串中的指定字符
Q:一个数字是以xxx,yyy,zzz的字符串形式存储的,将逗号消去并转化为整数输出 方法一:char数组,即定义时s1定义为 char s1[20]的形式: //删除输入字符串中的逗号,并构建新串 ...
- python 镜像仓库获取最新版本号
#/bin/python# -*- coding: utf-8 -*-import requestsfrom urllib import parsefrom requests.auth import ...
- LeetCode-097-交错字符串
交错字符串 题目描述:给定三个字符串 s1.s2.s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的. 示例说明请见LeetCode官网. 来源:力扣(LeetCode) 链接:http ...
- 将ISO镜像文件制作成USB disk
制作USB Live盘有Universal USB Installer.UNetbootin.WinSetupFromUSB.LinuxLive USB Creator.YUMI(Your Unive ...
- 在线配置文档connectionStrings.com
在线配置文档网址:https://www.connectionstrings.com/ 用于查询以什么样的格式将连接信息写入配置文件时App.config 例如C#中写连接SQL Server的格式: ...
- 《前端运维》一、Linux基础--04Shell变量
这一篇文章,我们就要开始学习正式的Shell语言部分的内容.那在开始之前,我们回忆一下,javascript语言,大体都包含了哪些内容?比如数据类型(对象.字符串.数值),数据结构(对象.数组).运算 ...
- kubernetes允许master调度
1,让 Master 也当作 Node 使用 (1)如果想让 Pod 也能调度到在 Master(本样例即 localhost.localdomain)上,可以执行如下命令使其作为一个工作节点: 注意 ...
- VS code 设置中文语言环境(实现语言切换自由)
1.打开vs code,然后按快捷键ctrl+shift+p,输入configure language>回车 2.选择Install Additional Languages... 3.在左侧选 ...
- Mycat 数据切分 看这一篇就够了
数据切分 数据切分指的是通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库上面,以达到分散单台设备负载的效果. 数据的切分根据其切分规则的类型,可以分为两种切分模式.一种 ...
- CSC3100
其实是存一下代码 1. AVL的java实现 维护一下每个点左右子树深度差,差绝对值大于2就转,转的方式和treap, splay转的方式差不多.旋转操作可以使两端差归零变得更平衡. 虽然平衡但转的次 ...