2012-04-17 4 views
0

내 페이지는 모두 고정 폭 여백 - 좌우 - 자동 레이아웃을 사용합니다.스크롤 막대가 튀어 나올 때 수평 요소 위치를 유지하기위한 해킹

.container{ 
    width:900px; 
    margin:0 auto; 
} 

여기에 약간의 문제가 있습니다. 이러한 페이지 중 일부는 창보다 높습니다. 즉, 오른쪽에 세로 스크롤 막대를 표시해야합니다. 이러한 페이지와 다른 페이지 간을 전환하면 기본 컨테이너가 약간 움직입니다 (v- 스크롤 막대의 반 너비). 상위 요소 (본문)의 너비가 변경 되었기 때문입니다.

그러나이 동작을 억제하기위한 라이브러리 또는 기존 해킹이 있다면 알 수 있습니까? (본체 (오버플로 -Y : 스크롤;} 제외)

@Mateusz에 대한 회신 :
감사합니다. 좋은 생각입니다. 나는 시험 결과가

  doc smaller than win    doc larger than win 
firefox 1012 1012 1008 1362    1012 1012 1008 1007 
chrome/ie 549 1525 545 545     549 545 545 545 

그래서 서로 다른 행동을 가지고 있습니다

console.log($('body')[0].offsetHeight+' '+$('body')[0].scrollHeight+' '+$('html'[0].offsetHeight+' '+$('html')[0].scrollHeight); 

다음 코드를 시도하고 비교 threadshods는 다르다 (1, 4).

+0

내가 아는 한, 스크롤바의 표시를 멈추는 2 가지 CSS 속성을 경험했습니다. null입니다. 너의 문제는 다른 곳에있다. 기본 브라우저 동작을 제거 할 수 없으면 이동 한 양을 감지하여 DOM을 적절하게 업데이트하고 원래 위치로 되돌릴 수 있습니다. 이 라이브러리를 제공하는 라이브러리에 대해서는 알지 못합니다. – GillesC

답변

1

element.offsetHeight와 element.scrollHeight를 비교할 수 있습니다. 여기에 따라 컨테이너의 위치를 ​​바꿉니다.

+0

정말 멋진 사람. 하지만 여기에서는 브라우저 사이에 정말 엉뚱한 흐름이 있습니다. 질문에 답장하는 것이 좋습니다. –

관련 문제