Skip to content

[css-variables] Define handling for 'display' to avoid infinite cycles #501

@birtles

Description

@birtles

We define special tainting behavior to avoid cycles with animation properties but we have a similar issue for the 'display' property.

:root {
  --foo: block
}
div {
  display: var(--foo);
  animation: change-foo 100s;
}
@keyframes change-foo {
  to, from { --foo: none; }
}

In this case, we start off with a <div> with display: block, run the animation which sets --foo to none so the <div> ends up with display: none. As a result we cancel the animation in <div>. Since we cancelled the animation, --foo goes back to block, and hence the animation restarts. And so on.

(For what it's worth, this is the reason why display is considered non-animatable for at least CSS animations and CSS transitions. As a result, the corresponding spec text might not necessarily need to refer to display specifically but rather all non-animatable properties.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions