html 라디오 버튼을 레이블에 수직으로 정렬하는 방법은 무엇입니까?


95

레이블과 같은 줄에 라디오 단추가있는 양식이 있습니다. 그러나 라디오 버튼은 아래 스크린 샷과 같이 레이블과 수직으로 정렬되지 않습니다.

라디오 버튼.

라디오 버튼을 레이블과 수직으로 정렬하려면 어떻게해야합니까?

편집하다:

다음은 html 코드입니다.

<input checked="checked" type="radio" name="user_level" id="rd1" value="1"/>
<label for="rd1">radio 1</label><br/>
<input type="radio" name="user_level" id="rd2" value="2"/>
<label for="rd2">radio 2</label><br/>
<input type="radio" name="user_level" id="rd3" value="3"/>
<label for="rd3">radio 3</label><br/>

그리고 CSS 코드 :

label{
    padding:5px;
    color:#222;
    font-family:corbel,sans-serif;
    font-size: 14px;
    margin: 10px;
}

1
현재 귀하의 코드는 어떤 모습입니까?
George

@ninjacoder 코드로 질문을 업데이트하십시오.
Muthu Kumaran

답변:


149

이 시도:

input[type="radio"] {
  margin-top: -1px;
  vertical-align: middle;
}

9
이것은 나를 위해 일했지만 height= 100%;부모 요소가 명시 적으로 높이를 설정하지 않았기 때문에 를 추가해야했습니다 .
DaKaZ 2014

1
이것은 Chrome, Firefox 또는 IE를 사용하는 Mac, Windows 및 Linux간에 가장 일관된 접근 방식을 제공하는 것 같습니다. 또한 레이블에 패딩을 적용하고 라디오를 레이블 안에 넣으면 사용중인 패딩의 양에 따라 margin-top을 -1px보다 작은 값 (예 : -3px)으로 설정해야 할 수도 있음을 알았습니다. 그 라벨. (나는 라디오 박스 라벨에 호버 색상과 둥근 테두리 효과를 주어 더 멋지게 보이도록하고
싶습니다

3
이것이 유일한 정답 인 이유를 설명하려면 : HTML의 일부 요소에는 <p> 또는 <li> 요소 또는 라디오 버튼과 같은 기본 여백 또는 패딩 값이 있습니다. 개발자 모드 (F12)로 들어가서 태그 위로 마우스를 가져 가면 확인할 수 있습니다. 실제로 이것은 브라우저 자체가 CSS를 사용하여 사용자가 재설정 할 수있는 미리 정의 된 요소를 배치하기 때문에 좋은 동작입니다. 그러나 처음에 무언가 잘못 정렬 된 이유를 모른다면 혼란 스러울 수 있습니다. 따라서 기본적으로 이상하게 보이면 설정하지 않은 설정을 항상 덮어 쓰십시오.
StanE

글꼴 크기를 늘리거나 줄이면 작동하지 않는 것 같습니다. 그래도 작동하는 예제로 나를 잘못 증명하십시오!
프로텍터 원

15
input {
    display: table-cell;
    vertical-align: middle
}

모든 라디오에 수업을 넣으십시오. 이것은 html 페이지의 모든 라디오 버튼에서 작동합니다.

깡깡이


이것은 내가 본 최고의 솔루션입니다. 라디오 버튼 레이블 정렬은 그 전까지 수년간 저를 괴롭 혔습니다. 나를 위해 매번 작동합니다.
G-Man

레이블에 여러 줄의 텍스트가있는 경우 중단됩니다.
Daan

Fiddle 예제는 padding: 0; margin: 0입력 요소 에도 적용 되며 올바른 정렬을 얻기 위해 필요한 것 같습니다.
Emmanuel Bourg

13

나는 menuka devinda에 의해 anwer를 선택했지만 그 아래의 주석을 보면서 동의하고 더 나은 해결책을 찾으려고 노력했습니다. 나는 이것을 생각해 냈고 제 생각에는 훨씬 더 우아한 해결책입니다.

input[type='radio'], label{   
    vertical-align: baseline;
    padding: 10px;
    margin: 10px;
 }

답변 해주신 모든 분들 덕분에 당신의 답변은 눈에 띄지 않았습니다. 여전히 다른 아이디어가 있다면이 질문에 대한 답을 자유롭게 추가하십시오.


9

vertical-align:topCSS에 추가해보세요

label{
    padding:5px;
    color:#222;
    font-family:corbel,sans-serif;
    font-size: 14px;
    margin: 10px;
    vertical-align:top;
}​

테스트 : http://jsfiddle.net/muthkum/heAWP/


1
글꼴 크기를 늘리거나 줄일 때 이것은 유지되지 않습니다.
프로텍터 원

@Protectorone 그것은 오래된 답변이며 OP 질문에만 해당됩니다. 를 font-size사용하여 동일한 작업을 수행하려는 경우 display:flex. 여기 데모입니다 jsfiddle.net/et8z47q5는
Muthu Kumaran

8

답변에 약간의 유연성을 추가 할 수도 있습니다.

.Radio {
  display: inline-flex;
  align-items: center;
}

.Radio--large {
  font-size: 2rem;
}

.Radio-Input {
  margin: 0 0.5rem 0;
}
<div>
  <label class="Radio" for="sex-female">
    <input class="Radio-Input" type="radio" id="sex-female" name="sex" value="female" />
    Female
  </label>

  <label class="Radio" for="sex-male">
    <input class="Radio-Input" type="radio" id="sex-male" name="sex" value="male" />
    Male
  </label>
</div>


<div>
  <label class="Radio Radio--large" for="sex-female2">
    <input class="Radio-Input" type="radio" id="sex-female2" name="sex" value="female" />
    Female
  </label>

  <label class="Radio Radio--large" for="sex-male2">
    <input class="Radio-Input" type="radio" id="sex-male2" name="sex" value="male" />
    Male
  </label>
</div>


7

다음과 같이 할 수 있습니다.

input {
    vertical-align:middle;
}

label{
    color:#222;
    font-family:corbel,sans-serif;
    font-size: 14px;
}

데모


아주 좋아요. 레이블 대신 버튼을 정렬하고 싶었고 이것이 트릭을 수행합니다.
posfan12 2010

1

이런 식으로 작동합니다.

CSS :

input {
    float: left;
    clear: left;
    width: 50px;
    line-height: 20px;
}

label {
    float: left;
    vertical-align: middle;
}

1
label, input {
    vertical-align: middle;
}

상자의 세로 중간 점을 부모 상자의 기준선과 부모의 x- 높이 (en.wikipedia.org/wiki/X-height)의 절반에 맞추기 만하면됩니다.


1

이 답변 중 많은 부분이을 사용 vertical-align: middle;하여 정렬이 가까워 지지만 저에게는 여전히 몇 픽셀 차이가 있습니다. 레이블과 라디오 입력 사이에 진정한 일대일 정렬을 얻기 위해 사용한 방법은 다음과 vertical-align: top;같습니다.

label, label>input{
    font-size: 20px;
    display: inline-block;
    margin: 0;
    line-height: 28px;
    height: 28px;
    vertical-align: top;
}
<h1>How are you?</h1>
<fieldset>
	<legend>Your response:</legend>
	<label for="radChoiceGood">
		<input type="radio" id="radChoiceGood" name="radChoices" value="Good">Good
	</label>
	
	<label for="radChoiceExcellent">
		<input type="radio" id="radChoiceExcellent" name="radChoices" value="Excellent">Excellent
	</label>
	
	<label for="radChoiceOk">
		<input type="radio" id="radChoiceOk" name="radChoices" value="OK">OK
	</label>
</fieldset>


1

나는 라벨 안에 입력을 넣고 (추가 보너스 : 이제 for라벨에 속성이 필요하지 않음) 입력을 입력하는 것을 좋아 vertical-align: middle합니다.

label > input[type=radio] {
    vertical-align: middle;
    margin-top: -2px;
}

#d2 {  
    font-size: 30px;
}
<div>
	<label><input type="radio" name="radio" value="1">Good</label>
	<label><input type="radio" name="radio" value="2">Excellent</label>
<div>
<br>
<div id="d2">
	<label><input type="radio" name="radio2" value="1">Good</label>
	<label><input type="radio" name="radio2" value="2">Excellent</label>
<div>

( -2px margin-top맛의 문제입니다.)

제가 정말 좋아하는 또 다른 옵션은 테이블을 사용하는 것입니다. (피치 포크를 잡으세요! 정말 멋지네요!)for 모든 라벨에 속성을id 입력에 입니다. 여러 줄에 걸쳐 긴 텍스트 내용이있는 레이블에이 옵션을 사용하는 것이 좋습니다.

<table><tr><td>
    <input id="radioOption" name="radioOption" type="radio" />
    </td><td>
    <label for="radioOption">                     
        Really good option
    </label>
</td></tr></table>


0

나는 테이블이 일반적인 믿음과는 반대로 디자인 레이아웃에 사용되어서는 안된다는 데 동의하지만 유효성 검사를 통과합니다. 즉, 테이블 태그는 더 이상 사용되지 않습니다. 라디오 버튼을 정렬하는 가장 좋은 방법은 입력 요소에서 조정 된 여백이있는 세로 정렬 중간 CSS를 사용하는 것입니다.


-1

display:inline-block레이블을 추가 하고 제공하면 padding-top이 문제가 해결 될 것입니다. 또한 line-height라벨에을 설정하는 것도 가능합니다.


-2

몇 가지 방법이 있습니다. 내가 선호하는 방법은 html로 된 테이블을 사용하는 것입니다. 두 개의 coloum 3 행 테이블을 추가하고 라디오 버튼과 레이블을 배치 할 수 있습니다.

<table border="0">

<tr>
  <td><input type="radio" name="sex" value="1"></td>
  <td>radio1</td>

</tr>
<tr>
  <td><input type="radio" name="sex" value="2"></td>
  <td>radio2</td>

</tr>
</table>

6
레이아웃 목적으로 테이블을 사용하지 마십시오.
PeeHaa

4
-1 테이블은 레이아웃에 사용해서는 안되며이 코드는 유효성 검사를 통과하지 않습니다 ... @ninjacoder, 왜 이것을 "답변"으로 선택 했습니까?
tereško 2012

7
사실 .. 심각 .. 매번 누군가가 폼 마크 업, 세계 어딘가 귀여운 새끼 고양이 다이 ..에 대한 테이블을 사용하는 가르친다
데미안 Overeem

2
@PeeHaa, tereško, Damien Overeem 나는 너희들이 아마 옳다고 생각한다. 나는 내가 여기에 게시 한 내 자신의 해결책을 생각 해낼 수 있었다. 감사합니다! 귀하의 도움과 조언을 높이 평가합니다.
ninjacoder

3
나는 다른 옵션을 시도했지만별로 좋지 않았습니다. 테이블이 작동합니다. .tablecell{dispay:table-cell;} ... <div class="tablecell">테이블을 사용하고 있다는 것을 인정하고 싶지 않은 사람들을위한 이상한 해결 방법처럼 보입니다 ...
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.