2013-06-09 6 views
11

Snap.js 플러그인을 사용하고 있습니다 - (사이드 서랍/패널을 스크롤 할 수 있습니다).절대 위치가 지정된 div 안에 고정 위치 지정 div가 필요합니다.

3 개의 절대적으로 배치 된 div를 만드는 중 하나입니다. 그 중 하나에는 주 콘텐츠가 포함되어 있습니다.

div가 절대적으로 위치한 div 안에있을 때 창의 맨 위에 고정시키는 방법이 있습니까?

지금 막 고정 div가 브라우저의 상단이 아닌 절대적으로 위치가 지정된 div의 상단에 고정되어 있습니다. 스크롤 할 때 div는 주 콘텐츠 상단에 고정되어 있지만 창에는 고정되어 있지 않습니다. 예를 들어

: 내가 스크롤 오프셋을 추적하고 수동으로 성능에 적합하지 않은 자식 DIV, 상단의 위치를 ​​조정하기 위해 자바 스크립트를 사용하고 순간

<div style="position:absolute;"> 

    <div style="position:fixed;top:0"> 
     <!-- some content which needs to be pinned to top of window --> 
    </div> 

</div> 

.

도움을 주셨습니다.

+1

절대적 위치 DIV 갖는 도포 다음 CSS : translate3d 그것을 제거하는 경우 (0 픽셀, 0 픽셀이 0 픽셀), 고정 요소는 동작이되어야하고 윈도우의 상단에 고정 된 바와 같이 . 왜 이것에 대한 아이디어가 있습니까? –

+0

그것이 바로 여러분의 예제 코드입니다. (의도 한 것입니까?) 요소에 고정 된 위치를 설정하면 문서의 흐름에서 벗어나서 뷰포트를 기준으로 요소의 위치를 ​​지정합니다. snap.js가 이것을 어기는 것을 말하고 있습니까? – BjornJohnson

+0

흥미 롭습니다. 이게 도움이 되나요? http://code.google.com/p/chromium/issues/detail?id=20574 – BjornJohnson

답변

2

참조 - 인터넷 익스플로러에서 어떤 아이디어를 스크롤 할 때 불안.

<div id="displayed-content" class="snap-content scrollable"> 
    <div><!-- regular content --></div> 
     <div><!-- fixed content --></div> 
    <div><!-- footer content --></div> 
</div> 

http://jsfiddle.net/bxRVT/

+0

여기 꽤 많은 일을했습니다. IE 성능을 향상시키는 최선의 방법을 말하기 어렵습니다. CSS3 기술의 최첨단에 서 있습니다. 내 첫 번째 추측은 변환이 jQuery .scrollTop과 잘 작동하지 않는다는 것입니다. 그러나 실제로 수행 한 작업을 개선하기위한 전체 프로젝트 일 것입니다. 나는 노력 표를 줄 것이다! –

+0

감사합니다. 더 좋은 것을 얻을 때까지 위의 구현을 사용하고 있습니다. –

0

난 당신이 뭘 하려는지에 대해 조금 추측하고 있지만, 이런 식으로 뭔가를 찾고 될 수 있습니다

<div class="local-wrap"> 
    <div class="fixed"> 
     Some content which needs to be pinned to top of window 
    </div> 
    <div class="port"> 
     Regular content... 
    </div> 
</div> 

다음과 같은 CSS 적용

.local-wrap { 
    position: relative; 
} 
.local-wrap .fixed { 
    position: absolute; 
    top: 0; 
    left: 0; 
    background-color: lightgray; 
    width: 100%; 
    height: 5.00em; 
} 
.local-wrap .port { 
    position: relative; 
    top: 5.00em; 
    min-height: 10em; 
    height: 15em; 
    overflow: auto; 
    border: 1px solid gray; 
    border-width: 0 1px 1px 1px; 
} 

데모 바이올린 : http://jsfiddle.net/audetwebdesign/pTJbW/

기본적으로 블록 요소에 대해 고정 블록을 얻으려면 절대 위치 지정을 사용해야합니다. 고정 위치는 항상 루트 요소 또는 뷰 포트를 기준으로하므로 position: fixed은 도움이되지 않습니다.

내가 수행 한 작업은 두 개의 하위 블록이있는 .local-wrap 컨테이너를 정의하는 것입니다. 하나는 이고, 다른 하나는 정상적인 흐름 인 .local-wrap의 위쪽에 배치되었습니다. position: relative을 사용하여 .fixed 아래에 위치 시켰지만 위쪽 여백도 사용했습니다.

로컬 창/포트 내에서 스크롤되는 내용을 보여주기 위해 일부 높이를 수정했지만 디자인 및 응용 프로그램에 따라 변경 될 수 있습니다. 고려해야 할 다른 고려 사항이 될 수 있도록

면책 조항

나는 snap.js에 익숙하지 않다. 만약 div.transformed를 호출하는이 요소에 변환을 적용하는 경우 CSS3에

코멘트의 CSS3 사양에 따르면

변환 소자와 고정 후 div.transformed 새로운 적층 컨텍스트를 생성하고 함유 역할 고정 된 위치의 하위 요소가 포함 된 블록을 차단합니다. 따라서 시나리오에서는 고정 된 위치 컨텍스트가 창 상단에 머물러 있지 않습니다. 참고로

, 나는 내 자바 스크립트 해결 방법을 보여주는 바이올린을했습니다 Mozilla Developer Network -> CSS Reference -> Transform

+0

불행히도 div가 창 상단에 고정되어 있어야하지만, 예제에서 .local-wrap이 스크롤되는 것처럼 창으로 스크롤해야합니다. 고정 된 위치 div를 사용하는 일반적인 방법은 작동하지만 css tranform이 절대적으로 위치한 div에서 제거되는 경우에만 작동합니다. 이 문제를 해결할 수있는 방법이 있습니까? 내가 창을 스크롤 할 때마다 부동 div 가기 CSS 속성을 조정하려면 자바 스크립트를 사용하고 있습니다 -이 일부 브라우저에서 작동하지만 다른 고르지입니다. –

+1

더 나은 http://jsfiddle.net/pTJbW/10/을 설명하기 위해 jsfiddle을 만들었습니다. 스크롤 막대가 출력에 나타날 때까지 브라우저 창을 작게 만듭니다. 고정 된 머리글을 스크롤하면 내용이 스크롤됩니다. 그러나 콘텐츠 및 업데이트에 대한 CSS에서 CSS 변환을 제거하면 머리글을 고정 할 때 스크롤되는 것을 확인할 수 있습니다. –

+0

좋은 바이올린은 그림이 훨씬 더 선명합니다. 내가 물건을 이해하면 CSS 변형 속성을 제거하면 snap.js가 작동하지 않으며 이것이 주위를 둘러 보려고하는 문제입니다. –

관련 문제