/// <summary> /// Computes the cascaded style, i.e. resolves the cascade by ordering after specifity. /// Two rules with the same specifity are ordered according to their appearance. The more /// recent declaration wins. Inheritance is not taken into account. /// </summary> /// <param name="styleCollection">The style rules to apply.</param> /// <param name="element">The element to compute the cascade for.</param> /// <returns>Returns the cascaded read-only style declaration.</returns> public static ICssStyleDeclaration ComputeCascadedStyle(this StyleCollection styleCollection, IElement element) { var computedStyle = new CssStyleDeclaration(element.Owner?.Context); var rules = styleCollection.SortBySpecificity(element); foreach (var rule in rules) { var inlineStyle = rule.Style; computedStyle.SetDeclarations(inlineStyle); } if (element is IHtmlElement || element is ISvgElement) { computedStyle.SetDeclarations(element.GetStyle()); } return(computedStyle); }