Редактор на cubic-bezier (CSS easing)
Създавайте CSS криви на плавност с редактор на cubic-bezier, сравнявайте ги с linear в анимация на живо и копирайте cubic-bezier() или linear().
Плъзнете двата манипулатора (P1 и P2). Времето тече отляво надясно, напредъкът отдолу нагоре; манипулаторите могат да излизат над 1 или под 0 за ефект на отскачане. При фокусиран манипулатор използвайте стрелките (Shift за 0,1).
Преглед на анимацията
Анимацията е на пауза, защото системата ви иска намалено движение. Натиснете Пусни, за да я стартирате въпреки това.
Същата крива, дискретизирана като CSS linear() easing (Chrome 113+, Firefox 112+, Safari 17.2+). Повече точки следват кривата по-точно.
Как да използвате редактора на cubic-bezier
- Плъзнете двата манипулатора върху графиката. P1 (първата контролна точка) определя началото на движението, P2 края. Времето върви отляво надясно, а напредъкът отдолу нагоре.
- Или въведете стойност в Стойност на cubic-bezier(): пълен
cubic-bezier(0.4, 0, 0.2, 1), четири числа или ключова дума катоease-in-out. Полетата x1, y1, x2 и y2 редактират по една координата. - Започнете от менюто Готови криви (CSS ключови думи, семействата от sine до back и кривите на Material Design) или от бутоните с ключови думи. Когато кривата ви съвпада с готова, името ѝ се показва до бутоните.
- Следете Преглед на анимацията: точката на Вашата крива и точката на linear изминават същото разстояние за същата Продължителност. Използвайте Пауза/Пусни и Започни отначало, за да ги сравните.
- Копирайте резултата от CSS функция за времето или копирайте Приближение с linear() и изберете броя на Сегменти.
Клавиатура: фокусирайте манипулатор и използвайте стрелките, за да го преместите с 0,01, или с 0,1 при натиснат Shift.
Ако системата ви е настроена за намалено движение, анимацията започва на пауза. Натиснете Пусни, ако искате да я стартирате въпреки това.
Инструментът работи във вашия браузър. Нищо от въведеното не се изпраща към сървър.
Какво означава cubic-bezier()
CSS функцията за плавност (easing) съпоставя изминалото време на прехода (от 0 до 1) с неговия напредък (от 0 до 1). cubic-bezier(x1, y1, x2, y2) описва това съпоставяне с кубична крива на Безие, която започва от (0, 0), завършва в (1, 1) и се издърпва от две контролни точки, P1 = (x1, y1) и P2 = (x2, y2).
- Стойностите x са времето и трябва да остават между 0 и 1, иначе функцията не би била валидна крива на времето. Редакторът ги държи в обхвата.
- Стойностите y са напредъкът и могат да са под 0 или над 1. Стойност y над 1 кара анимацията да премине целта си и да се върне, като кривите Back; под 0 тя първо се движи назад.
- Стръмен наклон означава бързо движение, плосък наклон бавно.
ease-outзапочва бързо и завършва бавно, което е естествено за елементи, влизащи на екрана.ease-inправи обратното и подхожда на излизащи елементи.
CSS ключовите думи са преки пътища: ease = cubic-bezier(0.25, 0.1, 0.25, 1), ease-in = (0.42, 0, 1, 1), ease-out = (0, 0, 0.58, 1), ease-in-out = (0.42, 0, 0.58, 1) и linear = (0, 0, 1, 1).
Приближението с linear()
По-новата функция linear() изброява стойности на напредъка в равномерно разположени моменти, например linear(0, 0.25, 0.5, 0.75, 1), и ги свързва с прави линии. Инструментът взема проби от кривата ви (решава Безие за всяка стъпка във времето) и записва тези стойности с три знака след десетичната точка. При 20 до 40 сегмента резултатът е визуално идентичен с кривата. Истинската полза от linear() е при криви, които Безие не може да начертае, като отскачане и пружини, но тя позволява и споделяне на един синтаксис. Работи в Chrome и Edge 113+, Firefox 112+ и Safari 17.2+, затова запазете стойността cubic-bezier() като резервен вариант.
Често задавани въпроси
Къде да използвам стойността?
В transition-timing-function, animation-timing-function или в съкратения запис: transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1);. Web Animations API я приема като easing.
Каква продължителност е добра?
Малките промени в интерфейса обикновено траят от 150 до 300 ms; големите движения през екрана от 300 до 500 ms. По-дългите анимации бързо започват да изглеждат бавни.
Защо не мога да плъзна манипулатор отвъд левия или десния ръб?
Защото x е времето, а времето не може да тръгне назад: CSS отхвърля стойности на x извън 0–1.
Кои криви използва Material Design?
Класическата стандартна крива е cubic-bezier(0.4, 0, 0.2, 1), с варианти за забавяне, ускоряване и рязка промяна. Material 3 добавя подчертаните криви; всички са в менюто Готови криви.
Как да се справя с намаленото движение?
Спазвайте @media (prefers-reduced-motion: reduce) във вашия CSS: съкратете или премахнете големите движения и оставете простите избледнявания.
Сродни инструменти
- Генератор на сенки (CSS box-shadow) Създайте многослойни CSS сенки с преглед на живо. Задайте отместване, размазване, цвят, непрозрачност и inset, изпробвайте неоморфизъм и копирайте кода.
- Генератор на Flexbox и CSS Grid Създавайте нагледно оформления с flexbox и CSS grid. Задайте свойствата на контейнера и елементите, именувайте области и копирайте CSS и HTML.
- Генератор на CSS градиенти Създавайте линейни, радиални и конусни CSS градиенти с преглед на живо. Добавяйте и влачете цветови спирки, задайте ъгъл и копирайте кода.