Unterschiedliche Zustände (Text und Symbol) für nicht akzeptierte und akzeptierte Antworten

Wenn der Hilfetext in etwas Aktiveres geändert wird (z. B. „Als Lösung markieren“ statt „Lösung“), habe ich kürzlich festgestellt, dass sowohl nicht akzeptierte als auch akzeptierte Antworten denselben Hilfetext und damit auch dasselbe Symbol verwenden. Ich habe mich gefragt, ob es möglich wäre, separate Zustände für Antworten zu haben, die noch nicht akzeptiert wurden, und für Antworten, die als Lösung markiert sind, wie hier:

Schaltflächenzustand, wenn eine Antwort nicht ausgewählt wurde:

Schaltflächenzustand bei einer akzeptierten Antwort, nachdem sie ausgewählt wurde.

Ich denke, die Benutzer könnten davon profitieren, Hilfetexte zu sehen, die eine Aktion vorschlagen, anstatt des Standardtextes „Lösung“. Wenn eine Antwort ausgewählt wird, wäre es hilfreich, eine klare Rückmeldung als Ergebnis ihrer Auswahl zu sehen.

Zusätzlich könnten kontextbezogene Hover-Zustände hilfreich sein, um zu verstehen, was die Schaltfläche tun wird, anstatt sich auf das Alt-Attribut des Browsers zu verlassen. Siehe Beispiele unten.

Akzeptieren einer Lösung:
Accept Solution Hover and Selection demo

Entfernen einer zuvor ausgewählten Antwort:
Deselect Solution Hover and Selection demo

Gibt es Pläne, solche Interaktionen zu implementieren?

2 „Gefällt mir“

Ich füge eine CSS-Lösung hinzu, falls diese hilfreich ist.

Mit Pseudo-Elementen kann zumindest das Verhalten des Textteils nachgeahmt werden:

CleanShot 2023-12-08 at 18.56.34

Dieser Code ist semantisch etwas verschachtelt, aber er funktioniert. Die Textausrichtung müsste geändert oder die Breite des Buttons angepasst werden, damit das Ziel beim Überfahren mit der Maus nicht springt.

css
nav.post-controls .actions button {
    &:after {
        margin-left: 0.5em;
    }
    
    &.unaccepted {
        &:after {
            content: "Als Lösung markieren";
        }
        &:hover {
            &:after {
                content: "Lösung auswählen";
            }
        }
        
    }
    
    &.accepted {
        &, .d-icon {
            color: var(--tertiary);
        }
        &:after {
            content: "Ausgewählte Lösung"; 
        }
        &:hover {
            &, .d-icon {
                color: var(--primary);
            }
            &:after {
                content: "Lösung abwählen";
            }
        }
    }
}

Es ist auch möglich, dies zu tun, was zum Text „Auswählen, wenn diese Antwort das Problem löst“ führen würde, der zu lang ist, aber Sprachübersetzungen respektieren sollte.

&:after {
    content: attr(title);
}

Idealerweise würde ich das eigentliche HTML ändern, um Übersetzungen zu unterstützen, anstatt Pseudo-Elemente zu verwenden.
Außer dem Titel-Attribut (wenn es kürzer wäre) kann es besser sein als ein JS-Hover-Listener.

3 „Gefällt mir“

Hallo @tynaut,

ich teste diese Lösung und habe eine Frage. Wenn man der ursprüngliche Poster ist, wird ein zusätzliches Button-Label an das DOM gesendet:
Als Lösung markieren, was zu einer Duplizierung mit dieser Lösung führt. Haben Sie Vorschläge, wie ich damit umgehen kann? Soll ich das Button-Label einfach in CSS ausblenden?

Vielen Dank!

Hallo @tynaut,

Mir ist auch aufgefallen, dass es keine einfache Möglichkeit gibt, die Schaltflächen linksbündig auszurichten, damit sie beim Überfahren mit der Maus nicht springen. Die einzige Lösung, die ich gefunden habe, ist das Hinzufügen einer Breite zur Schaltfläche, was wahrscheinlich weniger ideal ist, da es sich nicht um ein Element mit fester Breite handelt. Haben Sie vielleicht noch andere Vorschläge dazu?

Es ist am besten, beide Maßnahmen zu kombinieren, da die Schaltfläche unendlich springt, wenn der Cursor am Ende eines nicht fixierten Elements bleibt, wenn sich der Text ändert.

nav.post-controls {
    .actions {
        width: 100%;
        .extra-buttons {
            margin-right: auto; // passt die Schaltfläche nach links an
            .widget-button {
                width: 200px; // auf einen Wert setzen, der den maximalen Text abdeckt
            }
        }
    }
}

CleanShot 2023-12-14 at 10.51.55

Sie könnten die Hover-Hintergrundfarbe ausblenden und einen anderen Ansatz verwenden, um den Hover anzuzeigen, wenn gewünscht.

DOM-Text kann auf font-size: 0; gesetzt werden.

Und die Pseudoelemente (und die .d-icon-Klasse) müssten ihre Schriftgrößen angegeben bekommen, da sie Kinder sind, die diese Eigenschaft erben werden.

Hallo @tynaut, danke für deine Hilfe und deinen Beitrag.
Gibt es eine Möglichkeit, die \u003cuse href\u003e-Eigenschaft zu ändern, um das Symbol für die verschiedenen Zustände (ausgewählte Antwort, beim Überfahren mit der Maus usw.) zu ändern?