Angenommen, ich habe ein HTML-Snippet wie dieses:
<div style="width:300px;">
<label for="MyInput">label text</label>
<input type="text" id="MyInput" />
</div>
Dies ist nicht mein genauer Code, aber das Wichtigste ist, dass in einem Container mit fester Breite eine Beschriftung und eine Texteingabe in derselben Zeile vorhanden sind. Wie kann ich die Eingabe so gestalten, dass sie die verbleibende Breite des Behälters ausfüllt, ohne sie einzuwickeln und ohne die Größe des Etiketts zu kennen?
Antworten:
So sehr jeder Tabellen für das Layout hasst, helfen sie bei solchen Dingen, entweder mit expliziten Tabellen-Tags oder mit display: table-cell
quelle
Hier ist eine einfache und saubere Lösung ohne Verwendung von JavaScript- oder Tabellenlayout-Hacks. Es ähnelt dieser Antwort: Geben Sie Text automatisch ein, indem Sie die Breite 100% mit anderen schwebenden Elementen füllen
Es ist wichtig, das Eingabefeld mit einer Spanne zu versehen
display:block
. Als nächstes muss die Schaltfläche an erster Stelle stehen und das Eingabefeld an zweiter Stelle.Dann können Sie die Schaltfläche nach rechts bewegen und das Eingabefeld füllt den verbleibenden Raum aus.
Eine einfache Geige: http://jsfiddle.net/v7YTT/90/
Update 1: Wenn Ihre Website nur auf moderne Browser ausgerichtet ist, empfehle ich die Verwendung flexibler Boxen . Hier sehen Sie die aktuelle Unterstützung .
Update 2: Dies funktioniert sogar mit mehreren Schaltflächen oder anderen Elementen, die mit dem Eingabefeld vollständig geteilt werden. Hier ist ein Beispiel .
quelle
Ich schlage vor, Flexbox zu verwenden:
Stellen Sie jedoch sicher, dass Sie die richtigen Herstellerpräfixe hinzufügen!
quelle
label
? Mich würde besonders interessieren, wie der HTML-Code aus der ursprünglichen Frage mitborder-box
...flex: 2
und nichtflex: 1
?Bitte benutzen Sie dazu die Flexbox. Sie haben einen Container, der seine Kinder in eine Reihe biegt. Das erste Kind nimmt seinen Platz nach Bedarf ein. Der zweite biegt sich, um den gesamten verbleibenden Platz einzunehmen:
quelle
row
standardmäßig, Sie müssen sie nicht angeben.Der einfachste Weg, dies zu erreichen, wäre:
CSS:
HTML:
Sieht aus wie: http://jsfiddle.net/JwfRX/
quelle
Sehr einfacher Trick ist die Verwendung einer
CSS calc
Formel. Alle modernen Browser, IE9, eine breite Palette von mobilen Browsern sollten dies unterstützen.quelle
Sie können dies versuchen:
quelle
Wenn Sie Bootstrap 4 verwenden:
Besser noch, verwenden Sie das, was in Bootstrap integriert ist:
https://jsfiddle.net/nap1ykbr/
quelle