- From: David A via GitHub <noreply@w3.org>
- Date: Thu, 07 Aug 2025 20:32:50 +0000
- To: public-css-archive@w3.org
DavMila has just created a new issue for https://github.com/w3c/csswg-drafts: == [css-animations-2] animation-trigger Name Clash Resolution == The current direction of #12336 is that animations are associated with triggers via names (dashed idents). I’m filing this issue so that we can resolve on 2 questions: 1. How should name clashes between elements be resolved? For example: ``` #source1 { event-trigger-name: --trigger; } #source2 { event-trigger-name: --trigger; } #target { animation-trigger: --trigger; } ``` Should #target get the trigger on #source1 or on #source2? In theory we could specify that the above CSS attaches 2 triggers to #target’s animation. However, we’ve resolved in #12399 to allow only a single trigger per animation to start. As such, #target needs to pick one trigger. Some precedents: - The anchor position pattern: among elements with the same anchor-name, [the last in tree-order is selected](https://drafts.csswg.org/css-anchor-position/#:~:text=Return%20the%20last%20element%20el%20in%20tree%20order). - The timeline-scope pattern: where multiple timelines have the same name within a particular scope, that name is considered to [refer to an inactive timeline](https://drafts.csswg.org/scroll-animations-1/#:~:text=declares%20an%20inactive%20timeline). I think the timeline-scope approach is perhaps limiting so I propose we go with the anchor-name pattern. This would mean that, for example, a bunch of buttons which declare triggers of the same name, only the last one in tree order will be attached to elements declaring animation-trigger of that name. However this problem will be solved when we introduce a trigger-scope property which limits visibility of trigger names similar to [anchor-scope](https://drafts.csswg.org/css-anchor-position-1/#anchor-scope). I can also see the timeline-scope approach being desirable so I’m completely happy to go that way too. 2. How should name clashes between timeline-trigger and event-trigger be resolved? ``` #source { event-trigger: --trigger; timeline-trigger: --trigger; } #target { animation: ...; animation-trigger: --trigger; } ``` Does #target’s animation get an EventTrigger or a TimelineTrigger? I propose timeline-trigger take precedence over event-trigger because because we can think of a TimelineTrigger as a special case of an EventTrigger which has not just a "primary" (i.e. "start") class of events (enter) but also a "secondary" (i.e. "end") class of events (exit), whereas regular EventTriggers simply have "primary" events, e.g. "click", "keypress", "mouseleave", etc, with which they associate with a specified action. So timeline-trigger should take precedence when both are present and clash on name. Ultimately it’s a bit of an arbitrary decision but it seems like behavior that should be defined. And I think whichever way we go is fine since this is probably a weird edge case anyway. Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/12581 using your GitHub account -- Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Thursday, 7 August 2025 20:32:52 UTC