Wybierz Wejścia i wejścia tekstowe w HTML-najlepszy sposób na równą szerokość?

Mam taką prostą formę (tylko w celach ilustracyjnych)...

<form>

   <div class="input-row">
      <label>Name</label>
      <input type="text" name="name" />
   </div>

   <div class="input-row">
      <label>Country</label>
      <select name="country">
         <option>Australia</option>
         <option>USA</option>
      </select>
   </div>

</form>

Moja metoda layoutu przy użyciu CSS jest następująca...

form  {
    width: 500px;
}

form .input-row {
    display: block;
    width: 100%;
    height: auto;
    clear: both; 
    overflow: hidden; /* stretch to contain floated children */
    margin-bottom: 10px;
}

form .input-row label {
    display: block;
    float: left;
}

form .input-row input,
form .input-row select {
    display: block;
    width: 50%;
    float: right;
    padding: 2px;
}

To wszystko ładnie wyrównuje, z tym, że mój element select (w Firefoksie tak czy inaczej) nie zawsze ma taką samą szerokość jak pozostałe elementy input. Na ogół jest węższy o kilka pikseli.

Próbowałem zmienić szerokość na rozmiar piksela (np. 200px), ale to nic nie zmieniło.

Jaki jest najlepszy sposób, aby te wszystkie miały takie same szerokość? Mam nadzieję, że nie ucieknie się do Ustawienia select's width indywidualnie, lub umieszczenie ich w tabelach...

 70
Author: alex, 2009-05-22

3 answers

Rozwiązaniem jest określenie modelu pudełkowego dla elementów formularza, a przeglądarki zazwyczaj zgadzają się najbardziej, gdy używasz border-box:

input, select, textarea {
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
}

Jest normalizacja.css projekt, który agreguje takie triki.

 161
Author: Kornel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-18 20:39:33

Wypełnienie spowoduje, że tekst będzie bliżej krawędzi pola.

Spróbuj ustawić margines na 0px, a jeśli wydaje się to słuszne, pobaw się nim (jak tylko ustawianie marginesu-tylko w lewo)

 0
Author: Luke Schafer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-22 22:39:48

Miał te same problemy z tabelą o szerokości 100% i komórkami, z polem tekstowym (również o szerokości 100%) szerszym niż komórka tabeli.

To rozwiązało mój problem w css:

table td
{
    padding-right: 8px;
}

Nie jest to najlepsze rozwiązanie, ponieważ prawdopodobnie dostaniesz dodatkową przestrzeń po prawej stronie. Ale przynajmniej już się nie ukrywa!

 0
Author: Herman Cordes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-28 15:59:09