문제

저는 Javascript로 간단한 게임 엔진을 작업하고 있습니다. (미친 일이죠.) Opera의 스크린샷: http://img406.imageshack.us/img406/5818/gamek.jpg타일 ​​엔진처럼 보이지만 실제로는 객체 기반입니다.회색 블록의 각 행이나 열은 보기 영역(빨간색 테두리가 있는 상자)을 기준으로 배치된 단일 <div>입니다.보기 영역이 오버플로되었습니다.숨겨져 있으므로 개체가 외부에 표시되지 않습니다.

그러나 Opera는 대부분이 잘렸음에도 불구하고 이러한 개체의 전체 높이를 전체 페이지 높이에 추가합니다.스크롤바가 표시되지 않고 <html> 요소 주위의 파란색 윤곽선이 아래로 이동하지 않기 때문에(또는 <body> 요소에 배치해도) 궁금합니다.그러나 아래쪽 화살표를 누르면 해당 개체가 잘렸음에도 불구하고 해당 개체의 아래쪽이 화면에 나타날 때까지 페이지가 아래로 스크롤됩니다.이러한 개체를 제거하면 문제가 해결되고 게임에서 남쪽으로 이동하면 개체가 다시 위로 이동하여 페이지 높이가 줄어들기 때문에 페이지가 다시 위로 스크롤되기 때문에 이것이 사실이라고 말할 수 있습니다.

저는 Opera 10을 사용하고 있는데 9에서도 같은 문제가 발생했습니다.Firefox는 잘 처리합니다.이 문제를 어떻게 해결하거나 해결합니까?내가 생각할 수 있는 CSS 속임수는 없었으며 매 프레임마다 scroll(0,0)을 호출하는 것은 훨씬 더 나빴습니다. 페이지가 "맨 아래"로 점프한 다음 다시 맨 위로 돌아갑니다.

도움이 되었습니까?

해결책

Overflow:Hidden으로 의도된 콘텐츠로 스크롤할 수 있다는 것은 Opera의 알려진 버그입니다.

이제 처리하면 키 누름 JavaScript로 이벤트를 실행하고 화살표 키를 눌러 event.preventDefault()를 호출하면 스크롤이 방지됩니다.(keydown 이벤트의 기본 동작을 방지하는 데 작동하지 않으며 키를 눌러야 합니다).그게 도움이 되나요?

다른 팁

사파리에서도 이런 문제가 발생하나요?그렇다면 WebKit 관련 결함일 수 있습니다.

아니면 아마도 max-height 해당 요소 때문에 해당 개체가 브라우저 창 크기를 조정하지 못할 수 있습니다.

소스코드도 있으면 좋을 것 같아요=)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top