동일한 너비의 입력을 얻고 필드를 선택하는 방법


109

양식에는 하나의 선택 필드와 두 개의 입력 필드가 있습니다. 이러한 요소는 수직으로 정렬됩니다. 불행히도 이러한 요소의 너비는 동일하지 않습니다.

내 코드는 다음과 같습니다.

<select name="name1" style="width:198px">
  <option>value1</option>
  <option>value2</option>
</select><br/>
<input type="text" name="id1" style="width:193px"><br/>
<input type="text" name="id2" style="width:193px">

위의 예를 들어, 선택 요소에 가장 적합한 너비는 198 또는 199 픽셀입니다 (물론 193 픽셀을 시도했지만 차이가 큽니다). 이러한 요소의 너비가 같지 않기 때문에 해상도, 다양한 컴퓨터 및 브라우저에 따라 달라집니다 (때로는 차이가 약 1 또는 2 픽셀이라고 생각합니다). 이러한 요소를 div 또는 테이블 행에 설정하려고 시도했지만 도움이되지 않습니다.

Q : 이러한 요소의 너비를 정확히 동일하게하려면 어떻게해야합니까?


1
동일한 질문이 여기에 질문되었습니다 : stackoverflow.com/questions/895904/…
BlaM

답변:


134

업데이트 된 답변

다음은 input / textarea / select 요소가 사용하는 상자 모델을 변경하여 모두 동일한 방식으로 작동하도록하는 방법입니다. box-sizing각 브라우저에 대한 접두사로 구현 된 속성 을 사용해야 합니다.

-ms-box-sizing:content-box;
-moz-box-sizing:content-box;
-webkit-box-sizing:content-box; 
box-sizing:content-box;

이는 앞서 언급 한 2px 차이가 존재하지 않음을 의미합니다.

http://www.jsfiddle.net/gaby/WaxTS/5/의

참고 : IE에서는 버전 8 이상에서 작동합니다.


실물

테두리 를 재설정 하면 select요소는 항상 input요소 보다 2 픽셀 적습니다 .

예 : http://www.jsfiddle.net/gaby/WaxTS/2/


답변 감사합니다. 그리고 2px에 테두리를 설정하면 입력과 선택 필드 사이에 4 픽셀이 있습니다. 3px 테두리-6px ...?
luk4443 2010

1
@luk, 아니. 입력과 선택의 테두리 너비가 같으면 차이는 2 픽셀로 유지됩니다.
Gabriele Petrioli

감사. 다양한 브라우저에서 코드를 시도하고 Firefox에서는 모든 것이 정상이지만 IE 8과 Opera에서는 작동하지 않습니다 (입력 및 너비 선택에 차이가 있습니다) :(
luk4443

1
아마도 box-sizing : border-box? 그게 당신의 뜻이라고 생각합니다. 콘텐츠 상자는 패딩 + 여백이 너비에 추가되는 기본값입니다.
O'Rooney

1
실제로는 다음과 같아야합니다. -ms-box-sizing : content-box; -moz-box-sizing : content-box; -webkit-box-sizing : content-box; 상자 크기 조정 : 내용 상자; 표준 구문은 점진적 향상 방법론을 따르기 위해 마지막으로 진행되어야합니다. 그래야 표준이 광범위하게 구현 될 때 사용자 에이전트는 기본적으로 표준 구문을 사용하고 접두사가 붙은 버전을 제거 할 수 있습니다.
user1739635

118

위의 Gaby의 대답 (+1)을 시도했지만 부분적으로 문제가 해결되었습니다. 대신 콘텐츠 상자가 테두리 상자로 변경된 다음 CSS를 사용했습니다.

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

예, 양식 필드 (예 : 텍스트 영역, 입력 필드)는 항상 테두리 상자 상자 모델과 잘 작동하는 것 같습니다. 버튼, 확인란, 라디오, 제출, 재설정 및 검색 입력은 기본적으로 테두리 상자입니다.
Vennsoh

2
을 사용해야하는 이유에box-sizing: border-box 대한 좋은 주장이 있습니다 . 우수한 범용 구현 을 위해 최상위 수준 html 요소를 설정 한 다음 상속하여 쉽게 재정의 할 수 있도록하는 것이 좋습니다.
KyleMit

content-box는 내 경우에는 아무것도하지 않았습니다. 너비가 같도록 테두리 상자가 필요했습니다. Border-box는 확실히 더 나은 솔루션입니다. 감사합니다.
마누엘 호프만

5

이 코드를 CSS에 추가하십시오.

 select, input[type="text"]{
      width:100%;
      box-sizing:border-box;
    }

-4

다른 클래스를 만들고 2px 예제로 크기를 늘리십시오.

.enquiry_fld_normal{
width:278px !important; 
}

.enquiry_fld_normal_select{
width:280px !important; 
 }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.