2012-01-12 2 views
0

HTML5/CSS/JavaScript 학습 곡선의 한가운데서 벽에 부딪쳤습니다.일관성없는 CSS 동작 : 'display'와 'float'- 조언이 필요합니다.

제 목표는 양식을 만드는 것입니다. 이 겉으로보기에는 간단한 작업을 실행하는 과정에서 나는 Firefox와 IE에서 완벽하게 표시되는 혼란스러운 괴물을 만들었지 만 Chrome과 Safari에서 뒤죽박죽 된 것처럼 보입니다. 내 문제를 설명하는 몇 가지 샘플 코드를 작성했습니다. 사용자 이름과 비밀번호에 대한 두 개의 텍스트 필드와 'Sanford and Son'의 테마가 사용자 세션 중에 재생되어야하는지 여부를 나타내는 확인란이있는이 세 줄의 형식을 고려하십시오.

<!DOCTYPE HTML> 
<html> 
    <head> 
     <style> 
      form label{ 
       float: left; 
       clear: left; 
       text-align: right; 
       margin-right: 10px; 
       width: 110px; 
      } 
      form input{ 
       display: block; 
       margin-bottom: 5px; 
       padding: 0px .2em; 
       outline: none; 
      } 
     </style> 
    </head> 
    <body> 
     <form id="loginPopup"> 
      <fieldset> 
       <label for="username">Username:</label> 
       <input type="text" id="username" name="username"/> 

       <label for="password">Password:</label> 
       <input type="password" id="password" name="password"/> 

       <label for="sanford">Sanford Theme:</label> 
       <input type="checkbox" id="sanford" name="sanford"/> 
      </fieldset> 
     </form> 
    </body> 
</html> 

IE 또는 Firefox에서 보는 것이 좋습니다. 이제 Chrome 또는 Safari에서 보시기 바랍니다. 'sanford'확인란은 레이블 아래에 으로 표시됩니다. 안좋다. 체크 박스는 분명히 레이블 오른쪽에 표시되어야합니다. 더욱 복잡한 점은 확인란을 다른 입력 (예 : 텍스트, 라디오 등)으로 바꾸면 모든 브라우저에서 모든 것이 올바르게 표시된다는 것입니다. 이 문제는 확인란으로 제한된 것 같습니다.

여기에 무슨 일이 일어나고 있는지 머리를 감쌀 수 없습니다. 'Sanford'라벨이 왼쪽으로 이동하므로 체크 박스가 해당 라벨의 바로 오른쪽으로 이동해야합니다. 실제로 Firefox/IE에서는 정확히 발생합니다 ... Chrome/Safari에없는 이유는 무엇입니까?

도움을 주시면 감사하겠습니다. http://jsfiddle.net/ChadDecker/FyNZw/

+0

는 [바이올린] 만들기 (http://jsfiddle.net), 더 이해가됩니다이 코드의를 – Ibu

+0

나는 바이올린 계정을 만든 확인하고 여기에 코드를 게시했습니다. IE/Firefox에서는 제대로 표시되지만 Chrome/Safari에서는 제대로 표시되지 않습니다. http://jsfiddle.net/ChadDecker/FyNZw/ –

답변

2

플로트는 까다 롭습니다 :

편집 : 요청에 따라 나는 바이올린 사이트에 코드를 기록했다. 한 요소가 떠 다니는 경우, 다른 요소는 부유해야합니다. 그렇지 않으면 모두 엉망이됩니다. 따라서 모든 요소를 ​​띄우고 필요에 따라 여백/여백을 조정해야합니다. 다른의 정상에 표시하는 것을 항목 페이지 알려줍니다 Z- 인덱스를 사용하여도

position: absolute; 

과 : 당신은 무엇을 사용하고도 시도 할 수 있습니다

z-index: 0; 

편집을

JSFiddle에서 귀하의 양식 : 그것은 모두 내 생각에 잘못 설계되었습니다. 확인란 필드는 입력 양식으로 간주되므로 을 사용하지 않아야합니다. 따라서 <inputform.input 스타일에서 속성을 가져옵니다. 난 당신이 상자라는 표시하는 간단한 클래스를 만든 :

http://jsfiddle.net/FyNZw/2/

+0

Z- 색인 속성에 대해 읽었지만 의심 스럽습니다. 자체 레이블 위에 체크 박스를 표시하는 것이 적절합니다. 내 원래 게시물에 JSFiddle 링크를 추가 했으므로 무슨 뜻인지 알 수 있습니다. 확인란이 IE/Firefox의 오른쪽에 표시되고 Chrome/Safari에서는 실패합니다. 절대 위치와 관련해서 ... 나는 그것이 어떻게 작동 하는지를 볼 수 있지만, 실제로 형태가 어떻게 설계되어 있는가? 절대적인 조건으로 픽셀 단위로 지정함으로써 각 필드는 문서 흐름없이 수행되어야합니까? 더 쉬운 방법이있을 거라 생각했지만 어쩌면 .. –

+0

@ChadDecker 제 대답을 편집했습니다. –

+1

플로트 (Float)는 그렇게 까다롭지 않고 담요 같은 문장을 쓰지 않습니다. _ "한 요소가 뜨면 나머지는 떠 있어야합니다. – Sparky

관련 문제