From cff92a69fad9d101609929e8a2b29eaf42d4d646 Mon Sep 17 00:00:00 2001 From: Joey Arhar Date: Fri, 28 Jul 2023 10:52:20 -0700 Subject: [PATCH] [css-transitions-2] Add transition-behavior property to specify whether transitions happen on properties with discrete animation type (#9101) This was resolved here: https://github.com/w3c/csswg-drafts/issues/8857 Also revert the redefinition of the all keyword to try to solve the same problem. --- css-transitions-2/Overview.bs | 60 +++++++++++++++++++++++++++-------- 1 file changed, 46 insertions(+), 14 deletions(-) diff --git a/css-transitions-2/Overview.bs b/css-transitions-2/Overview.bs index 93687e15762..82d57ef4538 100644 --- a/css-transitions-2/Overview.bs +++ b/css-transitions-2/Overview.bs @@ -84,20 +84,18 @@ the transition was generated (e.g. 'border-left-width'). ISSUE: Update the defining instance of [=transitionable=] once it is ported from Level 1. -In CSS Transitions Level 2, -property values are [=transitionable=] -unless they have an [=animation type=] that is [=not animatable=]. -Values with a [=discrete=] [=animation type=] are [=transitionable=], -and flip at 50% progress (p = 0.5). - -However, the ''transition-property/all'' keyword -continues to expand only to all [=transitionable=] properties -whose [=animation type=] is not [=discrete=]. - -Note: This is for compatibility with CSS Transitions Level 1 -(and because authors will rarely want [=discrete=] properties to transition at 50% by default). -Note this means that the ''tranisition-property/all'' keyword here -maps to a subset of the 'all' [=shorthand property=]’s [=longhand properties=]. +In CSS Transitions Level 2, when comparing the [=before-change style=] and +[=after-change style=] for a given property, the property values are +[=transitionable=] if: +
    +
  1. They have an [=animation type=] that is neither [=not animatable=] nor + [=discrete=], or
  2. +
  3. The 'transition-behavior' is ''allow-discrete'' and they have an + [=animation type=] that is [=discrete=].
  4. +
+ +Note: When values with a [=discrete=] [=animation type=] are transitioned, they +flip at 50% progress. ## The 'transition-duration' Property ## {#transition-duration-property} @@ -120,6 +118,40 @@ the reversing shortening factor. The 'transition-delay' property specifies the [=start delay=] of the transition's associated [=animation effect=]. +## The 'transition-behavior' Property ## {#transition-behavior-property} + +The 'transition-behavior' property specifies whether transitions will be +started or not for discrete properties. + +
+  Name: transition-behavior
+  Value: <>#
+  Initial: normal
+  Applies to: All elements
+  Inherited: no
+  Percentages: N/A
+  Computed value: as specified
+  Canonical order: per grammar
+  Animation type: not animatable
+
+ +The syntax for specifying 'transition-behavior' is as follows: + +
<> = normal | allow-discrete + +When ''transition-behavior-value/normal'' is specified, transitions will not be +started for discrete properties, only for interpolable properties. When +''allow-discrete'' is specified, transitions will be started for discrete +properties as well as interpolable properties. + +## The 'transition' Shorthand Property ## {#transition-shorthand-property} + +The syntax for specifying an item in the 'transition' shorthand is as follows: + +
+ <single-transition> = [ ''transition-property/none'' | <> ] || <
+ # Starting of transitions # {#starting}