Bootstrap 3.0: Wie werden Text und Eingabe in derselben Zeile angezeigt?

89

Ich stelle gerade meine Website auf Bootstrap 3.0 um. Ich habe ein Problem mit der Formulareingabe und der Textformatierung. Was in Bootstrap 2 funktioniert hat, funktioniert in Bootstrap 3 nicht.

Wie kann ich vor und nach einer Formulareingabe Text in derselben Zeile abrufen? Ich habe es auf ein Problem mit der Klasse 'form-control' in der Bootstrap 3-Version des Beispiels eingegrenzt.

Wie würde ich vorgehen, um den gesamten Text und die Eingabe in einer Zeile zu erhalten? Ich möchte, dass das Bootstrap 3-Beispiel wie das Bootstrap 2-Beispiel in der jsfiddle aussieht.

JS Geigenbeispiel

<div class="container ">
  <form>
      <h3> Format used to look like this in Bootstrap 2 </h3>
      <div class="row ">
          <label for="return1"><b>Return:</b></label>
          <input id="return1" name='return1' class=" input input-sm" style="width:150px"
                 type="text" value='8/28/2013'>
          <span id='return1' style='color:blue'> +/- 14 Days</span>
      </div>

       <br>   
       <br>   
           <h3> BootStrap 3 Version </h3>

      <div class="row">
          <label for="return2"><b>Return:</b></label>
          <input id="return2" name='return2' class="form-control input input-sm" style="width:150px"
                 type="text" value='8/28/2013'>
          <span id='return2' style='color:blue'> +/- 14 Days</span>
      </div>
  </form>

Update: Ich ändere den Code in diesen, der funktioniert, aber jetzt Probleme mit der Ausrichtung hat. Irgendwelche Ideen?

<div class="form-group">
<div class="row">
    <div class="col-xs-3">
        <label for="class_type"><h2><span class=" label label-primary">Class Type</span></h2></label>
    </div>
    <div class="col-xs-2">
        <select name="class_type" id="class_type" class="  form-control input-lg" style="width:200px" autocomplete="off">
            <option >Economy</option>
            <option >Premium Economy</option>
            <option >Club World</option>
            <option >First Class</option>
        </select>
    </div>
 </div>

fettes Fantasma
quelle
Sie sind beide gleich, Sie haben gerade eine zusätzliche Klasse form-controlin Ihrem Bootstrap 3-Beispiel.
Kyle Needham
1
Schauen Sie sich das Beispiel in den Bootstrap-Dokumenten an. Sie vermissen Klassen auf dem Label getbootstrap.com/css/#forms-horizontal
bumperbox
Es tut mir leid, aber ich bin immer noch verwirrt. Das untere Beispiel (BS3) hat die Klasse 'form-control', die ein besseres Aussehen ergibt. Ich möchte besser aussehen UND den Text und die Eingabe in derselben Zeile halten. Was vermisse ich?
Fett Fantasma
Lassen Sie mich die Frage anders stellen. Wie würde ich die Text- und Eingabefelder in derselben Zeile und in schönen Spalten ausrichten? Siehe diese Geige jsfiddle.net/fatfantasma/QwkpE . Natürlich möchte ich ganz rechts in derselben Zeile Text hinzufügen. Wie würde ich das machen?
Fett Fantasma
.input-lgErhöht die Höhe des Eingabefelds, aber wir benötigen eine Klasse, um auch die Höhe und Größe des Etiketts anzupassen.
Petrus Theron

Antworten:

39

Ich würde jedes Element, das Sie inline haben möchten, in ein separates col-md- * div in Ihrer Zeile einfügen. Oder erzwingen Sie, dass Ihre Elemente inline angezeigt werden. Die Form-Control-Klasse zeigt Block an, da Bootstrap dies für erforderlich hält.

lomteslie
quelle
136

Direkt aus der Dokumentation http://getbootstrap.com/css/#forms-horizontal .

Verwenden Sie die vordefinierten Rasterklassen von Bootstrap, um Beschriftungen und Gruppen von Formularsteuerelementen in einem horizontalen Layout auszurichten, indem Sie .form-horizontalsie dem Formular hinzufügen (das muss kein a sein <form>). Dadurch wird .form-groupsdas Verhalten als Rasterzeilen geändert , sodass dies nicht erforderlich ist .row.

Stichprobe:

<form class="form-horizontal">
  <div class="form-group">
    <label for="inputEmail3" class="col-sm-2 control-label">Email</label>
    <div class="col-sm-10">
      <input type="email" class="form-control" id="inputEmail3" placeholder="Email">
    </div>
  </div>
  <div class="form-group">
    <label for="inputPassword3" class="col-sm-2 control-label">Password</label>
    <div class="col-sm-10">
      <input type="password" class="form-control" id="inputPassword3" placeholder="Password">
    </div>
  </div>
  <div class="form-group">
    <div class="col-sm-offset-2 col-sm-10">
      <div class="checkbox">
        <label>
          <input type="checkbox"> Remember me
        </label>
      </div>
    </div>
  </div>
  <div class="form-group">
    <div class="col-sm-offset-2 col-sm-10">
      <button type="submit" class="btn btn-default">Sign in</button>
    </div>
  </div>
</form>
Denis Besic
quelle
15
+1. Dies sollte die akzeptierte Antwort sein, da sie die offizielle Dokumentation
EProgrammerNotFound
Es handelt sich nur um eine Linkantwort, die ohne Beispiel nicht akzeptiert werden sollte, falls sich die Seite, auf die verwiesen wird, ändert oder entfernt wird.
NDM
Warum ist die richtige Antwort die richtige Antwort? Das sollte die richtige Antwort sein! @ Fett Fantasma
JMASTER B
Sollten Sie diese in eine Form-Control-Statik einwickeln, siehe Antworten unten
rmcsharry
2
@ Whitecat, das von Natur aus auf einem reaktionsschnellen Layout basiert
dies
23

Was Sie brauchen, ist die .form-inlineKlasse. Sie müssen jedoch vorsichtig sein. Bei der neuen .form.inlineKlasse müssen Sie die Breite für jedes Steuerelement angeben.

Schauen Sie sich das an

Reza Shirazian
quelle
Dies sollte eine bessere Antwort als die Klasse sein, form-horizontalda Div mit Klassenshows form-groupim Block nicht erzwungen wurde .
Shawmzhu
Dies gilt nur für Formulare in Ansichtsfenstern mit einer Breite von mindestens 768 Pixel.
rmcsharry
13

Nichts davon funktionierte für mich, musste .form-control-staticKlasse benutzen .

http://getbootstrap.com/css/#forms-controls-static

Hakunin
quelle
1
Das hat wirklich geholfen. Ohne diese wurden der Beschriftungstext und die Eingabe von Text nicht mit COL- ausgerichtet -
Brendan Cody-Kenny
Dies sollte die richtige Antwort sein, insbesondere wenn Sie möchten, dass Ihr Formular auf kleineren Geräten korrekt
verpackt wird
Ja, das funktioniert auch bei mir. Andere Lösungen schlagen für col-xs- * Spalten fehl. Die Verwendung von 'form-control-static text-right' hat bei BS 3.3.7 für mich funktioniert.
Neutrino
10

Sie können es so machen:

<form class="form-horizontal" role="form">
    <div class="form-group">
        <label for="inputType" class="col-sm-2 control-label">Label</label>
        <div class="col-sm-4">
            <input type="text" class="form-control" id="input" placeholder="Input text">
        </div>
    </div>
</form>

Geige

Paulo Fidalgo
quelle
4

gib einfach Mutter von div "class =" col-lg-12 ""

<div class="form-group">
<div class="row">
    <div class="col-xs-3">
        <label for="class_type"><h2><span class=" label label-primary">Class Type</span></h2></label>
    </div>
    <div class="col-xs-2">
        <select name="class_type" id="class_type" class="  form-control input-lg" style="width:200px" autocomplete="off">
            <option >Economy</option>
            <option >Premium Economy</option>
            <option >Club World</option>
            <option >First Class</option>
        </select>
    </div>
 </div>

es wird sein

<div class="form-group">
<div class="col-lg-12">
  <div class="row">
    <div class="col-xs-3">
        <label for="class_type"><h2><span class=" label label-primary">Class Type</span></h2></label>
    </div>
    <div class="col-xs-2">
        <select name="class_type" id="class_type" class="  form-control input-lg" style="width:200px" autocomplete="off">
            <option >Economy</option>
            <option >Premium Economy</option>
            <option >Club World</option>
            <option >First Class</option>
        </select>
    </div>
</div>
</div>
Welboy
quelle
3

Die Art und Weise, wie ich es gelöst habe, bestand einfach darin, eine Überschreibung für alle meine Textfelder in der Haupt-CSS meiner Site hinzuzufügen, wie folgt:

.form-control {
    display:initial !important;
}
Hugo Nava Kopp
quelle
1
Was macht das?
AgilePro
1

Bitte überprüfen Sie den aktualisierten Code, den wir verwenden müssen

 form-control-static not only form-control

http://jsfiddle.net/tusharD/58LCQ/34/

Danke mit Grüßen

Tushar Dhingra
quelle
0

In Bootstrap 4 für horizontales Element können Sie .rowmit .col-*-*Klassen die Breite Ihrer Beschriftungen und Steuerelemente angeben. siehe diesen Link .

Wenn Sie eine Reihe von Beschriftungen, Formularsteuerelementen und Schaltflächen in einer einzelnen horizontalen Zeile anzeigen möchten, können Sie .form-inlinediesen Link für weitere Informationen verwenden

Liam
quelle
Die Frage besagt speziell Bootstrap 3.
Blupointmedia
1
Ich hatte die gleichen Probleme mit Bootstrap 4 und habe es gepostet, um jemand anderem zu helfen
Liam
-2

Oder Sie können dies tun:

<table>
  <tr>
    <td><b>Return:</b></td>
    <td><input id="return1" name='return1' 
              class=" input input-sm" style="width:150px"
              type="text" value='8/28/2013'></td>
  </tr>
</table>

Ich habe jeden der oben genannten Vorschläge ausprobiert und keiner von ihnen hat funktioniert. Ich möchte keine feste Anzahl von Spalten im 12-Spalten-Raster auswählen. Ich möchte die Eingabeaufforderung und die Eingabe direkt danach, und ich möchte, dass sich die Spalten nach Bedarf dehnen.

Ja, ich weiß, das ist gegen Bootstrap. Und Sie sollten NIEMALS einen Tisch benutzen. Weil DIV so viel besser ist als Tabellen. Das Problem ist jedoch, dass Tabellen, Zeilen und Zellen tatsächlich funktionieren.

JA - Ich weiß wirklich, dass es CSS-Fanatiker gibt, und die Knie-Ruck-Reaktion ist, niemals niemals niemals TABELLE, TR und TD zu verwenden. Ja, ich weiß, dass DIV class = "table" mit DIV class = "row" und DIV class = "cell" viel besser ist. Außer wenn es nicht funktioniert und es viele Fälle gibt. Ich glaube nicht, dass Menschen diese Situationen blind ignorieren sollten. Es gibt Zeiten, in denen TABLE / TR / TD einwandfrei funktioniert, und es gibt keinen Grund, einen komplizierteren und fragileren Ansatz zu verwenden, nur weil er als eleganter angesehen wird. Ein Entwickler sollte verstehen, was die Vorteile der verschiedenen Ansätze und die Kompromisse sind, und es gibt keine absolute Regel, dass DIVs besser sind.

"Ein typisches Beispiel: Basierend auf dieser Diskussion habe ich ein paar vorhandene tds und trs in divs konvertiert. 45 Minuten damit herumgespielt und versucht, alles nebeneinander auszurichten, und ich habe aufgegeben. TDs in 10 Sekunden später wieder - funktioniert - sofort - in allen Browsern nichts mehr zu tun. Bitte versuchen Sie mir verständlich zu machen - welche mögliche Rechtfertigung haben Sie dafür, dass ich es anders mache! " Siehe [ https://stackoverflow.com/a/4278073/1758051]

Und das: "

Das Layout sollte einfach sein. Die Tatsache, dass Artikel darüber geschrieben wurden, wie ein dynamisches dreispaltiges Layout mit Kopf- und Fußzeile in CSS erreicht werden kann, zeigt, dass es sich um ein schlechtes Layoutsystem handelt. Natürlich können Sie es zum Laufen bringen, aber es gibt buchstäblich Hunderte von Artikeln online darüber, wie es geht. Es gibt so gut wie keine derartigen Artikel für ein ähnliches Layout mit Tabellen, da dies offensichtlich ist. Unabhängig davon, was Sie gegen Tabellen und zugunsten von CSS sagen, macht diese eine Tatsache alles rückgängig: Ein grundlegendes dreispaltiges Layout in CSS wird häufig als "Der Heilige Gral" bezeichnet. "[ Https://stackoverflow.com/a/4964107/ 1758051]

Ich habe noch keinen Weg gefunden, um DIVs zu zwingen, in allen Situationen immer in einer Spalte aufzustellen. Ich bekomme immer wieder triviale Beispiele gezeigt, die nicht wirklich auf die Probleme stoßen. Bei "Responsive" geht es darum, eine Möglichkeit bereitzustellen, die nicht immer in einer Spalte angezeigt wird. Wenn Sie jedoch wirklich eine Spalte möchten, können Sie Stunden damit verschwenden, DIV zum Laufen zu bringen. Manchmal müssen Sie geeignete Technologie verwenden, egal was die Eiferer sagen.

AgilePro
quelle
2
Tabellen reagieren nicht.
Pedro Moreira
Jeder weiß, dass Tabellen sich nicht in Nicht-Tabellen umformatieren. Aber wenn Sie eine Zeile benötigen, bleibt diese IMMER eine Zeile. Sie können dies einfach nicht mit DIV-Tags erzwingen. Die Leute tun so, als ob Sie immer Reaktionsfähigkeit wollen, aber was Sie tun, verwechselt "die meiste Zeit" mit "die ganze Zeit". Zum Zeitpunkt des Schreibens hat diese Antwort zwei Abstimmungen. Wenn Sie meinem Standpunkt hier zustimmen, dass Sie manchmal nur eine TR benötigen, lassen Sie es auch andere wissen.
AgilePro
Sie haben das Recht auf Ihre eigene Meinung, aber ich denke, der allgemeine Konsens ist, dass Sie niemals Tabellen für etwas anderes verwenden sollten, das tabellarische Daten enthält. Tabellen sind einfach zu begrenzt, was sie können und wie anpassbar sie sind. Wenn Sie divs weiterhin die Möglichkeit geben müssen, wie Tabellenzeilen und -spalten
Pedro Moreira