Konfiguration & Public API (Version –)

1. JSON-Block im <head>

<script id="ntg-ai-img-config" type="application/json"> – wird beim Start eingelesen und über die Defaults gelegt.

–

2. Programmatisch: init(opts)

Überschreibt den JSON-Block (Defaults → JSON-Block → init).

Bereit.

Hinweis: Bereits gerenderte Badges werden von init() nicht neu gezeichnet (Dedupe). „Anwenden" ruft daher destroy() und anschließend init(opts) auf.

Icon: Der Default ist ohne Icon – die Testseite schaltet es über den JSON-Block ein. Feld leeren und „Anwenden" zeigt den Default.

3. getConfig()

Die aktuelle, zusammengefĂĽhrte Konfiguration.

–

Elementtypen (Wrapper-Pfad vs. Kind-Pfad)

KI-generiertes Bild
<img>Wrapper
KI-generiertes Bild
<picture>Wrapper
<div> + BackgroundKind
<video> im ContainerKind

<img>/<picture> werden in <span class="ntg-ai-img-wrap"> gehüllt, das Badge liegt als Overlay daneben. Bei allen anderen Elementen wird das Badge als Kind eingehängt (position und isolation werden nur gesetzt, wenn nötig – und in destroy() zurückgenommen).

Badge-Text pro Bild (Option texts + Text-SchlĂĽssel)

KI-generiert
ohne Wert → default
Mit KI bearbeitet
data-ntg-ai-img="edited"
Hintergrund mit KI geändert
data-ntg-ai-img="background"
Foto mit KI erweitert
photo – aus dem JSON-Block
KI-Illustration
illustration – aus dem JSON-Block
Unbekannter SchlĂĽssel
unbekannter Schlüssel → default

photo und illustration stammen aus dem JSON-Block: texts wird mit den Defaults zusammengeführt, nicht ersetzt – default, edited und background bleiben also erhalten. Ein unbekannter Schlüssel fällt auf default zurück und meldet eine console.warn-Warnung.

Eigener selector ([data-ntg-ai-img], .ai-image)

KI-generiert
nur Klasse, kein Attribut
Mit KI bearbeitet
Klasse + data-ntg-ai-img="edited"

Der Text-Schlüssel steckt im Wert von data-ntg-ai-img: Elemente, die nur über den eigenen selector matchen und kein Marker-Attribut tragen, bekommen immer default. Wer einen anderen Text braucht, setzt zusätzlich data-ntg-ai-img="schlüssel". Der Attribut-Observer reagiert nur auf data-ntg-ai-img; bei nachträglich gesetzten Klassen ist refresh() nötig.

Mindestgröße (minWidth/minHeight = 120, der Default)

Icon 40 Icon 64 Icon 100 Icon 120 Icon 200 → erst ab 120×120 erscheint ein Badge, darunter passt er nicht auf das Bild.

Gemessen wird die gerenderte Größe (Fallback: intrinsische Bildgröße). Das 600×400-Bild unten ist per CSS auf 60px verkleinert und gilt deshalb als „klein":

Thumbnail → groß gespeichert, klein dargestellt → kein Badge.

Option ignore (.no-badge, #ignored-region)

X
Vorfahre .no-badge
Y
Vorfahre .no-badge
Z
Vorfahre #ignored-region

Getroffen wird das Element selbst oder ein Vorfahre (closest()).

Anpassung per CSS-Variablen

Die Klassen custom-vars-* gehören nicht zur Library – sie stehen beispielhaft für das CSS des eigenen Projekts. Dort werden die --ntg-ai-img-*-Variablen gesetzt, auf :root oder auf einem beliebigen Vorfahren des Bildes:

/* eigenes Projekt-CSS */
.custom-vars-pill {
  --ntg-ai-img-bg-light: #6d28d9;
  --ntg-ai-img-color-light: #ffffff;
  --ntg-ai-img-radius: 999px;
  --ntg-ai-img-padding: 0.3rem 0.7rem;
}
KI-generiert
--radius, --padding, --bg/color-light
KI-generiert
--font-size, --gap, --offset
KI-generiert
--bg-dark, --color-dark (Dark Mode)
KI-generiert
Seiten-Overlay
--z-index: 999

Die letzte Karte zeigt die Isolation: Das Badge hat --ntg-ai-img-z-index: 999 und liegt trotzdem unter dem Overlay der Seite, weil der Wrapper einen eigenen Stacking-Context bildet. Der z-index wirkt also nur innerhalb des Bild-Containers.

Hero

Hero, KI-generiert

Slider (CSS Scroll-Snap)

Slide 1
Slide 2
Slide 3
Slide 4
Slide 5

Produktliste

Produkt A
Produkt A19,99 €
Produkt B
Produkt B24,99 €
Produkt C
Produkt C12,49 €
Produkt D
Produkt D32,00 €

Produktdetail

Hauptbild

Galerie-Thumbnails (64×64) — markiert, aber < Mindestgröße → kein Badge:

Thumb 1 Thumb 2 Thumb 3 Thumb 4

Masonry

M1
M2
M3
M4
M5
M6

AJAX / dynamisch nachgeladen (MutationObserver)

Noch nicht markiert
noch ohne Marker

Der zweite Button setzt data-ntg-ai-img auf ein bestehendes Bild – der Attribut-Observer badgt es ohne weiteres Zutun.

Lazy Images (loading="lazy")

Lazy 1
Lazy 1
Lazy 2
Lazy 2
Lazy 3
Lazy 3