2010-06-22 2 views
8

OK, 나는이 영원한 질문 뭔가 실현, 그러나 여기 간다 : 나는 하나의 텍스트 입력을 가지고일관성 높이

<input type="text" name="whatever" /> 

font-family, font-sizepadding을 지정했습니다. 그러나 동일한 컴퓨터 (내 Mac, 가정 해 봅시다) 에서조차 Firefox (3.6)의 입력 높이는 Chrome 또는 Safari에서와 다릅니다. 특히 파이어 폭스는 텍스트 아래에 조금 더 많은 패딩을 추가합니다.

아니요. height을 픽셀 단위로 지정해도 일관성이 유지되지 않습니다.

JavaScript를 사용하지 않고도 Gecko 및 WebKit 기반 브라우저에서 Internet Explorer와 Opera는 물론 텍스트 입력 높이의 일관성을 유지할 수 있습니까? JavaScript를 사용해야하는 경우 누군가가 jQuery 플러그인이나이 작업을 쉽게 수행 할 수있는 방법을 고안 했습니까?

업데이트 : 여기서는하지 않습니다. jqTransform 플러그인을 사용하면 요소 양식을 스킨하고 브라우저에서 동일하게 보일 것이라고 약속 할 수 있습니다.

jqTransform Chrome input

여기에 같은 입력이 파이어 폭스 3.6.4에서 보이는 방법은 다음과 같습니다 : 여기에 데모 입력 내 Mac에서 크롬 5에 보이는 방법

jqTransform Firefox input

나는이를 변경하지 않은 어떤 방식 으로든 스크린 샷을 찍어 버렸습니다. 이제 첫 반응은 "어, 파이어 폭스를 지원하고 싶지 않습니다." 그러나 현재 Safari와 Chrome 사용자가 결합 된 것보다 더 많은 Firefox 사용자가 있으므로 옵션이 아닙니다.

누군가 도와주세요! 방금 표준을 준수하는 현대적인 양식을 브라우저에 표시하고 싶습니다. 그리고 "같은 것을 보아라."나는 선택 또는 그런 것에 관한 outline에 대해 말하지 않고있다. 나는 단지 같은 너비, 높이 및 텍스트 배치를 갖는 것에 대해 이야기하고 있습니다!

+0

내가 더 큰 입력이 비슷한 문제를 가지고 있었고, 옆에있는 큰 버튼 - Firefox, IE 및 Safari 간의 정렬 문제를 조정할 수 없습니다. - 내가 할 수있는 최선의 방법은 세 가지 중 하나입니다. ( –

답변

4

좋아요, 실제로 현재 <input type="text"> 요소가 Safari, Chrome 및 Firefox의 최신 버전에서 완전히 동일하게 보이도록하려면 "해결 방법"이 있습니다. Opera 나 IE 또는 Mac OS 이외의 운영 체제에서는이 기능을 테스트하지 않았습니다. 추가적인 해킹이 필요할 것입니다.

입력의 배경을 제공하고 입력 자체에 background: none, border: 0 등의 속성을 지정하면됩니다. 즉, 입력은 단지 부동 텍스트입니다. 그런 다음 상대 위치 지정 (특히 입력의 top 설정)을 사용하여 배경 위에 입력을 배치합니다. 따라서 여러 브라우저에서 자유롭게 조정할 수 있습니다.특히, I는 입력 텍스트가 파이어 폭스보다 웹킷 기반 브라우저에서 1 픽셀의 높은 것을 발견했다, 그래서 나는 입력이 마지막으로 정확히 웹킷과 파이어 폭스와 같은 모양 이제 라인

if ($.browser.webkit) { $input.css('marginTop', 1); } 

을 추가했다. 해킹예요. 그래도 작동합니다.

0

($의 .browser.webkit가) {$ ("jqTransformInputInner DIV 입력.") CSS ("패딩 정상", "10px.");} 경우