2014-12-31 7 views
0

아래 사이트는 각 섹션에서 고정 된 배경 이미지를 사용하지만 각 섹션에 고정 된 콘텐츠 (텍스트, 이미지)를 추가하고 동일한 스크롤 효과를 유지하려면 어떻게해야합니까?고정 콘텐츠 스크롤 레이아웃

http://jsfiddle.net/w919y0gb/

내 시도 :

#wrapper { 
    position: relative; 
    height: 500px; 
    width: 500px; 
    overflow: scroll; 
} 
.section { 
    position: relative; 
    height: 100%; 
    width: 100%; 
} 
.content { 
    position: fixed; 
} 

#s1 { 
    background-color: #f00; 
} 
#s2 { 
    background-color: #0f0; 
} 
#s3 { 
    background-color: #00f; 
} 
#s1 .content { 
} 
#s2 .content { 
    margin-top: -400px; 
} 
#s3 .content { 
    margin-top: -800px; 
} 

<div id="wrapper"> 

    <div class="section" id="s1"> 
     <div class="content">hello1</div> 
    </div> 

    <div class="section" id="s2"> 
     <div class="content">hello2</div> 
    </div> 

    <div class="section" id="s3"> 
     <div class="content">hello3</div> 
    </div> 

</div> 

내가 원하는 무엇 :

http://tympanus.net/Blueprints/ScrollingLayout/

내가 원하는 무엇의 더 나은 아이디어를 얻을 내 예에서보세요 첫 번째 섹션 (빨간색)은 "hello1"만 표시해야합니다.

01 23,516,

제 (녹색) 만 "hello2"

번째 (청색) 만 "hello3"

답변

0

즉, 기준 위치가 단순히과 같이 fixedbackground-image 세트를 사용한다 :

FIDDLE

업데이트

알았습니다. 당신은 JQuery와 및 $(window).scroll() 기능 같은 것을 할 필요가있을 것이다 : positon: fixed를 사용

NEW FIDDLE

단지 문서의 흐름에서 요소를 분해하고 당신이 필요하므로이 부모에 포함 할 수 없다 absolute을 사용하고 scrollTop을 기준으로 배치하여 고정 모양으로 만듭니다.

+0

빠른 답장을 보내 주셔서 감사합니다.하지만 내 생각을 이해하지 못했다고 생각합니다. 정확하게 텍스트를 표시하려고합니다. 첫 번째 이미지에는 hello1 만, 두 번째에는 안녕하세요 2 ... – bonell96

+0

@ bonell96 이해, 내 대답을 업데이트했습니다 – jmore009

+0

니스, 고마워요! : D 다른 답변이 없으면 해결책으로 받아 들일 것입니다. – bonell96

0

이와 비슷한 부분 은요? 해키 작은, 그러나 않습니다 트릭 당신이 설정 한 경우 섹션 높이 :

$(document).ready(function(){ 
    $('.div3').hide(); 
    $('.div2').hide(); 
    $('.div1').show(); 
    $('#wrapper').scroll(function(){ 
     console.log($('#wrapper').scrollTop()); 
     if($('#wrapper').scrollTop() > 945){ 
      $('.div3').show(); 
      $('.div2').hide(); 
      $('.div1').hide(); 
     } 
     else if ($('#wrapper').scrollTop() > 465) { 
      $('.div3').hide(); 
      $('.div2').show(); 
      $('.div1').hide(); 
     } 
     else { 
      $('.div3').hide(); 
      $('.div2').hide(); 
      $('.div1').show(); 
     } 
    }); 
}); 

업데이트 바이올린이와 http://jsfiddle.net/w919y0gb/3/

은 또한에있을 "hello1/hello2/hello3"의 위치를 ​​수정할 수 있습니다 다른 장소가 아닌 같은 위치. 또는 스크롤 위치에 따라 hello1/hello2/hello3의 텍스트를 수정/대체하는 div를 하나만 가질 수 있습니다. 이 도움이되기를 바랍니다!

+0

고맙습니다.하지만 귀하의 메튜 (mehtod)로 모든 콘텐츠가 항상 존재하고 대신 겹쳐지는 대신 특정 위치에서 팝업됩니다. 예 : 내용에 이라는 이미지를 놓은 경우 전체 이미지를 특정 위치에만 표시 할 수 있으며 오버레이 효과가 작동하지 않습니다. 자신을 설명 할 수 있기를 바랍니다. – bonell96

0

웹 페이지의 높이를 설정 한 다음 위 또는 아래로 스크롤 할 때 div를 표시 할 수도 있습니다. Heres는 작동 예 : http://jsfiddle.net/ZyKar/1738/ 당신이 픽셀의 일정 금액을 스크롤 한 후

$(document).scroll(function() { 
     var y = $(this).scrollTop(); 
     if (y > 0 && y < 400) { 
      $('#s1').fadeIn(); 
      $('#s3').fadeOut(); 
      $('#s2').fadeOut(); 
     } else if (y > 400 && y < 800) { 
      $('#s1').fadeOut(); 
      $('#s2').fadeIn(); 
      $('#s3').fadeOut(); 
     }else if (y > 800) { 
      $('#s3').fadeIn(); 
      $('#s2').fadeOut(); 
     } 

    }); 

, div의이 나타 서로를 대체하기 시작합니다.

바이올린에 표시된 것처럼 신체의 높이를 css로 설정하여 y의 값을 변경할 수 있습니다. 그런 다음 jQuery의 픽셀 조건을 원하는대로 설정할 수 있습니다.

+0

내가 뭘 찾고 있었는지는 모르지만 멋진 효과가 있습니다. 팁 주셔서 감사합니다! :) – bonell96

관련 문제