Hallo Barksalot,
die Frage ist, wie bekomme ich deine Funktion in meine rein?
Ich zitiere den Uni-Prof, den ich nie hatte:
Das wird als einfache Übung dem Leser überlassen.
Mein Fiddle hat 2 Bestandteile: Die Visualisierung des Ajax-Calls, und die Simulation des Ajax-Calls durch setTimeout. Die Simulation ist für Dich irrelevant, da musst Du den echten Call einsetzen.
Die Visualisierung solltest Du Dir zu erschließen versuchen. Da ist ein bisschen CSS Selektor Hexenwerk drin; letztlich erfolgt die Umschaltung zwischen Checkbox und Platzhalter durch das Setzen und Entfernen der busy Klasse:
label input[name=erledigt].busy, label input[name=erledigt]:not(.busy)+span {
display:none;
}
Je nachdem, ob .busy an dem Element mit name=erledigt gesetzt ist (der Checkbox), wird die Checkbox oder der darauf folgende span ausgeblendet (siehe Self-Wiki, Nachbarselektor). Diesen Selektor musst Du natürlich an dein Markup anpassen.
Die Animation erfolgt mit dem Unicode-Zeichen ◠, dem eine 360-Grad Rotation zugeordnet wird. Dieses Zeichen ist zumindest in meinem Font sehr schön platziert, so dass die Rotation nicht eiert. Das CSS dazu sieht so aus:
label input[name=erledigt].busy+span {
animation: rotate 1s linear 0s infinite;
}
@keyframes rotate {
from { transform: rotate(0deg); } to { transform: rotate(359deg) }
}
Ich habe dem Selektor hier im Forum noch ein .busy hinzugefügt. Ob das der Performance nützt, weiß ich nicht, aber jedenfalls wird die Animation dann nur wirksam wenn der span auch sichtbar ist.
Checkbox und Span habe ich gezielt auf gleiche Breite gezwungen und über die line-height des Label auch dafür gesorgt, dass die Zeilenhöhe festliegt. Ansonsten verschiebt sich bei mir der Text, wenn umgeschaltet wird. Aus dem gleichen Grund ist auch das font:inherit drin, weil sonst Checkbox und Platzhalter nicht gleich breit sind (Checkbox hat unter Chrome einen eigenen Font zugeordnet und ich wollte nicht mit Pixel arbeiten).
Rolf
--
sumpsi - posui - clusi