AngleSharp by Florian Rappl

<PackageReference Include="AngleSharp" Version="0.2.9" />

 CSSKeyframesRule

public sealed class CSSKeyframesRule : CSSRule
Represents an @keyframes rule.
using AngleSharp.Css; using System; namespace AngleSharp.DOM.Css { [DOM("CSSKeyframesRule")] public sealed class CSSKeyframesRule : CSSRule { internal const string RuleName = "keyframes"; private CSSRuleList _cssRules; private string _name; [DOM("name")] public string Name { get { return _name; } set { _name = value; } } [DOM("cssRules")] public CSSRuleList CssRules { get { return _cssRules; } } internal CSSKeyframesRule() { _cssRules = new CSSRuleList(); _type = CssRuleType.Keyframes; } [DOM("appendRule")] public CSSKeyframesRule AppendRule(string rule) { CSSKeyframeRule cSSKeyframeRule = CssParser.ParseKeyframeRule(rule, false); cSSKeyframeRule.ParentStyleSheet = _parent; cSSKeyframeRule.ParentRule = this; _cssRules.InsertAt(_cssRules.Length, cSSKeyframeRule); return this; } [DOM("deleteRule")] public CSSKeyframesRule DeleteRule(string key) { for (int i = 0; i < _cssRules.Length; i++) { if ((_cssRules[i] as CSSKeyframeRule).KeyText.Equals(key, StringComparison.OrdinalIgnoreCase)) { _cssRules.RemoveAt(i); break; } } return this; } [DOM("findRule")] public CSSKeyframeRule FindRule(string key) { for (int i = 0; i < _cssRules.Length; i++) { CSSKeyframeRule cSSKeyframeRule = _cssRules[i] as CSSKeyframeRule; if (cSSKeyframeRule.KeyText.Equals(key, StringComparison.OrdinalIgnoreCase)) return cSSKeyframeRule; } return null; } public override string ToCss() { return $"""{_name}""{Environment.NewLine}{_cssRules.ToCss()}"""; } } }