html - Forza l'elemento flessibile a estendersi per l'intera larghezza della riga




css css3 (2)

Ogni volta che si desidera che un oggetto flessibile occupi un'intera riga, impostarlo su width: 100% / flex-basis: 100% e abilitare l' wrap sul contenitore.

L'articolo ora consuma tutto lo spazio disponibile. I fratelli sono costretti ad altre file.

.parent {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  background-color: #ececec;
}

.error {
  flex: 0 0 100%; /* fg: 0, fs: 0, fb: 100% */
  border: 1px dashed red;
}

#range, #text {
  flex: 1;
}
<div class="parent">
  <input type="range" id="range">
  <input type="text" id="text">
  <label class="error">Error message</label>
</div>

Sto cercando di trattenere i primi 2 elementi figlio sulla stessa riga mentre il terzo elemento è nel suo sotto a tutta larghezza, il tutto usando flex.

Sono particolarmente interessato all'utilizzo delle proprietà flex-grow e flex-shrink sui primi 2 elementi (che è una delle mie ragioni per non usare le percentuali), tuttavia il terzo elemento deve essere realmente a larghezza piena e inferiore ai primi due.

L'elemento label viene aggiunto a livello di text dopo l'elemento di text quando si verifica un errore e non riesco a modificare il codice.

Come posso forzare l'elemento dell'etichetta a una larghezza del 100% al di sotto degli altri due elementi che sono posizionati usando flex?

.parent {
  display: flex;
  align-items: center;
  width: 100%;
  background-color: #ececec;
}

.parent * {
  width: 100%;
}

.parent #text {
  min-width: 75px;
  flex-shrink: 2.25;
}
<div class="parent">
  <input type="range" id="range">
  <input type="text" id="text">
  <label class="error">Error message</label>
</div>


Sembra che tu stia cercando una min-width per il bambino e flex-wrap:wrap il genitore:

.parent {
   display: flex;
   align-items: center;
   flex-wrap: wrap;
}

.parent > * {
  flex-grow: 1;
}

.parent > .error {
  min-width: 100%;
  background-color: rgba(255,0,0,.3);
}
<div class="parent">
  <input type="range" id="range">
  <input type="text" id="text">
  <label class="error">Error message</label>
</div>





flexbox