Qual è il modo migliore di progettare un modulo che assomigli a questo (vedi link sotto) nel bootstrap di Twitter senza classi fatte in casa?
È possibile impostare una forma interna-inline all'interno di un form-orizzontale come nell'esempio seguente:
Non annidare i tag <form>
, che non funzioneranno. Basta usare le classi Bootstrap.
<form class="form-horizontal" role="form">
<div class="form-group">
<label for="inputType" class="col-md-2 control-label">Type</label>
<div class="col-md-3">
<input type="text" class="form-control" id="inputType" placeholder="Type">
</div>
</div>
<div class="form-group">
<span class="col-md-2 control-label">Metadata</span>
<div class="col-md-6">
<div class="form-group row">
<label for="inputKey" class="col-md-1 control-label">Key</label>
<div class="col-md-2">
<input type="text" class="form-control" id="inputKey" placeholder="Key">
</div>
<label for="inputValue" class="col-md-1 control-label">Value</label>
<div class="col-md-2">
<input type="text" class="form-control" id="inputValue" placeholder="Value">
</div>
</div>
</div>
</div>
</form>
Puoi ottenere questo comportamento in molti modi, questo è solo un esempio. Provalo su questo bootply
<form class="form-horizontal">
<div class="control-group">
<label class="control-label" for="inputType">Type</label>
<div class="controls">
<input type="text" id="inputType" placeholder="Type">
</div>
</div>
<div class="control-group">
<span class="control-label">Metadata</span>
<div class="controls form-inline">
<label for="inputKey">Key</label>
<input type="text" class="input-small" placeholder="Key" id="inputKey">
<label for="inputValue">Value</label>
<input type="password" class="input-small" placeholder="Value" id="inputValue">
</div>
</div>
</form>
Tieni presente che sto utilizzando .form-inline
per ottenere lo stile di sospensione all'interno di .controls
.
Puoi testarlo su this jsfiddle
Per esempio di bootstrap 3 sopra funziona ma è complicato, piuttosto che usare il form-group usa form-inline per i campi che vuoi in linea.
Per esempio:
<div class="form-group">
<label>CVV</label>
<input type="text" size="4" class="form-control" />
</div>
<div class="form-inline">
<label>Expiration (MM/YYYY)</label><br>
<input type="text" size="2" class="form-control" /> / <input type="text" size="4" class="form-control" />
</div>
Questo utilizza il bootstrap di Twitter 3.x con una classe css per far sì che le etichette si posizionino in cima agli input. Ecco un collegamento violino , assicurati di espandere il pannello dei risultati abbastanza largo da vedere l'effetto.
HTML:
<div class="row myform">
<div class="col-md-12">
<form name="myform" role="form" novalidate>
<div class="form-group">
<label class="control-label" for="fullName">Address Line</label>
<input required type="text" name="addr" id="addr" class="form-control" placeholder="Address"/>
</div>
<div class="form-inline">
<div class="form-group">
<label>State</label>
<input required type="text" name="state" id="state" class="form-control" placeholder="State"/>
</div>
<div class="form-group">
<label>Zip</label>
<input required type="text" name="Zip" id="Zip" class="form-control" placeholder="Zip"/>
</div>
</div>
<div class="form-group">
<label class="control-label" for="country">Country</label>
<input required type="text" name="country" id="country" class="form-control" placeholder="country"/>
</div>
</form>
</div>
</div>
CSS:
.myform input.form-control {
display: block; /* allows labels to sit on input when inline */
margin-bottom: 15px; /* gives padding to bottom of inline inputs */
}
So che questa è una vecchia risposta, ma qui è quello che faccio di solito:
CSS:
.form-control-inline {
width: auto;
float:left;
margin-right: 5px;
}
Quindi avvolgi i campi che desideri siano inline in un div e aggiungi .form-control-inline all'input, ad esempio:
HTML
<label class="control-label">Date of birth:</label>
<div>
<select class="form-control form-control-inline" name="year"> ... </select>
<select class="form-control form-control-inline" name="month"> ... </select>
<select class="form-control form-control-inline" name="day"> ... </select>
</div>
per semplificare, aggiungi un codice class="form-inline"
prima dell'input.
esempio: <div class="col-md-4 form-inline"> //add the class here...
<label>Lot Size:</label> <input type="text" value="" name="" class="form-control" >
</div>