Was ist ein guter Weg, um die unglückliche Tatsache zu überwinden, dass dieser Code nicht wie gewünscht funktioniert:
<div class="required">
<label>Name:</label>
<input type="text">
</div>
<style>
.required input:after { content:"*"; }
</style>
In einer perfekten Welt würden alle erforderlichen input
s das kleine Sternchen erhalten, das angibt, dass das Feld erforderlich ist. Diese Lösung ist unmöglich, da das CSS nach dem Elementinhalt eingefügt wird, nicht nach dem Element selbst, sondern so etwas wie ideal. Auf einer Site mit Tausenden von erforderlichen Feldern kann ich das Sternchen vor der Eingabe mit einer Änderung in eine Zeile ( :after
nach :before
) oder an das Ende des Etiketts ( .required label:after
) oder vor das Etikett oder nach verschieben eine Position auf der enthaltenen Box, etc ...
Dies ist nicht nur wichtig, wenn ich es mir anders überlege, wo das Sternchen überall platziert werden soll, sondern auch in ungeraden Fällen, in denen das Formularlayout das Sternchen nicht an der Standardposition zulässt. Es funktioniert auch gut mit der Validierung, die das Formular überprüft oder nicht ordnungsgemäß ausgefüllte Steuerelemente hervorhebt.
Schließlich werden keine zusätzlichen Markups hinzugefügt.
Gibt es gute Lösungen, die alle oder die meisten Vorteile des unmöglichen Codes bieten?
quelle
required
<input...
Antworten:
Hast du das gedacht?
http://jsfiddle.net/erqrN/1/
Code-Snippet anzeigen
Siehe https://developer.mozilla.org/en-US/docs/Web/CSS/pseudo-elements
quelle
*
aber es würde bedeuten, dass ich den Abstand für jede Länge der Formulareingabe manuell eingeben müsste und keine flexiblen Eingaben haben könnte.Spielen Sie mit Ihrer genauen Struktur: http://jsfiddle.net/bQ859/
quelle
Obwohl dies die akzeptierte Antwort ist, ignorieren Sie mich bitte und verwenden Sie die
:after
unten vorgeschlagene Syntax. Meine Lösung ist nicht zugänglich.Ein ähnliches Ergebnis könnte erzielt werden, indem ein Hintergrundbild eines Sternchenbildes verwendet und der Hintergrund des Etiketts / der Eingabe / des äußeren Divs und ein Auffüllen der Größe des Sternchenbildes festgelegt werden. Etwas wie das:
Dadurch wird das Sternchen IN das Textfeld eingefügt, aber das Anbringen des gleichen
div.required
anstelle von.required input
wird wahrscheinlich mehr das sein, wonach Sie suchen, wenn auch etwas weniger elegant.Diese Methode erfordert keine zusätzliche Eingabe.
quelle
Um es genau in die Eingabe zu setzen, wie es auf dem folgenden Bild gezeigt wird:
Ich habe folgenden Ansatz gefunden:
Die Site, an der ich arbeite, ist mit einem festen Layout codiert, daher war es für mich in Ordnung.
Ich bin mir nicht sicher, ob es gut für flüssiges Design ist.
quelle
Schreiben Sie in CSS
und HTML
quelle
<label class="control-label">...</label>
. Aber es macht den Job (Y)quelle
radial-gradient
Begriffebackground-image
? Ich kann diese Syntax nicht dazu bringen, mit developer.mozilla.org/en-US/docs/Web/CSS/radial-gradient zu heiraten, funktioniert jedoch korrekt, wenn ich es versuche.Das Bild hat rechts einen Abstand von 20 Pixel, um sich nicht mit dem Dropdown-Pfeil zu überlappen
Und es sieht so aus:
quelle
Verwenden Sie jQuery und CSS
quelle
Ich denke, das ist der effiziente Weg, warum so viel Kopfschmerzen
quelle
Es ist 2019 und frühere Antworten auf dieses Problem werden nicht verwendet
Das CSS-Raster ist die Möglichkeit, Formulare im Jahr 2019 zu erstellen, da Ihre Beschriftungen Ihren Eingaben vorausgehen können, ohne dass zusätzliche Divs, Bereiche, Bereiche mit Sternchen und andere Relikte vorhanden sind.
Hier ist, wohin wir mit minimalem CSS gehen:
Der HTML-Code für die oben genannten:
Platzhaltertext kann ebenfalls hinzugefügt werden und wird dringend empfohlen. (Ich beantworte nur diese Zwischenform).
Nun zu den CSS-Variablen:
Das CSS für die Formularelemente:
Das Formular selbst sollte sich im CSS-Raster befinden:
Die Werte für die Spalten können auf
1fr auto
oder1fr
mit<p>
Tags festgelegt werden, die auf 1 / -1 festgelegt sind. Sie ändern die Variablen in Ihren Medienabfragen so, dass die Eingabefelder auf Mobilgeräten und wie oben auf dem Desktop in voller Breite angezeigt werden. Sie können Ihre Rasterlücke auch auf Mobilgeräten ändern, wenn Sie dies mit dem CSS-Variablenansatz wünschen.Wenn die Kästchen gültig sind, sollten Sie anstelle des Sterns ein grünes Häkchen erhalten.
Die SVG in CSS ist eine Möglichkeit, den Browser vor einem Roundtrip zum Server zu bewahren, um ein Bild des Sternchens zu erhalten. Auf diese Weise können Sie die Sternchen fein einstellen. Die Beispiele hier befinden sich in einem ungewöhnlichen Winkel. Sie können dies herausarbeiten, da das SVG-Symbol oben vollständig lesbar ist. Das Ansichtsfeld kann auch geändert werden, um das Sternchen über oder unter der Mitte zu platzieren.
quelle
quelle
In diesem Beispiel wird ein Sternchen vor eine Beschriftung gesetzt, um diese bestimmte Eingabe als erforderliches Feld zu kennzeichnen. Ich habe die CSS-Eigenschaften mit% und em festgelegt, um sicherzustellen, dass meine Webseite reagiert. Sie können px oder andere absolute Einheiten verwenden, wenn Sie möchten.
quelle
Was Sie brauchen, ist: Erforderlicher Selektor - Er wählt alle Felder mit dem Attribut 'Erforderlich' aus (daher müssen keine zusätzlichen Klassen hinzugefügt werden). Dann - Stil Eingaben nach Ihren Bedürfnissen. Sie können den Selektor ': after' verwenden und ein Sternchen hinzufügen, wie unter anderen Antworten vorgeschlagen
quelle
Sie können das gewünschte Ergebnis erzielen, indem Sie den HTML-Code in ein div-Tag einkapseln, das die Klasse "required" gefolgt von der Klasse "form-group" enthält. * Dies funktioniert jedoch nur, wenn Sie über Bootstrap verfügen.
quelle
Für diejenigen, die hier landen, aber jQuery haben:
quelle