2014-09-06 4 views
0

오버플로로 #div를 가져 오는 데 문제가 있습니다. Safari 7.0.3에서 div의 특정 부분으로 이동하고 스크롤하여 스크롤하십시오.Safari 7.0.3 animate ScrollTop div가 작동하지 않습니까?

FF, Opera, Chrome에서 제대로 작동하지만 Safari에서 작동하지 않습니다. 아무도 왜이 문제를 해결할 수 있는지, 어떻게 알 수 있습니까? #menuContainer를 상대 위치 지정으로 설정해 보았지만 제대로 작동하지만 심하게 작동합니다. 때로는 작동하지 않을 수도 있고 그렇지 않을 수도 있습니다.

CSS

#menu{ 
    position:absolute; 
    display: block; 
    right: 0; 
} 

#menuContainer{ 
    position:absolute; 
    overflow: scroll; 
    width: 350px; 
    right: 0; 
} 

HTML은

$("#menuContainer").animate({scrollTop: $("li:nth-child("+varJumpTo+")").offset().top}, 500); 
+0

정말 먼저 디버그해야합니다. '.offset(). top'에서 얻는 값은 무엇입니까? 모든 요소가 발견 되었습니까? 'varJumpTo'는 당신이 기대하는 값을 포함하고 있습니까? 개발자 콘솔에 오류가 있습니까? –

+0

콘솔에 오류가 없으며 varJumpTo의 값이 정확합니다. 문제를 단순화하기 위해 코드를 줄였습니다. .offset(). top의 값은 올바르지 않습니다. (기술적으로는 #menuContainer의 모든 내용이로드되기 전에 위치가 계산되었으므로 정확합니다. 필요한 결과가 잘못되었습니다.) – SquigglePad

답변

0

좋아

<div id="menu"> 
    <div id="menuContainer"> 
     <ul> 
      <li></li> 
      <li></li> 
      <li>..... 
     <ul> 
    </div> 
</div> 

jQuery를, 나는 해결책을 발견했다.

Safari에서와 같이 모든 컨텐츠가로드 된 후 .animate() scollTop이 가장 적합합니다. 그래서 jQuery를 주위에이를 추가하면 작동합니다 필요한 목록 내에서 모든 콘텐츠를로드 할 수 있기 때문에 우리는 오프셋 사업부()의 상단() 위치를 계산하기 전에이 남았습니다 행동을했던

$(window).load(function(){ 
    $("#menuContainer").animate({scrollTop: $("li:nth-child("+varJumpTo+")").offset().top}, 500); 
}); 

.

감사합니다. 이 도움이 다른 사람을 도울 수 있기를 바랍니다. D

관련 문제