@@ -164,8 +164,8 @@ If easing functions are used outside of the CSS context,
164
164
care must be taken to either correctly handle potential infinities,
165
165
or clamp the [=output progress value=] .
166
166
167
- Some types of easing functions also take an additional boolean [= before flag=]
168
- input which is defined subsequently.
167
+ Some types of easing functions also take an additional boolean <dfn export for="easing function"> before flag</dfn> ,
168
+ which is defined subsequently.
169
169
170
170
This specification defines four types of easing functions whose definitions
171
171
follow.
@@ -700,7 +700,8 @@ infinitely using tangent of the curve at the closest endpoint as follows:
700
700
███▌ █▌ █████▌ █▌ ███▌
701
701
-->
702
702
703
- <h3 id=step-easing-functions oldids=step-timing-functions>Step easing functions:
703
+ <h3 id=step-easing-functions oldids=step-timing-functions>
704
+ Step Easing Functions:
704
705
''step-start'', ''step-end'', ''steps()''</h3>
705
706
706
707
A <dfn>step easing function</dfn> is an [=easing function=]
@@ -821,34 +822,63 @@ The ''jump-*'' keywords values are illustrated below:
821
822
<h4 id=step-easing-algo oldids=step-timing-function-algo>
822
823
Output</h4>
823
824
824
- At the exact point where a step occurs, the result of the function is
825
- conceptually the top of the step. However, an additional <dfn>before flag</dfn>
826
- passed as input to the [=step easing function=] , if true, will cause the
827
- result of the function to correspond to the bottom of the step at the step
828
- point.
825
+ <div class=algorithm>
826
+ To <dfn export>calculate step easing output progress</dfn>
827
+ for a given [=step easing function=] |func|,
828
+ an [=input progress value=] |inputProgress|,
829
+ and an optional [=before flag=] (defaulting to false),
830
+ perform the following.
831
+ It returns an [=output progress value=] .
829
832
830
- <div class=example>
833
+ 1. Let |steps| be |func|'s [=steps()/steps=] ,
834
+ and |position| be |func|'s [=steps()/step position=] .
831
835
832
- As an example of how the [=before flag=] affects the behavior of this function,
833
- consider an animation with a [=step easing function=] whose [=step
834
- position=] is <a value for="steps()">start</a> and which has a positive
835
- delay and backwards fill.
836
+ 2. Divide the interval [-∞, ∞] into several segments,
837
+ each with an associated value,
838
+ as follows:
836
839
837
- For example, using CSS animation:
840
+ 1. [-∞, 0] has the value 0.
841
+ 2. [1, ∞] has the value 1.
842
+ 3. [0, 1] is divided into |steps| intervals,
843
+ with their values assigned as defined for the |position|
844
+ (see <<step-position>> ).
838
845
839
- <pre class='lang-css'>
840
- animation: moveRight 5s 1s steps(5, start);
841
- </pre>
846
+ Note: All intervals are inclusive,
847
+ so some values are part of two intervals at once.
848
+
849
+ 3. If |inputProgress| is in a single interval,
850
+ return the associated value for that interval.
851
+
852
+ 4. Otherwise, |inputProgress| is in two intervals,
853
+ with two associated values
854
+ (which might be the same).
855
+
856
+ If the [=before flag=] is true,
857
+ return the smaller associated value;
858
+ otherwise, return the larger associated value.
859
+ </div>
860
+
861
+ <div class=example>
862
+
863
+ As an example of how the [=before flag=] affects the behavior of this function,
864
+ consider an animation with a [=step easing function=] whose [=step
865
+ position=] is <a value for="steps()">start</a> and which has a positive
866
+ delay and backwards fill.
867
+
868
+ For example, using CSS animation:
842
869
843
- During the delay phase, the [=input progress value=] will be zero but if the
844
- [=before flag=] is set to indicate that the animation has yet to reach its
845
- animation interval, the easing function will produce zero as its [=output
846
- progress value=] , i.e. the bottom of the first step.
870
+ <pre class='lang-css'>
871
+ animation: moveRight 5s 1s steps(5, start);
872
+ </pre>
847
873
848
- At the exact moment when the animation interval begins, the [=input progress
849
- value=] will still be zero, but the [=before flag=] will not be set and hence
850
- the result of the easing function will correspond to the top of the first step.
874
+ During the delay phase, the [=input progress value=] will be zero but if the
875
+ [=before flag=] is set to indicate that the animation has yet to reach its
876
+ animation interval, the easing function will produce zero as its [=output
877
+ progress value=] , i.e. the bottom of the first step.
851
878
879
+ At the exact moment when the animation interval begins, the [=input progress
880
+ value=] will still be zero, but the [=before flag=] will not be set and hence
881
+ the result of the easing function will correspond to the top of the first step.
852
882
</div>
853
883
854
884
For the purposes of calculating the [=output progress value=] , the
0 commit comments