Achtung! Diese Antwort ist zu alt y Funktioniert nicht auf modernen Browsern.
Ich bin nicht der Verfasser dieser Antwort, aber zum Zeitpunkt des Verfassens dieses Artikels ist dies die Antwort mit den meisten positiven und negativen Stimmen (+1035 -17), und sie ist immer noch als akzeptierte Antwort gekennzeichnet (wahrscheinlich, weil der ursprüngliche Verfasser der Frage derjenige ist, der diese Antwort geschrieben hat).
Wie bereits mehrfach in den Kommentaren angemerkt, funktioniert diese Antwort auf den meisten Browsern nicht mehr (und scheint es seit 2013 auch nicht mehr zu tun).
Nach über einer Stunde des Tweakens, des Testens und des Ausprobierens verschiedener Auszeichnungsstile glaube ich, dass ich eine annehmbare Lösung gefunden habe. Die Anforderungen für dieses spezielle Projekt waren:
- Die Eingänge müssen auf einer eigenen Leitung liegen.
- Checkbox-Eingaben müssen in allen Browsern ähnlich (wenn nicht sogar identisch) vertikal am Beschriftungstext ausgerichtet werden.
- Wenn der Beschriftungstext umbricht, muss er eingerückt werden (also kein Umbruch nach unten unterhalb des Ankreuzfeldes).
Bevor ich eine Erklärung gebe, möchte ich Ihnen den Code nennen:
label {
display: block;
padding-left: 15px;
text-indent: -15px;
}
input {
width: 13px;
height: 13px;
padding: 0;
margin:0;
vertical-align: bottom;
position: relative;
top: -1px;
*overflow: hidden;
}
<form>
<div>
<label><input type="checkbox" /> Label text</label>
</div>
</form>
Hier ist das Arbeitsbeispiel in JSFiddle .
Dieser Code setzt voraus, dass Sie einen Reset wie den von Eric Meyer verwenden, der die Ränder und das Padding der Formulareingabe nicht überschreibt (und daher die Ränder und das Padding in das Eingabe-CSS zurücksetzt). Offensichtlich in einer Live-Umgebung werden Sie wahrscheinlich Verschachtelung / Überschreiben Zeug andere Eingabeelemente zu unterstützen, aber ich wollte die Dinge einfach zu halten.
Zu beachtende Punkte:
- Le site
*overflow
Deklaration ist ein Inline-IE-Hack (der Stern-Eigenschafts-Hack). Sowohl IE 6 als auch 7 bemerken ihn, aber Safari und Firefox ignorieren ihn. Ich denke, es könnte gültig sein CSS, aber Sie sind immer noch besser mit bedingten Kommentare; nur der Einfachheit halber verwendet es.
- Soweit ich das beurteilen kann, ist die einzige
vertical-align
Aussage, die in allen Browsern gleich war, war vertical-align: bottom
. Diese Einstellung und die anschließende relative Positionierung nach oben verhielten sich in Safari, Firefox und IE mit nur ein oder zwei Pixeln Abweichung fast identisch.
- Das Hauptproblem bei der Arbeit mit der Ausrichtung ist, dass der IE einen Haufen mysteriöser Leerzeichen um die Eingabeelemente herum platziert. Es handelt sich nicht um ein Padding oder einen Margin, und es ist verdammt hartnäckig. Die Einstellung einer Breite und Höhe für das Kontrollkästchen und dann
overflow: hidden
schneidet aus irgendeinem Grund das zusätzliche Leerzeichen ab und ermöglicht es dem IE, sich bei der Positionierung sehr ähnlich wie Safari und Firefox zu verhalten.
- Je nach der Größe Ihres Textes müssen Sie zweifellos die relative Positionierung, Breite, Höhe usw. anpassen, damit alles richtig aussieht.
Ich hoffe, das hilft noch jemandem! Ich habe diese spezielle Technik noch nicht bei anderen Projekten ausprobiert als bei dem, an dem ich heute Morgen gearbeitet habe, also meldet euch auf jeden Fall, wenn ihr etwas findet, das besser funktioniert.
Warnung! Diese Antwort ist zu alt y Funktioniert nicht auf modernen Browsern.