Ich habe ein label mit “for="the pointer to the checkbox input"„Und solange ich weiß, das for kann nur für hinzugefügt werden label. Daher muss ich innerhalb von hinzufügen label a <button>(Ich brauche es), aber das Klickereignis funktioniert nicht richtig – es aktiviert das Kontrollkästchen nicht for zeigt auf.
Was sind die Möglichkeiten, die ich hier verwenden kann, wenn ich platzieren muss <button> innerhalb der label, nur mit html+css codieren?
Die eigentliche Frage ist also, wie kann ich das Kontrollkästchen umschalten, indem ich auf die Schaltfläche klicke? Ich kenne keine Nicht-JS-Antwort auf diese Frage. Vermutlich funktioniert es nicht, weil der Button den Klick für sich erfasst und gar nicht an das Label weitergibt. Ich frage mich allerdings, warum du das überhaupt willst. Es klingt für mich nach einer sehr verwirrenden UX. Wenn Sie fortfahren möchten, können Sie erwägen, ein Element so zu gestalten, dass es wie eine Schaltfläche aussieht.
– GolezTrol
28. Mai 2016 um 22:43 Uhr
Ja, ich habe nur versucht, so viele Informationen wie möglich zu geben
– Nikoletta
28. Mai 2016 um 22:44 Uhr
Geben Sie bitte Ihren Code an und warum Sie einen haben müssenlabel Verpackung a button ?
– Dippas
28. Mai 2016 um 22:48 Uhr
Kannst du nicht <label onclick="function()" style="cursor:pointer"> ?
– Randy
28. Mai 2016 um 22:56 Uhr
Mein Code wird hier nicht benötigt. Ich werde Eingaben mit Beschriftung und Schaltfläche posten, wenn Sie möchten, aber ich denke, es ist nutzlos.
– Nikoletta
28. Mai 2016 um 22:57 Uhr
Es stellt sich heraus, dass Sie eine machen können <button> einen Eingang bedienen, aber nur wenn Sie den setzen <label>Innerhalb das <button>.
<button type="button">
<label for="my-checkbox">Button go outside the label</label>
</button>
<input type="checkbox" id="my-checkbox">
Obwohl dies gegen die W3C-Spezifikationen verstößt:
Das Problem dabei ist, wenn Sie auf die Schaltfläche und nicht auf den Text klicken, löst die Beschriftung den Klick nicht aus.
– escarello
27. Dezember 2017 um 16:45 Uhr
Ich denke, wenn Sie in der Welt des Klebens von Etiketten in Schaltflächen sind, sollten Sie darauf vorbereitet sein, etwas CSS zu benötigen;)
– Sinetheta
28. Dezember 2017 um 23:38 Uhr
Dies funktioniert nicht mit der Tastatur – das Drücken der Taste bewirkt nichts.
– Actimel
22. Juli 2019 um 9:46 Uhr
@epascarello Hier geht es nur um den Auslösebereich des Labels. Sie können zum Beispiel den Button {position: relative;} und ein Pseudoelement für das Label wie label::after { content: ”; Position: absolut; Breite: 100 %; Höhe: 100 %; } um diesen Bereich zu erweitern.
– Sebilasse
17. April 2021 um 12:09 Uhr
Nikk Wong
Sie können dies tun:
<label>
<button></button>
</label>
CSS
label {
cursor: pointer; // not necessary but probably a good idea.
display: block; // depending on your structure.
}
button {
pointer-events: none;
}
Das display: block on label ist nur erforderlich, damit der Begrenzungsrahmen des Labels seine untergeordneten Elemente (in diesem Fall die Schaltfläche) vollständig einschließt.
Sie können ein transparentes Pseudoelement verwenden, das das Kontrollkästchen und die Schaltfläche selbst überlagert, die Mausereignisse abfängt.
Ich weiß, was du meinst, Kumpel, auch wenn dein Code ein bisschen falsch ist, aber ich habe über diese Idee nachgedacht. Es ist kein guter, ich brauche den <button> angeklickt werden.
– Nikoletta
28. Mai 2016 um 23:05 Uhr
Ich glaube nicht, dass das möglich ist, was Sie dann versuchen. Damit zwei Ereignisse bei einem einzigen Klick ausgelöst werden (das Label-Klick-Ereignis und das Schaltflächen-Klick-Ereignis). Es ist eines von beidem. In diesem Fall müssen Sie Javascript verwenden.
– eboye
28. Mai 2016 um 23:07 Uhr
HTML:
<label for="whatev"
onclick="onClickHandler">
<button>Imma button, I prevent things</button>
</label>
Target ist das Klickziel, currentTarget ist in diesem Fall das Label.
Ohne die if-Anweisung wird das Ereignis zweimal ausgelöst, wenn außerhalb des Ereignisverhinderungsbereichs geklickt wird.
Nicht browserübergreifend getestet.
Die beste Lösung ist, Stil ist wie ein Knopf.
Wenn Sie ein CSS-Framework wie Bootstrap verwenden, können Sie den Label-Klassen wie btn und btn-default zuweisen. Dadurch wird es wie ein Knopf gestaltet. Möglicherweise müssen Sie die CSS-Eigenschaft der Zeilenhöhe manuell wie folgt anpassen:
label.btn {
line-height: 1.75em;
}
Um dann die On-Click-Stile als Schaltfläche zu erhalten, fügen Sie diese Stile hinzu:
Dies nimmt die überprüfte Eingabe und gibt das nächste Label-Element im Dom aus, das die Stile der Klasse btn, bootstrap btn-default button clicked hat. Passen Sie die Farben an, wie es passt.
Die eigentliche Frage ist also, wie kann ich das Kontrollkästchen umschalten, indem ich auf die Schaltfläche klicke? Ich kenne keine Nicht-JS-Antwort auf diese Frage. Vermutlich funktioniert es nicht, weil der Button den Klick für sich erfasst und gar nicht an das Label weitergibt. Ich frage mich allerdings, warum du das überhaupt willst. Es klingt für mich nach einer sehr verwirrenden UX. Wenn Sie fortfahren möchten, können Sie erwägen, ein Element so zu gestalten, dass es wie eine Schaltfläche aussieht.
– GolezTrol
28. Mai 2016 um 22:43 Uhr
Ja, ich habe nur versucht, so viele Informationen wie möglich zu geben
– Nikoletta
28. Mai 2016 um 22:44 Uhr
Geben Sie bitte Ihren Code an und warum Sie einen haben müssen
label
Verpackung abutton
?– Dippas
28. Mai 2016 um 22:48 Uhr
Kannst du nicht
<label onclick="function()" style="cursor:pointer">
?– Randy
28. Mai 2016 um 22:56 Uhr
Mein Code wird hier nicht benötigt. Ich werde Eingaben mit Beschriftung und Schaltfläche posten, wenn Sie möchten, aber ich denke, es ist nutzlos.
– Nikoletta
28. Mai 2016 um 22:57 Uhr