2009-03-23 17 views
15

Używam sterowania listą przycisków programu ASP.NET.Wyrównaj przycisk radiowy z odpowiednią etykietą

Generuje następujący kod HTML.

 <table> 
      <tr> 
       <td> 
        <input type="radio"/> 
        <label > 
         label 1</label> 
       </td> 
       <td> 
        <input type="radio" 
         value="False" checked="checked" /> 
        <label > 
         label 2</label></td>     
      </tr> 
     </table> 

Wszystko wygląda dobrze (przynajmniej dla użytkownika), etykiety są wyrównane z przyciskami radiowymi.

Jednak po zmianie rozmiaru czcionki na 10px rozmiar etykiety oczywiście wygląda na mniejszy, ale efektem ubocznym jest to, że etykieta wygląda tak, jakby była wyrównana do dolnej części przycisku opcji. Potrzebuję etykiety, która ma być ustawiona na środku przycisku radiowego.

udało mi się zrobić to w IE z następującym CSS:

<style type="text/css"> 
    label 
    { 
     font-size:10px; 
     line-height:12px; 
     vertical-align:middle; 
    } 
</style> 

Jednak to nie działa w Firefox lub Chrome

Wszelkie sugestie?

+0

Zobacz także: http://stackoverflow.com/questions/396439/radio-checkbox-alignment-in-html-css –

Odpowiedz

32

Zamiast tego:

label { 
    font-size: 10px; 
    line-height: 12px; 
    vertical-align: middle; 
} 

spróbuj tego:

label, input[type="radio"] { 
    font-size: 10px; 
    vertical-align: middle; 
} 
+0

wygląda lepiej. Dzięki! –

+1

FYI, nie potrzebujesz wysokości linii, aby to działało. –

+0

Usunięto wysokość linii z zastępczego kodu CSS. Cieszę się, że pomogło! –

5

To selektor atrybutu nie działa w IE6 - najbardziej bezbolesny sposób znalazłem to, aby dodać klasę " radio "do przycisków radiowych, więc CSS staje się:

label, input.radio{ 
    font-size:10px; 
    vertical-align:middle; 
} 

Oczywiście tabela nie jest poprawnym znacznikiem dla tego rodzaju m - osobiście preferuję listę definicji, z etykietami wewnątrz DT i danymi wejściowymi w DD. Semantycznie jest to moim zdaniem w porządku - wyświetlasz listę terminów (etykiet), które użytkownik musi zdefiniować (dane wejściowe).

Znaczniki będzie wyglądać następująco:

<dl class="formStructure"> 
    <dt class="radio"><label for="option1">Yes</label></dt> 
    <dd class="radio"><input type="radio" name="option" id="option1" value="yes"/></dd> 

    <dt class="radio"><label for="option2">No</label></dt> 
    <dd class="radio"><input type="radio" name="option" id="option2" value="no"/></dd> 
</dl> 
+0

To naprawdę dziwne, jak większość frameworków tworzy formularze w elementach tabel. Semantycznie nie ma sensu. Lista definicji jest trochę chwiejna ... Osobiście używam uporządkowanej listy, ponieważ jest to lista pól formularzy i odpowiadających im etykiet, a tabindeks może być zgodny z kolejnością na liście. Bez względu na to, świetny punkt do podniesienia. –

Powiązane problemy