2010-12-28 2 views
1

CSS 레이아웃에 대한 도움이 필요합니다. 다음과 같이 설정됩니다.절대적으로 배치 된 요소에서 자동 높이를 얻으려고 내 콘텐츠 div를 얻도록 도와주십시오.

 
+--------------------+ 
| | | header  | 
|-| |--------------| 
| |nav| content | 
| | |    | 
| | |    | 
| | |    | 
| footer    | 
+--------------------+ 

따라서 nav는 모든 기본 페이지 콘텐츠 위에 떠 있어야합니다. 그것이 내가 절대적으로 자리 매김하도록 설정 한 이유입니다. 문제는 설정된 높이가없는 탐색 항목이 동적이라는 점입니다. 지금 바로 탐색 메뉴가 콘텐츠를지나 확장됩니다. 콘텐츠가 nav를 기반으로 한 자동 높이를 갖도록 수정하려면 어떻게해야합니까?

미리 감사드립니다.

http://csslayout.commercev3.com/에서 지금까지 내가 무엇을 가지고 있는지보십시오. 왼쪽 네비게이션과 콘텐츠 div가 동적 인 문제도 있습니다. 따라서 콘텐츠 div는 왼쪽 탐색 메뉴와 최소한 일치해야하고 자체 콘텐츠이기 때문에 확장해야합니다.

+0

몇 가지 코드로 시작하는 것이 좋습니다. –

답변

1

jQuery를 사용해야 할 수도있는 것처럼 들리 겠지만 다음과 같이 할 수 있습니다. 여기

$(function(){ 
    var headerHeight = $('#header').height(); 
    var navHeight = $('#nav').height(); 
    var contentHeight = navHeight - headerHeight; 
    $('#content').css('minHeight',contentHeight); 
}) 

내가 현재 유사한 솔루션을 구현하고 있기 때문에이 제안 working fiddle 우리 conclusive fiddle

입니다. 그렇지 않으면 javascript/jQuery가 없으면 순수한 CSS를 사용하여 형제 관계를 절대적으로 배치 된 요소로 결정할 수 없다는 것이 상당히 긍정적입니다.

+0

이 솔루션을 완벽하게 작동시킬 수 없습니다. 문제는 떠 다니는 왼쪽 탐색 및 콘텐츠 div가 동적이라는 것입니다. 따라서 콘텐츠는 최소한 왼쪽 탐색의 높이와 일치해야합니다. 콘텐츠 div에 더 많은 데이터가있는 경우이를 확장해야합니다. 내 말은 http://csslayout.commercev3.com/을 살펴보십시오. –

+0

#content의 속성을 height와 반대되는 min-height로 변경하여이 문제를 해결했습니다.이 변경 사항은 아직 링크 된 바이올린에 반영되지 않았습니다. – Sandwich

+0

오케이, 바이올린이 최신이며이 변화를 예증합니다. – Sandwich

0

네비게이션 메뉴에 명시적인 높이가 설정되었다고 가정하고이를 제거하고 모든 것이 잘되어야합니다 (works in this fiddle). 그렇지 않다면 코드를 붙여 넣을 수 있습니까?

+0

이것은 꽤 잘못 되었기 때문에 끔찍한 대답입니다. 그는 고정 된 값을 삭제할 수 없도록 동적이라고했습니다. 나는 당신의 대답에 투표 하겠지만 ... 나는 상관하지 않는다. – Kludge

+0

높이를 명시 적으로 선언하지 않으면 상자에 몇 개의 메뉴 항목이 있더라도 상자는 자동으로 그에 따라 조정됩니다. "정적 값 삭제"로 무엇을 참조하는지 모르겠습니다. – JakeParis

0

CSS에서 변수를 사용할 수 없기 때문에 이동 div와 관련하여 플로팅 div를 만들어야합니다 (WC3이 싫은 또 다른 이유는 원하는 것을 제공하지 못하기 때문에 필요한 부분 만 알려주고 있습니다). 항상 틀렸어. 나는 너를 너무 싫어. WC3 ...).

+0

이것은 좋은 대답이 아닙니다. 나는 그것을 투표 할 것이다. 그러나 나는 심지어 그것의 담당자를 낭비하고 싶지 않다. – JakeParis

+0

@JMC 사실 그것은 훌륭한 대답이며 프로그래머를 신경 쓰지 않는 아이보리 타워 반 지식인들의 끔찍한 문제를 해결합니다. 무엇보다도 무엇을 해야할지 정확하게 알려줍니다. 넌 내 자유가 싫어. – Kludge

0

예제 페이지를 보면 실제로는 position: absolute;이 필요하지 않은 것으로 보입니다. 탐색 상자를 float: left으로 설정하고 html을 #content div 안에 변경하십시오. Yu는 #content div의 명시적인 높이를 제거해야 할 수도 있습니다.

+0

nav가 헤더 섹션을 플로트해야하므로 어떻게 작동합니까? –

+0

js를 사용하고 싶지 않다면 가장 쉬운 해결책은 헤더 섹션 위에 떠있는 탐색 메뉴를 "가짜"로 만드는 것일 수 있습니다. – JakeParis

관련 문제