diff --git a/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp b/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp index e2d88a1d537..ab3a8241298 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp @@ -59,6 +59,7 @@ #include #include #include +#include #include #include #include @@ -682,6 +683,24 @@ void StyleComputer::for_each_property_expanding_shorthands(PropertyID property_i return; } + if (property_id == CSS::PropertyID::Transition) { + auto const& transitions = value.as_transition().transitions(); + Array>, 4> transition_values; + for (auto const& transition : transitions) { + transition_values[0].append(*transition.property_name); + transition_values[1].append(TimeStyleValue::create(transition.duration)); + transition_values[2].append(TimeStyleValue::create(transition.delay)); + if (transition.easing) + transition_values[3].append(*transition.easing); + } + + set_longhand_property(CSS::PropertyID::TransitionProperty, StyleValueList::create(move(transition_values[0]), StyleValueList::Separator::Comma)); + set_longhand_property(CSS::PropertyID::TransitionDuration, StyleValueList::create(move(transition_values[1]), StyleValueList::Separator::Comma)); + set_longhand_property(CSS::PropertyID::TransitionDelay, StyleValueList::create(move(transition_values[2]), StyleValueList::Separator::Comma)); + set_longhand_property(CSS::PropertyID::TransitionTimingFunction, StyleValueList::create(move(transition_values[3]), StyleValueList::Separator::Comma)); + return; + } + if (property_is_shorthand(property_id)) { // ShorthandStyleValue was handled already. // That means if we got here, that `value` must be a CSS-wide keyword, which we should apply to our longhand properties.