1. 序論
◎非規範的`CSS3-TRANSITIONS$r (~CSS遷移)は、 下層の~prop変化に応じて,~CSS~prop値が変化したときに補間する仕方を供する。 これは,単純な~animationを容易に行う仕方を供するが、 ~animationの[ 開始-/終止- ]時の状態は,既存の[ ~prop値 ]により制御され、 ~animationがどう進捗するかについては,限られた制御しか作者に供していない。 ◎ CSS Transitions [CSS3-TRANSITIONS] provide a way to interpolate CSS property values when they change as a result of underlying property changes. This provides an easy way to do simple animation, but the start and end states of the animation are controlled by the existing property values, and transitions provide little control to the author on how the animation progresses.
この仕様は、 作者が一連の~keyframeを通して,~CSS~propの時間~越しな変化を指定できるようにするための, `定義された~animation@ ( `defined animation^en )を導入する。 ~CSS~animationは、 ~CSS~propの呈示~用の値を時間~越しに変化させる点で,~CSS遷移に類似する。 その主要な相違は、 遷移は,~propの値が変化したときに`暗黙的に^em 【言い換えれば,受動的に】 誘発される一方で、 ~animationは,~animation~propが適用される時点に`明示的に^em 【言い換えれば,能動的に】 実行されることにある。 この~~理由から、 ~animationは,~animateされる~propにあてがうための明示的な値を要する。 これらの値は,以下に述べる~animation~keyframeを利用して指定される。 ◎ This proposal introduces defined animations, in which the author can specify the changes in CSS properties over time as a set of keyframes. Animations are similar to transitions in that they change the presentational value of CSS properties over time. The principal difference is that while transitions trigger implicitly when property values change, animations are explicitly executed when the animation properties are applied. Because of this, animations require explicit values for the properties being animated. These values are specified using animation keyframes, described below.
次に挙げるものも含め、 ~animationの多くの側面を制御できる ⇒# 反復する回数( `animation-iteration-count$p)/ 始値と終値を`交替$させる( `alternate$v )か否か/ 稼働中( `running$v )にするか静止させる( `paused$v )か/ 実際の開始-時機を`遅延$するか( `animation-delay$p ) ◎ Many aspects of the animation can be controlled, including how many times the animation iterates, whether or not it alternates between the begin and end values, and whether or not the animation should be running or paused. An animation can also delay its start time.
1.1. 値~定義
【 この節の内容は、 `~CSS日本語訳 共通~page@~CSScommon#values$に移譲。 】
2. ~CSS~animation~model
CSS Animations は、 ~propの`算出d値$に影響する。 この効果は、 ( CSS Animations に適応する Level の)~CSS~cascadeに[ `~animation~level$の`指定d値$ `CSS3CASCADE$r ]を追加して,[ ~animationの現在の状態を与える正しい`算出d値$ ]を生産することにより生じる。 ~animationは, ~important規則により上書きされるものを除く,通常の規則すべてを`上書きする@~CASCADE#cascade-origin$ `CSS3CASCADE$r。 ◎ CSS Animations affect computed property values. This effect happens by adding a specified value to the CSS cascade ([CSS3CASCADE]) (at the level for CSS Animations) that will produce the correct computed value for the current state of the animation. As defined in [CSS3CASCADE], animations override all normal rules, but are overridden by !important rules.
同じ~propに対し,ある時点で同時に複数の~animationから 挙動が指定されている場合、 `animation-name$p 値の中で最後に現れる~animationが,その時点における他の~animationを上書きすることになる。 ◎ If at some point in time there are multiple animations specifying behavior for the same property, the animation which occurs last in the value of animation-name will override the other animations at that point.
【 “同時に” — いずれかに[ `遅延$/`延伸$ ]が指定されていて,その期間のみ重なっている場合も “同時” と見なされるのかどうかは、 はっきりしない。 】
~animationは、 それが[ 適用される時点(すなわち,要素に `animation-name$p ~propが設定された時点)より前 / 除去された後 ]の`算出d値$には,影響しない。 加えて、 ~animationは概して,[ その遅延が満了する前 / その終止-後 ]の`算出d値$にも影響しないが、 `animation-fill-mode$p ~propの値によっては影響することもある。 ◎ An animation does not affect the computed value before the application of the animation (that is, when the animation-name property is set on an element) or after it is removed. Furthermore, typically an animation does not affect the computed value before the animation delay has expired or after the end of the animation, but may do so depending on the animation-fill-mode property.
稼働中の~animationは,対象の~propの値を算出する。 `~cascade$に則って,他の値がその~animateされた値より優先されることもある。 `CSS3CASCADE$r ◎ While running, the animation computes the value of those properties it animates. Other values may take precedence over the animated value according to the CSS cascade ([CSS3CASCADE]).
~animationが適用されていて,[ まだ完遂していないか,完遂したが `animation-fill-mode$p は[ `forwards$v / `both$v ]にされている ]場合、 ~UAは,[ 当の要素の `will-change$p ~prop `css-will-change-1$r の値 ]が[ 当の~animationにより~animateされている すべての~prop名を含んでいる ]かのように動作するモノトスル。 ◎ While an animation is applied but has not finished, or has finished but has an animation-fill-mode of forwards or both, the user agent must act as if the will-change property ([css-will-change-1]) on the element additionally includes all the properties animated by the animation.
~animationの開始-時機は、[ ~animationを適用する~style, 対応する `keyframes$at 規則 ]が,どちらも解決された時点になる。 要素に~animationが指定されたが,対応する `keyframes$at 規則は未だ存在しない場合、 開始されない — 【 `animation-name$p ~propが与える名前に】 合致する `keyframes$at 規則を解決できるようになり次第,始めから開始することになる。 要素の~styleを動的に改変して指定される~animationは、 その~styleが解決された時点に開始されることになる — それは、 即時( `hover^ps などの疑似~style規則の場合)にも, ~scripting~engineが~browserに制御を返した時点(~scriptにより~styleが適用された場合)にもなり得る。 `~keyframe~style規則$を動的に更新しても,~animationは[ 開始され/開始し直され ]ないことに注意。 ◎ The start time of an animation is the time at which the style applying the animation and the corresponding @keyframes rule are both resolved. If an animation is specified for an element but the corresponding @keyframes rule does not yet exist, the animation cannot start; the animation will start from the beginning as soon as a matching @keyframes rule can be resolved. An animation specified by dynamically modifying the element’s style will start when this style is resolved; that may be immediately in the case of a pseudo style rule such as hover, or may be when the scripting engine returns control to the browser (in the case of style applied by script). Note that dynamically updating keyframe style rules does not start or re-start an animation.
~animationは、[ その名前が[ 要素の `animation-name$p ~propの`算出d値$の中のいずれかの識別子 ]として現れる ]かつ[ その~animationが妥当な `keyframes$at 規則を利用している ]場合に,要素に適用される。 いったん開始された~animationは、[ 終止するか, `animation-name$p が除去される ]まで継続される。 稼働中の~animationに対し,ある`~animation~prop$の値を変更した場合、 始めからその値にされていたかのように~animationに適用される。 例えば, `animation-delay$p を短くすれば、 ~animationは,前方へ飛ぶか, あるいは[ 即時に完遂して, `animationend$et ~eventが配送される ]ことになる。 逆に, `animation-delay$p を引き伸ばせば、 ~animationは開始し直され得る — その場合、 `animationstart$et ~eventが配送されることになる。 ◎ An animation applies to an element if its name appears as one of the identifiers in the computed value of the animation-name property and the animation uses a valid @keyframes rule. Once an animation has started it continues until it ends or the animation-name is removed. Changes to the values of animation properties while the animation is running apply as if the animation had those values from when it began. For example, shortening the animation-delay may cause the animation to jump forwards or even finish immediately and dispatch an animationend event. Conversely, extending the animation-delay may cause an animation to re-start and dispatch an animationstart event.
`animation-name$p の中で,同じ `keyframes$at 規則~名が繰返されてもヨイ。 `animation-name$p が変化したときは、[ ~animationの新たな~listを最後から最初の順に反復して、 その各~animation名に対し,既存の~animation~list内で`最後^emに合致する~animation名を見出す ]ことにより,既存の~animationは更新される: ◎ The same @keyframes rule name may be repeated within an animation-name. Changes to the animation-name update existing animations by iterating over the new list of animations from last to first, and, for each animation, finding the last matching animation in the list of existing animations.\
- 合致するものが見出された場合 ⇒ 既存の~animationは、[ 新たな~list内での,~animation名の位置 ]に対応する各種~animation~propを利用して更新される — ただし,上で述べたとおり、 その現在の再生~時刻は保守する。 合致した~animationは、 重ねて合致することが無いよう,既存の~animation~listから除去される。 ◎ If a match is found, the existing animation is updated using the animation properties corresponding to its position in the new list of animations, whilst maintaining its current playback time as described above. The matching animation is removed from the existing list of animations such that it will not match twice.\
- 合致するものが見出されなかった場合 ⇒ 新たな~animationが作成される。 例えば, `animation-name$p を "`a^v" から "`a, a^v" に更新した場合、 `a^v 用の既存の~animationは,~list内の `2 個目^emの~animationになり、 ~list内の 1 個目の~item用に新たな~animationが作成されることになる。 ◎ If a match is not found, a new animation is created. As a result, updating animation-name from ‘a’ to ‘a, a’ will cause the existing animation for ‘a’ to become the second animation in the list and a new animation will be created for the first item in the list.
div {
animation-name: diagonal-slide;
animation-duration: 5s;
animation-iteration-count: 10;
position: relative; /* `left^p, `top^p を有効化 */
}
@keyframes diagonal-slide {
from {
left: 0;
top: 0;
}
to {
left: 100px;
top: 100px;
}
}
これは、 要素を 5 秒間に (0, 0) から (100px, 100px) へ移動させて,それをあと 9 回~繰返す(したがって計 10 回の反復)~animationを生産することになる。 ◎ This will produce an animation that moves an element from (0, 0) to (100px, 100px) over five seconds and repeats itself nine times (for a total of ten iterations).
`display$p ~propが `none^v にされた場合、[ 要素, その子孫たち ]に適用された稼働中の~animationすべてを終了させる。 要素の `display$p が `none^v から他の値に更新された場合、[ `animation-name$p ~propにより要素に適用される すべての~animation ]に加え,[ `display$p が `none^v 以外にされた子孫たちに適用される すべての~animation ]も開始させる。 ◎ Setting the display property to none will terminate any running animation applied to the element and its descendants. If an element has a display of none, updating display to a value other than none will start all animations applied to the element by the animation-name property, as well as all animations applied to descendants with display other than none.
~animationは,内容を動的に変化させるので、 一部の利用者に光過敏性発作( `seizure^en )に至らせ得る。 光過敏性発作に至らす内容を避ける仕方については、 `WCAG20$r `指針 2.3 :光過敏性発作に至らすことが既知な仕方で内容を設計しないこと@~TR/WCAG20/#seizure$ を見よ。 ◎ While authors can use animations to create dynamically changing content, dynamically changing content can lead to seizures in some users. For information on how to avoid content that can lead to seizures, see Guideline 2.3: Seizures: Do not design content in a way that is known to cause seizures ([WCAG20]).
実装は、 対話的( `interactive^en )でない媒体へ具現化するときは(例:印刷-時), ~animationを無視してもヨイ。 この仕様の将来の~versionは、 その種の媒体への具現化-法を定義し得る。 ◎ Implementations may ignore animations when the rendering medium is not interactive e.g. when printed. A future version of this specification may define how to render animations for these media.
3. ~keyframeの宣言-法
~animateされる~propに,~animationの様々な時点における値を指定するためには、 一連の~keyframeを利用する。 これらの~keyframeは、 ~animationの 1 周回の挙動を指定する — すなわち、 ~animationは 0 回以上 反復させられる。 ◎ Keyframes are used to specify the values for the animating properties at various points during the animation. The keyframes specify the behavior of one cycle of the animation; the animation may iterate zero or more times.
一連の~keyframeは、 以下に定義される `keyframes@at ~at-規則を利用して指定される: ◎ Keyframes are specified using the @keyframes at-rule, defined as follows:
@keyframes = @keyframes `keyframes-name$t { `qualified-rule-list$t } `keyframes-name@t = `custom-ident$t | `string$t `keyframe-block@t = `keyframe-selector$t# { `declaration-list$t } `keyframe-selector@t = from | to | `percentage [0,100]$t
`keyframes$at の内側にある `qualified-rule-list$t【!`rule-list$t】 が包含し得るものは、 `keyframe-block$t 規則に限られる。 ◎ The <rule-list> inside of @keyframes can only contain <keyframe-block> rules.
`keyframe-block$t の内側にある `declaration-list$t は、 この仕様に定義されるもの†を除くどの~CSS~propも受容することに加え、 `animation-timing-function$p ~propも受容して,それを特別に解釈する。 どの~propも`~cascade$とヤリトリすることはない (なので、 ~importantの利用は,~propを無効にする — その結果、 当の~propは無視されることになる)。 ◎ The <declaration-list> inside of <keyframe-block> accepts any CSS property except those defined in this specification, but does accept the animation-timing-function property and interprets it specially. None of the properties interact with the cascade (so using !important on them is invalid and will cause the property to be ignored).
【† より一般には、 “~animate不可” と定義されたもの — それらは無視される (~level 2 の `§ ~keyframeの処理-法@~CSSANIM2#keyframe-processing$を見よ)。 】
各 `keyframes$at ~blockには、 その導入部( `keyframes-name$t )における[ `custom-ident$t / `string$t ]値により,名前が付与される。 この 2 つの構文は、 機能的には等価になる。 通常の[ `custom-ident$t / `string$t ]と同じく、 この名前は,全部的に`文字大小区別$である。 加えて、 `custom-ident$t からは~keyword `none$v も除外される 【下の例に示されるとおり、文字大小無視で合致するものも含めて】 。 ◎ A @keyframes block has a name given by the <custom-ident> or <string> in its prelude. The two syntaxes are equivalent in functionality; the name is the value of the ident or string. As normal for <custom-ident>s and <string>s, the names are fully case-sensitive; two names are equal only if they are codepoint-by-codepoint equal. The <custom-ident> additionally excludes the none keyword.
例えば、 次の 2 つの `keyframes$at 規則の名前は同じになるので, 最初の方は無視されることになる: ◎ For example, the following two @keyframes rules have the same name, so the first will be ignored:
@keyframes foo { /* ... */ } @keyframes "foo" { /* ... */ }
一方で、 次の `keyframes$at 規則の名前は,前の 2 つの規則と`異なる^em: ◎ On the other hand, the following @keyframes rule’s name is different from the previous two rules:
@keyframes FOO { /* ... */ }
次の `keyframes$at 規則は、 `custom-ident$t には許容されない値を利用しているので,無効になる: ◎ The following @keyframes rules are invalid because they use disallowed <custom-ident> values:
@keyframes initial { /* ... */ } @keyframes None { /* ... */ }
しかしながら,これらの名前は `string$t で`指定できる^emので、 次のいずれも`妥当になる^em: ◎ However, those names can be specified with a <string>, so the following are both valid:
@keyframes "initial" { /* ... */ } @keyframes "None" { /* ... */ }
`keyframe-block$t の導入部は、 `~keyframe選択子@ と称される[ ~commaで分離された `keyframe-selector$t たちが成す~list ]である。 `選択子の値@ と称される各 `keyframe-selector$t は、[ 百分率, ~keyword `from^v, ~keyword `to^v ]いずれかをとる。 これらの値は、 この~keyframeが表現する[ ~animationの`所要時間$に対する割合 ]を指定する†。 ~keyframe自身は、 その選択子に伴われる~block内で宣言される一連の~prop値により指定される。 ~keyword[ `from^v / `to^v ]は,値[ `0%^v / `100%^v ]と等価になる。 [ `0%^v を下回る値/ `100%^v を上回る値 ]は無効であり、 当の `keyframe-block$t は無視される。 ◎ The <keyframe-selector> for a <keyframe-block> consists of a comma-separated list of percentage values or the keywords from or to. The selector is used to specify the percentage along the duration of the animation that the keyframe represents. The keyframe itself is specified by the block of property values declared on the selector. The keyword from is equivalent to the value 0%. The keyword to is equivalent to the value 100%. Values less than 0% or higher than 100% are invalid and cause their <keyframe-block> to be ignored.
注記: 百分率~値には,百分率 単位~指定子( "`%^css" )を利用しなければならない — `0^v は、 `選択子の値$としては妥当でない。 ◎ Note that the percentage unit specifier must be used on percentage values. Therefore, 0 is an invalid keyframe selector.
【† すなわち、 ~animationの 1 周回の中の ある時点を(その所要時間に対する割合により) “選択する” 。 】【 `~keyframe選択子$や `選択子の値$などの用語は、 原文では用語として定義されて(~mark-upされて)いないが,他所に現れるこれらの語の意味を明確化するため、 この訳では,用語として与えている — そのような用語は、 他にもいくつかある。 】
[ `0%^v (または `from^v ) / `100%^v (または `to^v ) ]~keyframeが指定されていない場合、 ~UAは,~animateされる~propの`算出d値$を利用して, `暗黙@ な[ `0%^v / `100%^v ]~keyframeを構築することになる。 ◎ If a 0% or from keyframe is not specified, then the user agent constructs a 0% keyframe using the computed values of the properties being animated. If a 100% or to keyframe is not specified, then the user agent constructs a 100% keyframe using the computed values of the properties being animated.
各 `keyframe-block$t 【 を成す `declaration-list$t 】は、 いくつかの `~keyframe~style規則@ — [ ~propとその値 ]が成す組 — からなる。 これらの規則においては、 次のいずれかに該当する~propは,無視される:
- この仕様にて定義される~prop — ただし、 `animation-timing-function$p は除く (その挙動は下に述べる)。
- ~important が付与されたもの。
同じ名前を伴う複数個の `keyframes$at 規則が定義されている場合、 文書~順序で最後のものが優先され,他のものは無視される。 ◎ If multiple @keyframes rules are defined with the same name, the last one in document order wins, and all preceding ones are ignored.
div { animation-name: slide-right; animation-duration: 2s; } @keyframes slide-right { from { margin-left: 0px; } 50% { margin-left: 110px; opacity: 1; } 50% { opacity: 0.9; } to { margin-left: 200px; } }
上の 2 つの 50% 規則は、 下に示すとおり,等価な単独の規則に結合することもできる: ◎ The two 50% rules from above can also be combined into an equivalent single rule as illustrated below:
@keyframes slide-right { from { margin-left: 0px; } 50% { margin-left: 110px; opacity: 0.9; } to { margin-left: 200px; } }
一連の~keyframeを決定するため、 それらはまず, `時系列順@ — すなわち,`選択子の値$の昇順 — に~sortされた上で、 `keyframes$at 規則の中の規則たちが`~cascade$される — したがって,~keyframeを成す~propたちは、 同じ`選択子の値$を伴う複数個の `keyframes$at 規則【ではなく `keyframe-block$t であろう】から導出され得る。 ◎ To determine the set of keyframes, all of the values in the selectors are sorted in increasing order by time. The rules within the @keyframes rule then cascade; the properties of a keyframe may thus derive from more than one @keyframes rule with the same selector value.
【 2 つの`選択子の値$が(抽象的な数として)非常に近い場合 (例: "0%" と "0.00000001%" )、 `実装が~supportする精度@~CSSVAL#numeric-ranges$に依存して, 同じ値に見なされるかもしれない。 これは例えば、 ~keyframeたちを選択子の値で~sortするときに影響するので, 各~実装~間で目に見える相違をもたらし得る。 】
~keyframe内に[ 指定されていない,または 指定されたが値は妥当でない ]~propに対する~animationは、 その~keyframeが存在しなかったかのように進行する。 概念的には、[ ~propのうち,いずれかの~keyframe内に在るもの ]を成す各~propに対し,~keyframeたちが成す集合が構築され、 それら各~propごとに,~animationが独立に稼働するかのように。 ◎ If a property is not specified for a keyframe, or is specified but invalid, the animation of that property proceeds as if that keyframe did not exist. Conceptually, it is as if a set of keyframes is constructed for each property that is present in any of the keyframes, and an animation is run independently for each property.
@keyframes wobble { 0% { left: 100px; } 40% { left: 150px; } 60% { left: 75px; } 100% { left: 100px; } }
名前 "wobble" を伴う~animationに対し, 4 個の~keyframeが指定されている。 最初の~keyframeにより~animateされる `left$p ~propの値は, `100px^v になり、 ~animation周回の始まりにて示される。 ~animationの`所要時間$の 40% を経過した時点で, `left$p は `150px^v まで~animateされる。 60% を経過した時点で, `left$p は `75px^v へ戻るように~animateされる。 ~animation周回の終端-時における `left$p の値は `100px^v に戻る。 下の図式に,`所要時間$ `10s^v を与えた場合における~animationの状態を示す。 ◎ Four keyframes are specified for the animation named "wobble". In the first keyframe, shown at the beginning of the animation cycle, the value of the left property being animated is 100px. By 40% of the animation duration, left has animated to 150px. At 60% of the animation duration, left has animated back to 75px. At the end of the animation cycle, the value of left has returned to 100px. The diagram below shows the state of the animation if it were given a duration of 10s.
【 上の~animationを,利用中の~browserで試す — 下のボックスをクリックして~~開始/~~停止: 】
この仕様は、 `CSS3-TRANSITIONS$r `§ 遷移の適用@~TRANSITION#application$ の様に,~keyframeから値がどう決定されるかを定義する必要がある。 ◎ This specification needs to define how the value is determined from the keyframes, like the section on Application of transitions does for CSS Transitions.
3.1.~keyframe用の計時~関数
各`~keyframe~style規則$においては、 `計時~関数$を宣言してもヨイ — それは、 ~animationが次回の~keyframeへ移行するに伴い,利用されることになる。 ◎ A keyframe style rule may also declare the timing function that is to be used as the animation moves to the next keyframe.
@keyframes bounce { from { top: 100px; animation-timing-function: ease-out; } 25% { top: 50px; animation-timing-function: ease-in; } 50% { top: 100px; animation-timing-function: ease-out; } 75% { top: 75px; animation-timing-function: ease-in; } to { top: 100px; } }
名前 "bounce" を伴う~animationには、 5 個の~keyframeが指定されている。 1 個目と 2 個目の~keyframeの合間(すなわち, 0% 〜 25% )には, `ease-out$v `計時~関数$が利用され、 2 個目と 3 個目の~keyframeの合間(すなわち, 25% 〜 50% )には, `ease-in$v `計時~関数$が利用される,等々。 その効果は、 次の様に現れることになる: 要素は, まず~pageの上方へ `50px^v 移動され, 最高点へ近付くに伴い動きは~~緩められ, `100px^v の所まで落下するに伴い動きは~~速められる。 ~animationの後半では、 要素が~pageの上方へ `25px^v だけ移動されることを除き,類似な方式で挙動する。 ◎ Five keyframes are specified for the animation named "bounce". Between the first and second keyframe (i.e., between 0% and 25%) an ease-out timing function is used. Between the second and third keyframe (i.e., between 25% and 50%) an ease-in timing function is used. And so on. The effect will appear as an element that moves up the page 50px, slowing down as it reaches its highest point then speeding up as it falls back to 100px. The second half of the animation behaves in a similar manner, but only moves the element 25px up the page.
[ "`to^v" / `100%^v ]~keyframe内に指定された`計時~関数$は、 無視される。 ◎ A timing function specified on the to or 100% keyframe is ignored.
~~詳細は `animation-timing-function$p ~propにて。 ◎ See the animation-timing-function property for more information.
4. ~animationの宣言-法
~CSS~animationは、[ 各種 `animation-*^p ~propを利用して,~keyframeを要素に束縛する ]ことにより,定義される。 これらの~list値をとる~prop — `animation$p `略式~prop$の`下位prop$すべて — は、 `協調している~list~prop~group$を形成する。 `animation-name$p が,`協調している基底~list~prop$になり、 `協調される値~list$を成す各~itemは, 1 個の~animation効果の~prop群を定義する。 ◎ CSS Animations are defined by binding keyframes to an element using the animation-* properties. These list-valued properties, which are all longhands of the animation shorthand, form a coordinating list property group with animation-name as the coordinating list base property and each item in the coordinated value list defining the properties of a single animation effect.
注記: これは、 `background-*^p ~propの挙動に相似的になる ( `background-image$p が `animation-name$p の役割に相似的になる)。 【`参照@~CSSBG#layering$ 】 ◎ Note: This is analogous to the behavior of the background-* properties, with background-image analogous to animation-name.
個々の `animation-*^p ~propの値どうしが どう協調するかについては、 `CSS-VALUES-4$r `§ 協調している~list値をとる~prop群@~CSSVAL#linked-properties$ を見よ。 ◎ See CSS Values 4 § A Coordinating List-Valued Properties for how the individual animation-* property values coordinate.
4.1. `animation-name^p ~prop
`animation-name$p ~propは、 適用される~animationたちが成す~listを定義する。 この~listを成す各~名前は、[ ~animation用の~prop値たちを供する `keyframes$at ~at-規則 ]を選定するために利用される。 どの `keyframes$at ~at-規則にも合致しない名前に対しては、 ~animateされる~propは無いので,~animationは実行されないことになる。 これを,`~cascade$から来ている~animation【?】を上書きするために利用できる。 複数の~animationが同じ~propを改変しようと試みている場合、 名前が~listの末尾側に最も近い~animationが優先される。 ◎ The animation-name property defines a list of animations that apply. Each name is used to select the keyframe at-rule that provides the property values for the animation. If the name does not match any keyframe at-rule, there are no properties to be animated and the animation will not execute. Furthermore, if the animation name is none then there will be no animation. This can be used to override any animations coming from the cascade. If multiple animations are attempting to modify the same property, then the animation closest to the end of the list of names wins.
◎名 `animation-name@p ◎値 [ none | `keyframes-name$t ]# ◎初 `none$v ◎適 すべての要素 ◎継 されない ◎百 受容しない ◎算 [ `~CSS識別子$/~keyword `none$v ]たちが成す~list ◎ list, each item either a case-sensitive css identifier or the keyword none ◎順 文法に従う ◎ア ~animate不可 ◎表終各種 値の意味は: ◎ The values of animation-name have the following meanings:
- `none@v
- `keyframes$at はまったく指定されないので,~animationは無い。 この~animation用に指定される他のどの`~animation~prop$も,効果はない。 ◎ No keyframes are specified at all, so there will be no animation. Any other animations properties specified for this animation have no effect.
- `keyframes-name$t
- ~animationは、[ `keyframes$at のうち,その導入部に[ この `keyframes-name$t により指定された名前 ]を伴うもの ]が在るならば,それを利用する。 該当する `keyframes$at 規則が無い場合、 ~animationも無い。 ◎ The animation will use the keyframes with the name specified by the <keyframes-name>, if they exist. If no @keyframes rule with that name exists, there is no animation.
4.2. `animation-duration^p ~prop
`animation-duration$p ~propは、 ~animationの 1 周回の `所要時間@ を定義する。 ◎ The animation-duration property defines duration of a single animation cycle.
◎名 `animation-duration@p ◎値 `time [0s,∞]$t# ◎初 `0s^v ◎適 すべての要素 ◎継 されない ◎百 受容しない ◎算 所要時間たちが成す~list ◎ list, each item a duration ◎順 文法に従う ◎ア ~animate不可 ◎表終- `time$t
- ~animationの 1 周回にかかる時間の長さを指定する。 負な `time$t は妥当でない。 ◎ Specifies the length of time that an animation takes to complete one cycle. A negative <time> is invalid.
-
`time$t に対する `0s^v (初期~値)は、 ~animationを瞬時に終わらせる。 `keyframes$at の効果はなくなるが、 ~animation自体は生じる — 特に,[ 開始-/終止- ]~event ( `animationstart$et / `animationend$et ) は発火され、 `animation-fill-mode$p の定義により,その値に応じて:
- `backwards$v / `both$v ⇒ `animation-delay$p の間に,~animationの最初の~frameが表示される。
- `forwards$v / `both$v ⇒ `animation-delay$p の後に,~animationの最後の~frameが表示される。
- `none@#valdef-animation-fill-mode-none$v ⇒ ~animationによる視覚的な効果はない。
4.3. `animation-timing-function^p ~prop
`animation-timing-function$p ~propは、 `CSS-EASING-1$r にて定義される`計時~関数$ — ~animationが 各~keyframe間で どう進捗するか — を述べる。 ◎ The animation-timing-function property describes how the animation will progress between each pair of keyframes. Timing functions are defined in the separate CSS Easing Functions module [css-easing-1].
`入力~進捗~値$には、 `animation-direction$p ~propによる効果を`組入れた上で^em†, 現在の~keyframeの`所要時間$に対する ~keyframeの開始から経過した時間の割合が利用される。 ◎ The input progress value used is the percentage of the time elapsed between the current keyframe and the next keyframe after incorporating the effect of the animation-direction property.
【† すなわち,逆方向に再生されるときは、 `入力~進捗~値$を “時間を巻き戻す” ように減らしていく下で, `出力~進捗~値$を生産する。 】
`animation-delay$p の間は、 `animation-timing-function$p は適用されない。 ◎ During the animation-delay, the animation-timing-function is not applied.
注記: この定義は必要yである — さもなければ,`計時~関数$が`階段~easing関数$であって,その`段~位置$が `start$v にされている場合、 `backwards$v による`延伸$の間, 関数の最初の段の上端側の`出力~進捗~値$を生産することになるので。 ◎ Note: This definition is necessary because otherwise a step easing function with a step position of start would produce a backwards fill equal to the top of the first step in the function.
`出力~進捗~値$は、 現在の~keyframeと次回の~keyframeの間で~prop値を`補間-$するときの %p 値として利用される。 ◎ The output progress value is used as the p value when interpolating the property values between the current and next keyframe.
◎名 `animation-timing-function@p ◎値 `easing-function$t# ◎初 `ease^v ◎適 すべての要素 ◎継 されない ◎百 受容しない ◎算 `easing-function$t の算出d値たちが成す~list ◎ list, each item a computed <timing-function> ◎順 文法に従う ◎ア ~animate不可 ◎表終~keyframe内 【すなわち `keyframe-block$t 内の `declaration-list$t 内】 に指定された `animation-timing-function$p は、 当の~keyframeから`時系列順$で次回の[ `animation-timing-function$p を定義する~keyframe ] — 無い場合は `100%^v ~keyframe(`暗黙$なそれも含む) — までの,~animationの進展を定義する。 ◎ When specified in a keyframe, animation-timing-function defines the progression of the animation between the current keyframe and the next keyframe for the animating property in sorted keyframe selector order (which may be an implicit 100% keyframe).
4.4. `animation-iteration-count^p ~prop
`animation-iteration-count$p ~propは、 `反復~回数@ — ~animationが再生される周回~数 — を指定する。 初期~値 `1^v は、 ~animationがその開始-から終止-までの間, 1 回だけ再生されることを意味する。 この~propは、 `animation-direction$p に対する値 `alternate$v と併用されることも多い — それは、 `交替$周回において~animationを逆再生させることになる。 ◎ The animation-iteration-count property specifies the number of times an animation cycle is played. The initial value is 1, meaning the animation will play from beginning to end once. This property is often used in conjunction with an animation-direction value of alternate, which will cause the animation to play in reverse on alternate cycles.
~animationが作動中な時区間( `所要時間$ ~MUL `反復~回数$ )は、 `作動時間@ と呼ばれる。 ◎ The time window during which the animation is active (duration x iteration-count) is known as the active duration.
◎名 `animation-iteration-count@p ◎値 `single-animation-iteration-count$t# ◎初 `1^v ◎適 すべての要素 ◎継 されない ◎百 受容しない ◎算 [ 実数/~keyword `infinite$v ]たちが成す~list ◎ list, each item either a number or the keyword infinite ◎順 文法に従う ◎ア ~animate不可 ◎表終`single-animation-iteration-count@t = `infinite$v | `number [0,∞]$t
- `infinite@v
- ~animationは、 永遠に繰返されることになる。 ◎ The animation will repeat forever.
- `number [0,∞]$t
- ~animationは、 指定された回数だけ繰返されることになる。 数値が整数でない場合、 ~animationは最後の周回の中途で終止することになる。 負な数は妥当でない。 ◎ The animation will repeat the specified number of times. If the number is not an integer, the animation will end partway through its last cycle. Negative numbers are invalid.
- 値 `0^v は妥当であり、 `animation-duration$p に対する値 `0s^v と類似に,~animationを瞬時に終わらせる。 ◎ A value of 0 is valid and, similar to an animation-duration of 0s, causes the animation to occur instantaneously.
~animationの`所要時間$が `0s^v の場合、 `animation-iteration-count$p に対する妥当な値が何であれ — `infinite$v であっても — 瞬時に生じて終わる。 ◎ If the animation has a duration of 0s, it will occur instantaneously for any valid value of animation-iteration-count, including infinite.
4.5. `animation-direction^p ~prop
`animation-direction$p ~propは、 ~animationを どの周回で逆再生させるかを定義する。 ~animationが逆再生されるときは`計時~関数$も逆にされる。 例えば,逆再生されたときの `ease-in$v ~animation 【 `animation-timing-function$p が `ease-in$v にされた~animation】 は、 `ease-out$v ~animationとして現れることになる。 ◎ The animation-direction property defines whether or not the animation should play in reverse on some or all cycles. When an animation is played in reverse the timing functions are also reversed. For example, when played in reverse an ease-in animation would appear to be an ease-out animation.
◎名 `animation-direction@p ◎値 `single-animation-direction$t# ◎初 `normal$v ◎適 すべての要素 ◎継 されない ◎百 受容しない ◎算 指定された~keywordたちが成す~list ◎ list, each item a keyword as specified ◎順 文法に従う ◎ア ~animate不可 ◎表終`single-animation-direction@t = `normal$v | `reverse$v | `alternate$v | `alternate-reverse$v
- `normal@v
- ~animationの各~反復は、 すべて,指定されたとおりに(順方向に)再生される。 ◎ All iterations of the animation are played as specified.
- `reverse@v
- ~animationの各~反復は、 すべて,指定された仕方とは逆方向に再生される。 ◎ All iterations of the animation are played in the reverse direction from the way they were specified.
- `alternate@v
- ~animationの各~周回のうち[ 奇数回目の反復は順方向,偶数回目の反復は逆方向 ]に再生される。 ◎ The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction.
- `alternate-reverse@v
- ~animationの各~周回のうち[ 奇数回目の反復は逆方向,偶数回目の反復は順方向 ]に再生される。 ◎ The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction.
注記: 反復の偶奇を決定する目的においては、 回数は 1 から数えることに注意。 ◎ Note: For the purpose of determining whether an iteration is even or odd, iterations start counting from 1.
4.6. `animation-play-state^p ~prop
`animation-play-state$p ~propは、 ~animationを[ 稼働中にするか,静止させるか ]を定義する。 ◎ The animation-play-state property defines whether the animation is running or paused.
◎名 `animation-play-state@p ◎値 `single-animation-play-state$t# ◎初 `running$v ◎適 すべての要素 ◎継 されない ◎百 受容しない ◎算 指定された~keywordたちが成す~list ◎ list, each item a keyword as specified ◎順 文法に従う ◎ア ~animate不可 ◎表終`single-animation-play-state@t = `running$v | `paused$v
- `running@v
- この~propが `running$v に設定されている間は、 ~animationは,通常通り進行する。 ◎ While this property is set to running, the animation proceeds as normal.
- `paused@v
-
この~propが `paused$v に設定されている間は、 ~animationは — それを制御する “時計” が停止されたかのように — 静止され, それまでの進捗は要素に適用され続ける。 静止-が解かれた( `running$v に戻された)時点で、 ~animationは — 時計が進み始めたかのように — その状態から開始される。 ◎ While this property is set to paused, the animation is paused. The animation continues to apply to the element with the progress it had made before being paused. When unpaused (set back to running), it restarts from where it left off, as if the "clock" that controls the animation had stopped and started again.
- 遅延の段階で `animation-play-state$p ~propが `paused$v にされた場合、 遅延~時計も静止され, `running$v に戻された時点で再開される。 ◎ If the property is set to paused during the delay phase of the animation, the delay clock is also paused and resumes as soon as animation-play-state is set back to running.
4.7. `animation-delay^p ~prop
`animation-delay$p ~propは、 ~animationがいつ開始することになるかを定義する。 これは、 ~animationを[ それが適用された時点から,ある時間だけ経過した後 ]に始めさせたり,[ それが適用された時点より,ある時間だけ前の時点 ]ですでに実行が始まっていたかのように現れさせる。 ◎ The animation-delay property defines when the animation will start. It allows an animation to begin execution some time after it is applied, or to appear to have begun execution some time before it is applied.
◎名 `animation-delay@p ◎値 `time$t# ◎初 `0s^v ◎適 すべての要素 ◎継 されない ◎百 受容しない ◎算 所要時間たちが成す~list ◎ list, each item a duration ◎順 文法に従う ◎ア ~animate不可 ◎表終- `time@t
- ~animationの開始-(これらの~propを通して~animationが適用される時点)から,その実際の開始-までの遅延の~~長さを定義する。 遅延 `0s^v (初期~値)は、 ~animationが適用され次第,その実行を開始させることを意味する。 ◎ The <time> defines how long of a delay there is between the start of the animation (when the animation is applied to the element via these properties) and when it begins executing. A delay of 0s (the initial value) means that the animation will execute as soon as it is applied.
- 負な遅延も妥当である。 遅延 `0s^v と類似に、 それは,~animationを即時に実行に移すことを意味するが、 ~animationは遅延の絶対値の分だけ進捗され, 指定された時間だけ過去の時点ですでに開始されていたかのように — すなわち,その`作動時間$の中途から開始されるように — 現れさせる。 ~animationの開始-時の値を与える~keyframeが,`暗黙$な値をとる場合、 その値は,[ 過去の時点ではなく,~animationを開始した時点 ]から得られる。 ◎ A negative delay is valid. Similar to a delay of 0s, it means that the animation executes immediately, but is automatically progressed by the absolute value of the delay, as if the animation had started the specified time in the past, and so it appears to start partway through its active duration. If an animation’s keyframes have an implied starting value, the values are taken from the time the animation starts, not some time in the past.
4.8. `animation-fill-mode^p ~prop
`animation-fill-mode$p ~propは、 ~animation実行の時間~外に適用される値を定義する。 既定(初期~値 `none^v )では、 ~animationは,次に挙げる期間においては, ~prop値たち【~animateされる各~propの値】には影響しない: ◎ The animation-fill-mode property defines what values are applied by the animation outside the time it is executing. By default, an animation will not affect property values\
- それが適用された時点 (要素 の `animation-name$p ~propが設定された時点) から実際に実行される時点 ( `animation-delay$p ~propにより決定される) までの間 ◎ between the time it is applied (the animation-name property is set on an element) and the time it begins execution (which is determined by the animation-delay property).\
- ~animationが終止した時点 ( `animation-duration$p, `animation-iteration-count$p ~propにより決定される) より後 ◎ Also, by default an animation does not affect property values after the animation ends (determined by the animation-duration and animation-iteration-count properties).\
`animation-fill-mode$p ~propにより,この挙動を上書きできる。 また,この~propが動的に更新されたときは、[ ~animationの遅延の段階/終止した後 ]いずれの間かに従って,必要に応じて~prop値たち【~animateされる各~propの値】にも反映されることになる。 ◎ The animation-fill-mode property can override this behavior. Dynamic updates to the property will be reflected by property values as needed, whether during the animation delay or after the animation ends.
◎名 `animation-fill-mode@p ◎値 `single-animation-fill-mode$t# ◎初 `none^v ◎適 すべての要素 ◎継 されない ◎百 受容しない ◎算 指定された~keywordたちが成す~list ◎ list, each item a keyword as specified ◎順 文法に従う ◎ア ~animate不可 ◎表終`single-animation-fill-mode@t = `none^v | `forwards$v | `backwards$v | `both$v
- `none@v
- ~animationは、 適用されていても,実行されていない間の効果はない。 ◎ The animation has no effect when it is applied but not executing.
- `forwards@v
-
~animationは、 終止した時点 ( `animation-iteration-count$p により決定される) の~prop値を,その後にも引き続き適用することになる。 `animation-iteration-count$p が正な整数の場合、 ~animationが最後の反復を完了した時点の値が適用されることになる (次回の反復の開始-時の値ではなく)。 `animation-iteration-count$p が 0 の場合、 最初の反復の開始-時の値が適用されることになる ( `animation-fill-mode$p が `backwards$v のときとちょうど同じになる)。 ◎ After the animation ends (as determined by its animation-iteration-count), the animation will apply the property values for the time the animation ended. When animation-iteration-count is an integer greater than zero, the values applied will be those for the end of the last completed iteration of the animation (rather than the values for the start of the iteration that would be next). When animation-iteration-count is zero, the values applied will be those that would start the first iteration (just as when animation-fill-mode is backwards).
- `backwards@v
-
~animationは, `animation-delay$p により定義される遅延期間の間,[ ~animationの最初の反復を開始させる~keyframe ]内で定義された一連の~prop値を適用することになる。 この~keyframeは、 `animation-direction$p 値に応じて,次のいずれかになる:
- `normal$v / `alternate$v ⇒ `from^v ( `0%^v )~keyframe
- `reverse$v / `alternate-reverse$v ⇒ `to^v ( `100%^v )~keyframe
- `both@v
- [ `forwards$v, `backwards$v ]どちらの効果も適用される。 ◎ The effects of both forwards and backwards fill apply.
4.9. `animation^p 略式~prop
`animation$p `略式~prop$は、 ~commaで分離された~animation定義たちが成す~listをとる。 各~animation定義( `single-animation$t )は、[ この~propの すべての下位prop ]用の値たちを与える。 これらの下位propは、 `~animation~prop@ とも総称される。 (これら各~下位propが与える~listの長さが互いに異なるとき,どうなるかについては、 `animation-name$p の定義を見よ — この問題は、 `animation$p 略式~propのみを利用して定義したときは生じないが。) ◎ The animation shorthand property is a comma-separated list of animation definitions. Each item in the list gives one item of the value for all of the subproperties of the shorthand, which are known as the animation properties. (See the definition of animation-name for what happens when these properties have lists of different lengths, a problem that cannot occur when they are defined using only the animation shorthand.)
◎名 `animation@p ◎値 `single-animation$t# ◎初 個々の~propを見よ ◎適 すべての要素 ◎継 個々の~propを見よ ◎百 受容しない ◎算 個々の~propを見よ ◎順 文法に従う ◎ア ~animate不可 ◎表終`single-animation@t = `time[0s,∞]$t || `easing-function$t || `time$t || `single-animation-iteration-count$t || `single-animation-direction$t || `single-animation-fill-mode$t || `single-animation-play-state$t || [ `none^v | `keyframes-name$t ]
各~animation定義の中の値たちの順序は、 重要である ⇒ 各 `single-animation$t 内において、 `time$t に構文解析し得る値のうち[ 1 個目の値は `animation-duration$p, 2 個目の値は `animation-delay$p ]にアテガわれる。 ◎ Order is important within each animation definition: the first value in each <single-animation> that can be parsed as a <time> is assigned to the animation-duration, and the second value in each <single-animation> that can be parsed as a <time> is assigned to animation-delay.
値たちの順序は、 `keyframes-name$t 値を他の~keywordと判別するためにも重要になる。 構文解析-時には、 各~値のうち[ `animation-name$p 以外の~prop用に妥当な~keywordであって, この略式~propの中でより前に現れていないもの ]は、 `animation-name$p 用の値ではなく, それらの~prop用の値として受容するモノトスル。 更には,直列化する際には、 それらの~propの既定~値は,少なくとも[ 別の~propの値にもなり得る `animation-name$p を判別できる ]ように出力するモノトスル — また,その必要がなくとも追加的に出力してもヨイ。 ◎ Order is also important within each animation definition for distinguishing <keyframes-name> values from other keywords. When parsing, keywords that are valid for properties other than animation-name whose values were not found earlier in the shorthand must be accepted for those properties rather than for animation-name. Furthermore, when serializing, default values of other properties must be output in at least the cases necessary to distinguish an animation-name that could be a value of another property, and may be output in additional cases.
例えば、 animation: `3s none backwards^v を構文解析して得られた値 ( `animation-fill-mode$p は `none^v, `animation-name$p は `backwards^v になる) を animation: `3s backwards^v に直列化してはならない (これを構文解析した結果は、 `animation-fill-mode$p は `backwards^v, `animation-name$p は `none^v になる)。 ◎ For example, a value parsed from animation: 3s none backwards (where animation-fill-mode is none and animation-name is backwards) must not be serialized as animation: 3s backwards (where animation-fill-mode is backwards and animation-name is none).
5. ~animation~event
~animationに関係する いくつかの~eventが、 ~DOM `Event^I ~system を通して可用である。 DOM ~eventは、 ~animationの[ 開始-, 終止-, 各~反復の終端 ]すべての時点に生成される。 要素~上では,複数の~propが同時に~animateされ得る。 これが生じ得るのは、 要素の `animation-name$p に指定されている値を成す[ ある名前の `keyframes$at が 複数の~propを含んでいる / 複数の名前の `keyframes$at が それぞれ異なる~propを含んでいる ]ときである。 しかしながら,~eventの目的においては、 `animation-name$p 値を成す各 名前が 1 個の~animationを指定する。 すなわち,~eventが生成されるのは、 ~animateされる各~propごとではなく,各 名前ごとになる。 ◎ Several animation-related events are available through the DOM Event system. The start and end of an animation, and the end of each iteration of an animation, all generate DOM events. An element can have multiple properties being animated simultaneously. This can occur either with a single animation-name value with keyframes containing multiple properties, or with multiple animation-name values. For the purposes of events, each animation-name specifies a single animation. Therefore an event will be generated for each animation-name value and not necessarily for each property being animated.
妥当な`~keyframe規則$が定義されているどの~animationも、 稼働して,~eventを生成することになる — これには、 空な`~keyframe規則$を伴う~animationも含まれる。 ◎ Any animation for which a valid keyframe rule is defined will run and generate events; this includes animations with empty keyframe rules.
生成されて送信される各~eventには,~animationの経過時間も伴われる。 これにより,~event~handlerにおいては、 ~loop中の~animationの現在の反復や, `交替$~animationの現在の位置を決定できるようになる。 この経過時間には、 ~animationが `paused$v 状態にあった時間は含まれない†。 ◎ The time the animation has been running is sent with each event generated. This allows the event handler to determine the current iteration of a looping animation or the current position of an alternating animation. This time does not include any time the animation was in the paused play state.
【† 下の `elapsedTime$m の記述から、 遅延期間も含まれない — もしくは、 遅延が負な場合は “`仮想の開始-時@#_virtual-start-time_$” からの経過時間になる。 】
5.1. `AnimationEvent^I ~interface
`AnimationEvent$I ~interfaceは、 Animation ~eventに結付けられた特定の文脈上の情報を供する。 ◎ The AnimationEvent interface provides specific contextual information associated with Animation events. ◎ 5.1.1. IDL Definition
[`Exposed$=Window] interface `AnimationEvent@I : `Event$I { `constructor@#dom-animationevent-animationevent$(`CSSOMString$ %type, optional `AnimationEventInit$I %animationEventInitDict = {}); readonly attribute `CSSOMString$ `animationName$m; readonly attribute double `elapsedTime$m; readonly attribute `CSSOMString$ `pseudoElement$m; };
dictionary `AnimationEventInit@I : `EventInit$I { `CSSOMString$ `animationName@dm = ""; double `elapsedTime@dm = 0.0; `CSSOMString$ `pseudoElement@dm = ""; };
- `animationName@m ◎ animationName, of type CSSOMString, readonly
- ~eventを発火した~animationの `animation-name$p ~propの値。 ◎ The value of the animation-name property of the animation that fired the event.
- `elapsedTime@m ◎ elapsedTime, of type double, readonly
- この~eventが発火された時点における,~animationの経過時間(秒)。 ~animationが静止されていた時間は除外される。 この~memberに対する精確な計算は、 各~event型ごとに定義される ◎ The amount of time the animation has been running, in seconds, when this event fired, excluding any time the animation was paused. The precise calculation for of this member is defined along with each event type.
- `pseudoElement@m ◎ pseudoElement, of type CSSOMString, readonly
- ~animationが~CSS疑似要素 上で稼働している場合は,その疑似要素の名前(先頭は 2 個の~colon)になる(この場合,~eventの `target^m はその疑似要素の出自の要素になる)。 ~animationが要素 上で稼働している場合は空~文字列になる(すなわち~eventの `target^m はその要素)。 ◎ The name (beginning with two colons) of the CSS pseudo-element on which the animation runs (in which case the target of the event is that pseudo-element’s corresponding element), or the empty string if the animation runs on an element (which means the target of the event is that element).
- `new AnimationEvent(type, animationEventInitDict)@m
- `~event構築子$。 ◎ AnimationEvent(type, animationEventInitDict) is an event constructor.
5.2. `AnimationEvent^I の種類
次に挙げる型の~eventが~animation~eventとして生じ得る: ◎ The different types of animation events that can occur are:
- `animationstart@et
- この~eventは、 ~animationの開始-時に生じる。 `animation-delay$p がある場合、 この~eventは,それによる遅延期間が満了したときに発火することになる。 ◎ The animationstart event occurs at the start of the animation. If there is an animation-delay then this event will fire once the delay period has expired.
- この~eventに対する `elapsedTime$m 値は、 `min^op( `max^op( − ( `animation-delay$p の値 ), 0 ), `作動時間$ ) になる(遅延が負でないならば 0 )。 負な遅延に対しては、 `animation-play-state$p が[ `running$v / `paused$v ]に設定されたとき,発火されることになる。 ◎ A negative delay will cause the event to fire with an elapsedTime equal to the absolute value of the delay capped to the active duration of the animation, that is, min(max(-animation-delay, 0), active duration); in this case the event will fire whether animation-play-state is set to running or paused.
-
- 浮上する
- 取消~不可
- 文脈~報: `animationName$m, `elapsedTime$m, `pseudoElement$m
- `animationend@et
- この~eventは、 ~animationの完遂-時に生じる。 ◎ The animationend event occurs when the animation finishes.\
- この~eventに対する `elapsedTime$m 値は、 `作動時間$になる。 ◎ In this case the value of the elapsedTime member of the event is equal to the active duration.
-
- 浮上する
- 取消~不可
- 文脈~報: `animationName$m, `elapsedTime$m, `pseudoElement$m
- `animationiteration@et
- この~eventは、[ `animationend$et ~eventが同時に発火されることになる場合 ]を除く,~animationの各~反復の終端~時に生じる。 したがって、 この~eventは,[ `反復~回数$が 1 以下の~animation ]においては生じないことになる。 【`所要時間$が 0 秒の場合も,`反復~回数$に関わらず生じないことになる。】 ◎ The animationiteration event occurs at the end of each iteration of an animation, except when an animationend event would fire at the same time. This means that this event does not occur for animations with an iteration count of one or less.
- この~eventに対する `elapsedTime$m 値は、 ( `animation-duration$p の値 ~MUL 反復し終えた回数 ) になる(すなわち,初回の回数は 1 )。 ◎ The elapsedTime member in this case is equal to the product of the current iteration and animation-duration where the current iteration is the zero-based index of the new iteration. For example, assuming no negative animation-delay, after one iteration completes the current iteration would be one.
-
- 浮上する
- 取消~不可
- 文脈~報: `animationName$m, `elapsedTime$m, `pseudoElement$m
- `animationcancel@et
- この~eventは、[ `animationend$et ~eventが同時に発火されることになる場合 ]を除く,[ 稼働中の~animationが停止されたとき ]に生じる — 例えば ⇒# `animation-name$p が変更され 当の~animationが除去されたとき/ ~animateしている要素または その先祖の `display$p が `none^v にされたとき ◎ The animationcancel event occurs when the animation stops running in a way that does not fire an animationend event, such as a change in the animation-name that removes the animation, or the animating element or one of its ancestors becoming display:none.
- この~eventに対する `elapsedTime$m 値は、[ ~animationの始まりから~animationが取消された時点 ]までの秒数になる — ただし、 ~animationが静止していた時間は除外される。 ~animationの `animation-delay$p が負な場合、 ~animationの始まりは、 ~animationが実際に誘発された時点から `animation-delay$p の絶対値(秒数)だけ前の時点とする。 対して、 遷移の `animation-delay$p が正な場合に,~animationが遅延~段階を終える前に発火された場合、 `elapsedTime$m は 0 になる。 ◎ The elapsedTime member for this event indicates the number of seconds that had elapsed since the beginning of the animation at the moment when the animation was canceled. This excludes any time where the animation was paused. If the animation had a negative animation-delay, the beginning of the animation is the moment equal to the absolute value of animation-delay seconds prior to when the animation was actually triggered. Alternatively, if the animation had a positive animation-delay and the event is fired before the animation’s delay has expired, the elapsedTime will be zero.
-
- 浮上する
- 取消~不可
- 文脈~報: `animationName$m, `elapsedTime$m, `pseudoElement$m
5.3. 要素, `Document^I ~obj, `Window^I ~obj上の~event~handler
以下に挙げる`~event~handler$, および対応する`~event~handler~event型$は: ◎ The following are the event handlers (and their corresponding event handler event types)\
- `~HTML要素$においては、[ `~event~handler内容~属性$, `~event~handler~IDL属性$ ]の両者として~supportするモノトスル。 ◎ that must be supported by all HTML elements, as both event handler content attributes and event handler IDL attributes;\
- [ `Document$I / `Window$I ]~objにおいては、 `~event~handler~IDL属性$として~supportするモノトスル。 ◎ and that must be supported by all Document and Window objects, as event handler IDL attributes:
`~event~handler$ | `~event~handler~event型$ |
---|---|
`onanimationstart@m | `animationstart$et |
`onanimationiteration@m | `animationiteration$et |
`onanimationend@m | `animationend$et |
`onanimationcancel@m | `animationcancel$et |
6. DOM ~interface
~CSS~animationは、 ~keyframeを表現するために新たに導入された~interfaceを通して `CSSOM$r に公開される。 ◎ CSS animations are exposed to the CSSOM through a pair of new interfaces describing the keyframes.
注記: 以下に定義される~interfaceは、 この仕様の~levelにて可用な相互運用可能な~APIを反映する。 将来の~levelでは、 この~APIの一部は[ 非推奨にされる/拡張される ]かもしれない。 ◎ Note: the interfaces defined below reflect the interoperable API available as of this level of the specification. Future levels may deprecate parts of this API and extend others.
6.1. `CSSRule^I ~interface
次に挙げる 2 つの規則~型が `CSSRule$I ~interfaceに追加される。 これらは、 新たに導入された[ `~keyframe規則$, `keyframes$at 規則 ]を表現する~interfaceたちの識別を供する。 ◎ The following two rule types are added to the CSSRule interface. They provide identification for the new keyframe and keyframes rules. ◎ 5.1.1. IDL Definition
partial interface `CSSRule$I { const `unsigned short$ `KEYFRAMES_RULE@m = 7; const `unsigned short$ `KEYFRAME_RULE@m = 8; };
【 これらの定数は、 順に, `CSSRule$I の派生~interface[ `CSSKeyframesRule$I, `CSSKeyframeRule$I ]に対応する。 】
6.2. `CSSKeyframeRule^I ~interface
`CSSKeyframeRule$I ~interfaceは、 1 個の~key【`~keyframe選択子$】用の~style規則【 `keyframe-block$t 】を表現する。 ◎ The CSSKeyframeRule interface represents the style rule for a single key. ◎ 6.2.1. IDL Definition
[`Exposed$=Window] interface `CSSKeyframeRule@I : `CSSRule$I { attribute `CSSOMString$ `keyText$m; [`SameObject$, `PutForwards$=`cssText$m] readonly attribute `CSSStyleProperties$I `style$m; };
- `keyText@m ◎ keyText, of type CSSOMString
- `~keyframe選択子$を[ ~commaで分離された百分率~値たちが成す~list ]として表現する。 ~keyword[ `from^v / `to^v ]は[ `0%^v / `100%^v ]に対応付けられる。 ◎ This attribute represents the keyframe selector as a comma-separated list of percentage values. The from and to keywords map to 0% and 100%, respectively.
- `keyText$m が無効な~keyframe選択子に更新されようとした場合、 値は変更することなく, `SyntaxError$E 例外を投出するモノトスル。 ◎ If keyText is updated with an invalid keyframe selector, a SyntaxError exception must be thrown and the value of keyText must remain unchanged.
- `style@m ◎ style, of type CSSStyleProperties, readonly
- 次のようにされた, `~keyframe規則$用の `CSSStyleProperties$I ~objを返すモノトスル ⇒# `読専か$dB ~SET ~F, `宣言~群$dB ~SET `指定d順序$による,規則~内に宣言されている宣言~群, `親~CSS規則$dB ~SET この `CSSKeyframeRule$I ~obj, `所有者~node$dB ~SET ~NULL, ◎ Must return a CSSStyleProperties object for the keyframe rule, with the following properties: ◎ readonly flag • Unset. declarations • The declared declarations in the rule, in specified order. parent CSS rule • The context object (i.e. this CSSKeyframeRule). owner node • Null.
6.3. `CSSKeyframesRule^I ~interface
`CSSKeyframesRule$I ~interfaceは、 単独の~animation用の~keyframeたちが成す完全な集合 【言い換えれば、 `keyframes$at 規則】 を表現する。 ◎ The CSSKeyframesRule interface represents a complete set of keyframes for a single animation. ◎ 6.3.1. IDL Definition
[`Exposed$=Window] interface `CSSKeyframesRule@I : `CSSRule$I { attribute `CSSOMString$ `name$m; readonly attribute `CSSRuleList$I `cssRules$m; readonly attribute `unsigned long$ `length$m; `getter$m `CSSKeyframeRule$I (`unsigned long$ %index); `undefined$ `appendRule$m(`CSSOMString$ %rule); `undefined$ `deleteRule$m(`CSSOMString$ %select); `CSSKeyframeRule$I? `findRule$m(`CSSOMString$ %select); };
- `name@m ◎ name, of type CSSOMString
- `animation-name$p ~propにて利用される, `keyframes$at の名前。 【設定-時に与える文字列には、`制約はない@#_keyframe-name-as-string$。】 ◎ This attribute is the name of the keyframes, used by the animation-name property.
- `cssRules@m ◎ cssRules, of type CSSRuleList, readonly
- ~list内の各~keyframeへの~accessを与える。 ◎ This attribute gives access to the keyframes in the list.
- `length@m ◎ length, of type unsigned long, readonly
- ~list内の各~keyframeの個数。 ◎ This attribute is the number of keyframes in the list.
- `getter@m ◎ 6.3.3. The indexed property getter ◎ The indexed property getter
- `この有index~prop取得子@~WEBIDL#dfn-determine-the-value-of-an-indexed-property$は、 ~keyframeたちが成す~listから所与の %index により指示された位置にある `CSSKeyframeRule$I を返す — 無い場合、 `undefined^c を返す。 ◎ The indexed property getter returns the CSSKeyframeRule from the list of keyframes at the indicated position. ◎ Parameters: ◎ index of type unsigned long • The zero-based index of the rule to return. ◎ Return Value: ◎ CSSKeyframeRule • The found rule or undefined if there is no rule at the specific index.
- 例外は投出されない。 ◎ No Exceptions
- `appendRule(rule)@m ◎ 6.3.4. The appendRule method
-
渡された CSSKeyframeRule† を, `keyframes$at 規則の末尾に付加する。
【† %rule 引数を `keyframe-block$t として`構文解析-@~CSSSYN#parse-a-rule$した結果を表現する `CSSKeyframeRule$I ~obj。 構文~errorの場合、 下記の “例外は投出されない” から,何もしないことになる (例外が投出される `CSSGroupingRule$I の `insertRule()^m と違って)。 】
◎ The appendRule method appends the passed CSSKeyframeRule at the end of the keyframes rule. - 引数 %rule には、 付加する規則を与える — `keyframes$at 規則~内の 1 個の~entry【 `keyframe-block$t 】と同じ構文で記す。 規則が妥当な場合、 ~list【 `qualified-rule-list$t 】内に すでに同じ~key【`~keyframe選択子$】が存在していたとしても,常に付加される。 ◎ Parameters: rule of type CSSOMString • The rule to be appended, expressed in the same syntax as one entry in the @keyframes rule. A valid rule is always appended e.g. even if its key(s) already exists. ◎ No Return Value
- 例外は投出されない。 ◎ No Exceptions
- `deleteRule(select)@m ◎ 6.3.5. The deleteRule method
- 各 `CSSKeyframeRule$I のうち[ 指定された~keyframe選択子 %select に合致するもの ]のうち[ 最後に宣言されたもの ]を削除する。 合致する規則が存在しない場合、 何もしない。 ◎ The deleteRule method deletes the last declared CSSKeyframeRule matching the specified keyframe selector. If no matching rule exists, the method does nothing.
-
引数 %select には、 削除される規則の`~keyframe選択子$を[ ~commaで分離された値たちが成す~list ]として与える:
- 各~値は、 次に挙げるいずれか ⇒# `0%^v 以上 `100%^v 以下の百分率~値/ ~keyword `from^v ( 0% に解決される)/ ~keyword `to^v ( 100% に解決される)
- 値たちの[ 個数, 順序 ]は、 各~値の前後の空白を無視して, 対象になる`~keyframe規則$のそれと合致しなければならない。
- 例外は投出されない。 ◎ No Exceptions
- `findRule(select)@m ◎ 6.3.6. The findRule method
- 指定された~keyframe選択子 %select に合致するような,最後に宣言された `CSSKeyframeRule$I を返す。 合致する規則が存在しない場合、 ~NULL を返す†。 【†原文の記述は明らかに誤記なので修正している。】 ◎ The findRule returns the last declared CSSKeyframeRule matching the specified keyframe selector. If no matching rule exists, the method does nothing.
- 引数 %select には、 ~~検索する規則の`~keyframe選択子$を `deleteRule()$m の同じ引数と同様に与える。 ◎ Parameters: select of type CSSOMString • The keyframe selector of the rule to be found: a comma-separated list of percentage values between 0% and 100% or the keywords from or to which resolve to 0% and 100%, respectively. • The number and order of the values in the specified keyframe selector must match those of the targeted keyframe rule(s). The match is not sensitive to white space around the values in the list. ◎ Return Value: CSSKeyframeRule • The found rule.
- 例外は投出されない。 ◎ No Exceptions
例えば、 次の~animationが与えられたとき: ◎ For example, given the following animation:
@keyframes colorful-diagonal-slide { from { left: 0; top: 0; } 10% { background-color: blue; } 10% { background-color: green; } 25%, 75% { background-color: red; } 100% { left: 100px; top: 100px; } }
変数 %anim は, この~animation用の `CSSKeyframesRule$I ~objへの参照を保持しているとするなら、 次の~codeは: ◎ Assuming the variable anim holds a reference to a CSSKeyframesRule object for this animation, then:
%anim.deleteRule('10%'); var %tenPercent = %anim.findRule('10%');
最後の 10% 規則
( background-color: green
)
を削除してから、
残る規則
background-color: blue
を見出して,それを %tenPercent に返す。
◎
will start by deleting the last 10% rule i.e. the green background color rule; then find the remaining blue background rule and return it into tenPercent.
次の~codeは: ◎ The following:
var %red = %anim.findRule('75%');
%red を ~NULL に設定する。
代わりに,規則
background-color: red
用の全部的な選択子を利用しなければならない:
◎
will set red to null. The full selector for the red background color rule must be used instead:
var %red = %anim.findRule('25%,75%');
[ `from^v は 0% / `to^v は 100% ]に対応付けられるので、 次では,どちらの値を利用しても規則を見出せる: ◎ Since from maps to 0% and to maps to 100%, we can find these rules using either value:
var %from = %anim.findRule('0%'); /* from { left: 0; top: 0; } 規則を返す */ var %to = %anim.findRule('to'); /* 100% { left: 100px; top: 100px; } 規則を返す */
6.4. `GlobalEventHandlers^I ~interface~mixinに対する拡張
この仕様は、[ § 要素, `Document^I ~obj, `Window^I ~obj上の~event~handler ]に定義される各種 `~animation~event@#events$用の`~event~handler~IDL属性$を追加するために、 ~HTMLの `GlobalEventHandlers$I ~interface~mixinを拡張する: ◎ This specification extends the GlobalEventHandlers interface mixin from HTML to add event handler IDL attributes for animation events as defined in § 5.3 Event handlers on elements, Document objects, and Window objects. ◎ 6.4.1. IDL Definition
partial interface mixin `GlobalEventHandlers$I { attribute `EventHandler$I `onanimationstart$m; attribute `EventHandler$I `onanimationiteration$m; attribute `EventHandler$I `onanimationend$m; attribute `EventHandler$I `onanimationcancel$m; };
~privacyの考慮点
この仕様に対し報告された~privacyの懸念は、 無い。 ◎ No privacy concerns have been reported on this specification.
~securityの考慮点
この仕様に対し報告された~securityの懸念は、 無い。 ◎ No security concerns have been reported on this specification.
変更点
- 2018年 10月 11日 作業草案 からの主な変更点: ◎ 9.1. Changes since the Working Draft of 11 October 2018 ◎ The following substantive changes were made:
- `CSSKeyframesRule$I 用に有index~prop取得子を定義した。 ◎ Defined indexed property getter for CSSKeyframesRule
- `AnimationEvent$I の定義に構築子【!type】を追加した。 ◎ Added constructor type on AnimationEvent’s definition
- `角括弧付き範囲~記法$において,次元~用に要求される単位を追加した。 ◎ Added required unit for dimension in range notation
- [ 記述子/規則の導入部 ]を成す値に`角括弧付き範囲~記法$を適用した。 ◎ Applied range definition notation to descriptor and rule’s prelude values
- ~propの値に`角括弧付き範囲~記法$を適用した。 ◎ Applied range definition notation to property values
- 各~event定義を それらの `EventHandler$I 容器に結付けた。 ◎ Associated event definitions with their EventHandler container
- 生成規則~用の~markupをもっと良くした。 ◎ Better markup for productions
- 誤記を正した ( `not rule to be deleted^en を `rule to be found^en に)。 ◎ Corrected typo (rule to be found, not rule to be deleted)
- 値~定義の参照を他の~CSS仕様と一貫するようにした。 ◎ Made value definition reference consistent with other CSS specifications
- ~IDLを `WEBIDL$r 仕様に倣うようにした。 ◎ IDL aligned with Web IDL specification
- 構築子に既定の辞書~値を追加した。 ◎ Added default dictionary value to constructor
- 紛らわしい例を書き直した。 ( `4118$issue ) ◎ Rewrote confusing example (#4118)
- ~animationの所要時間が 0 の場合の取扱いを明確化した。 ◎ Clarified handling of zero-duration animations
- “`none^en” ではなく “~animate不可” を利用するようにした。 ◎ Use "not animatable" rather than "none"
- “計時~関数” は、 今や “~easing関数” と呼ばれる。 ◎ Timing functions now called easing functions
- `GlobalEventHandlers^I を~mixinに変更した。 ◎ Changed GlobalEventHandlers to be a mixin
謝辞
とりわけ、 次の方々からの~feedbackに。 加えて、 `www-style@https://lists.w3.org/Archives/Public/www-style/$ ~communityのすべての方々に。
Thanks especially to the feedback from Tab Atkins, Brian Birtles, Shane Stephens, Carine Bournez, Christian Budde, Anne van Kesteren, Øyvind Stenhaug, Estelle Weyl, and all the rest of the www-style community.
他の open な課題
`~keyframe間のヤリトリを指定する@https://lists.w3.org/Archives/Public/www-style/2015Jul/0391.html$必要がある。 ◎ Need to specify how keyframes interact.