2012-11-15 3 views
0

CSS 레이아웃을 사용하여 레이아웃이 작성되었습니다 (표 (인라인, 행, 셀 등)). 아파치로 로컬 개발을하고 있는데 페이지를 새로 고치면 div 컨테이너 중 두 개가 잘못 정렬됩니다. 그러나 display : table-row의 선택을 취소하고 다시 검사하면 문제가 해결되고 페이지가 올바르게 표시됩니다.CSS 규칙을 껐다가 다시 켤 때까지 요소가 정렬되지 않음

http://jsfiddle.net/fNNKT/

당신은 위의 jsFiddle에서 HTML과 CSS를 볼 수 있습니다. 그것은 실제로 거기에서도 작동하지 않습니다. 어쩌면 내가 뭔가 잘못하고 있고, 도움을받을 수 있습니다.

   <div class="cabinet-container"> 
       <div class="mode-bar"> 
        <div class="mode-bar-left"> 
         <div class="mode-bar-item">logo</div> 
         <div class="mode-bar-item active">Dispense</div> 
         <div class="mode-bar-item">Inventory</div> 
        </div> 
        <div class="mode-bar-right schedule"> 
         <div class="mode-bar-item">Sign-Out</div> 
        </div> 
       </div> 
        <div class="table"></div> 
        <div class="left-container"></div> 
        <div class="center-container"> 
         <div class="search-container"> 
          <div class="table-cell"> 
           <div class="search-field"></div> 
          </div> 
         </div> 
         <div class="nav-button-center-container"> 
          <div class="table-cell"> 
          </div> 
         </div> 
         <div class="list"> 
          <div class="table-cell"> 
           <div class="list-item-center-container"></div> 
           <div class="list-item-center-container"></div> 
           <div class="list-item-center-container-partial"></div> 
          </div> 
         </div> 
         <div class="nav-button-center-container-down-active"> 
          <div class="table-cell"></div> 
         </div> 
        </div> 
        <div class="footer"> 
         <div class="button-group table-border-5"> 
          <div class="button-secondary">Dispense Non-Drug</div> 
          <div class="button-secondary">Sort By: Last Name</div> 
         </div> 
         <div class="button-group-right table-border-5"> 
          <div class="button-primary">New Clinical Order</div> 
         </div> 
        </div> 
      </div>​ 

답변

1

.mode-bar-left.mode-bar-right과 관련된 질문이 두 줄로 묶여 있습니까? 그렇다면 문제는 공백과 관련됩니다. 인라인으로 나란히 표시된 두 이미지를 생각해보십시오. 코드의 태그 사이에 공백이 있으면 브라우저에 공백이 표시됩니다.

솔루션 # 1 :
는 DOM에서 높은 로직 한 단계를 가져 가라. 두 모드 막대 요소의 display 값을 table-cell (현재 inline-table 대신)으로 변경하십시오. 그런 다음 .mode-bar-item 요소를 display: inline-block (table-cell 대신)으로 변경하십시오.

솔루션 # 2 :
더 빠른, 더 적은 우아한 해결책은 .mode-bar-leftfloat: left를 추가하는 것입니다.

우아함 주제에서 I 강력하게div보다 의미 론적으로 의미있는 태그를 더 많이 사용하는 것이 좋습니다. 예를 들어 .mode-bar-left은 분명히 목록 (ul?)이고 .mode-bar-item 요소는 분명히 목록 항목 (li)입니다.

+0

float을하지 않으면, 내가 CSS로 이동하는 이유 : 테이블 레이아웃은 현재 구현의 float/clear/absolutes에 대한 공포의 b/c입니다. –

+0

문제에 대해서는 jsFiddle 결과 너비를 늘리면 모드 막대 줄이 잘 정리됩니다 (LI가 더 잘 맞을 수도 있지만 맞습니다). 문제는 '왼쪽 컨테이너'와 중앙 컨테이너 '입니다. 특히 중앙 컨테이너는 왼쪽 컨테이너와 상단 정렬되어야하지만 현재는 그렇지 않습니다. –

+1

아 - 그래서 당신에게 대답 해 내가 해결 했어 - '센터 컨테이너'는 수직 정렬이 필요했다 : 상단이 적용되었다. 나는 지금 조금 바보 같아. –

1

javascript/jQuery를 사용하고 계십니까? 최근 프로젝트에서 필자는 유사한 문제를 겪고있었습니다. 필자는 사용자 지정 라이트 박스 스크립트를 태그 바로 앞에서 오른쪽으로 이동해야만 문제를 해결할 수있었습니다. 때로는 자바 스크립트가 그럴듯하게 될 수 있습니다. 나는 왜 그런지 이해하지 못한다. 그러나 그것이 그 방법이다.

+0

나는 JS 피들 예제에서 아직 정렬되지 않은 상태입니다 ... 나는 그들을 끄고 작동하는 지보고 놀아야 할 것입니다. (다시 말하지만, jsFiddle에서 작동하지 않습니다. 그게 문제가 아니라고 믿게 해 준다.) –

관련 문제