Start · Sprachen · JavaScript · Referenz · CSSKeyframesRule.name

CSSKeyframesRule.name

Eigenschaft

Liest oder setzt den Namen einer <code>@keyframes</code>-Regel, also den Bezeichner, auf den sich <code>animation-name</code> bezieht.

seit JavaScript Baseline: alle modernen Browser Kategorie: webapi

Signatur

CSSKeyframesRule.name

Beschreibung

Die Eigenschaft name der Schnittstelle CSSKeyframesRule enthält den Namen einer @keyframes-At-Regel. Genau diesen Bezeichner verwendet die CSS-Eigenschaft animation-name (bzw. die Kurzschreibweise animation), um eine Animation mit einem Element zu verknüpfen.

Die Eigenschaft ist lesbar und schreibbar. Beim Lesen findest du damit gezielt bestimmte Keyframe-Regeln in einem Stylesheet, etwa um einzelne Schritte per appendRule(), deleteRule() oder findRule() anzupassen. Setzt du einen neuen Namen, wird die Regel sofort umbenannt. Elemente, die noch auf den alten Namen verweisen, verlieren ihre Animation. Elemente, die bereits den neuen Namen verwenden, werden dagegen animiert.

Typische Anwendungsfälle sind Werkzeuge, die Stylesheets untersuchen (Debugging, Style-Editoren), dynamisch erzeugte Animationen sowie das Umbenennen von Keyframes, um Namenskonflikte zwischen Komponenten zu vermeiden.

Parameter

Name Typ Default Beschreibung
$value string Nur beim Setzen: der neue Animationsname als CSS-Bezeichner (z. B. "einblenden").

Rückgabewert

Typ
string
Beschreibung
Der aktuelle Name der @keyframes-Regel als Zeichenkette, ohne Anführungszeichen.

Beispiele

Alle @keyframes-Namen eines Dokuments auflisten

// Sammelt die Namen aller Keyframe-Regeln aus gleich-origin-Stylesheets
const keyframeNames = [];

for (const sheet of document.styleSheets) {
  let rules;
  try {
    rules = sheet.cssRules; // wirft bei fremden Origins einen SecurityError
  } catch {
    continue;
  }
  for (const rule of rules) {
    if (rule instanceof CSSKeyframesRule) {
      keyframeNames.push(rule.name);
    }
  }
}

console.log(keyframeNames);
["einblenden", "pulsieren"]

Keyframe-Regel dynamisch anlegen und per Name finden

const style = document.createElement('style');
document.head.append(style);
const sheet = style.sheet;

sheet.insertRule(`@keyframes wackeln {
  0%   { transform: rotate(0deg); }
  50%  { transform: rotate(5deg); }
  100% { transform: rotate(0deg); }
}`, 0);

const findKeyframes = (name) =>
  [...sheet.cssRules].find(
    (r) => r instanceof CSSKeyframesRule && r.name === name
  );

const rule = findKeyframes('wackeln');
console.log(rule.name, rule.length);
wackeln 3

Animation durch Umbenennen umschalten

// CSS: @keyframes aus { ... }   .box { animation: aktiv 1s infinite; }
const rule = [...document.styleSheets[0].cssRules]
  .find((r) => r instanceof CSSKeyframesRule && r.name === 'aus');

const box = document.querySelector('.box');

// Durch Umbenennen startet die Animation auf .box
rule.name = 'aktiv';
console.log(rule.name);
console.log(getComputedStyle(box).animationName);
aktiv aktiv

// Wichtig · Fallstricke

  • Zugriff über fremde Origins: Die Regeln eines Stylesheets von einer anderen Domain ohne passende CORS-Header kannst du nicht lesen. sheet.cssRules wirft dann einen SecurityError. Umschließe den Zugriff deshalb mit try…catch.
  • Gleiche Namen: Gibt es mehrere @keyframes mit demselben Namen, gilt die zuletzt definierte Regel. Wenn du eine Regel umbenennst, kann sich deshalb ändern, welche Regel tatsächlich wirkt.
  • Anführungszeichen: Namen dürfen in CSS als Zeichenkette notiert werden (@keyframes "mein name"). name liefert den Wert ohne Anführungszeichen. Das Serialisieren über cssText kann je nach Browser anders aussehen.
  • Laufende Animationen: Beim Umbenennen wird die Animation neu zugeordnet. Bei betroffenen Elementen kann sie abbrechen oder neu starten.
  • Kompatibilität: Wird von allen modernen Browsern unterstützt. Sehr alte WebKit-Versionen nutzten WebKitCSSKeyframesRule bzw. @-webkit-keyframes.
  • Die Kurzbeschreibung bei MDN nennt „CSSKeyframeRule“. Gemeint ist aber CSSKeyframesRule (Plural), also die Regel für den gesamten @keyframes-Block. CSSKeyframeRule steht nur für einen einzelnen Schritt und hat keine name-Eigenschaft.