2012-01-09 2 views
1

페이지의 모든 요소가 절대 위치로 설정되었습니다. 모든 정수입니다. Chrome은 올바른 위치를 알려주지 만 상위 100 왼쪽 15, jQuery는 매우 이상한 좌표 99.99999332427979 왼쪽 상단 15.454545021057129를보고합니다. 뭐라 구요?jQuery가 위쪽/왼쪽 위치를 잘못보고합니다.

편집 : 몇 가지 알려지지 않은 이유로 정확한 정수를보고하면 완벽하게 작동합니다. 나는 정말로 무슨 일이 일어나고 있는지 모르지만, 그것들은 jquery position()에서 float로 파싱되기 때문에 margin-top, margin-left, border-top-width 및 border-left- width와 관련이있다. 기능. 필자의 경우 애니메이션을 사용하지 않으므로이 문제는 애니메이션과 관련이 없습니다.

+1

위치를 가져 오는 요소에서 애니메이션이 실행되고 있습니까? 그것은'animate()'메소드의 반올림 오류처럼 들립니다. –

+1

코드를 보지 않고서도 알 수 없습니다. #wrapperDiv 위치가 relative인지 확인하십시오. – SMacFadyen

+0

다른 사람들과 마찬가지로 일부 코드를 보는 데 도움이되지 않습니다. 예를 들어, .position()과 .offset()이 모두 [이 예] (http://jsfiddle.net/MV6Dh/)에 정확한 좌표를 제공합니다. – Alex

답변

1

짐작할 수 있겠지만 jQuery에서 수레와 계산과 관련이 있다고 생각합니다.

플로트는 숫자가 들어있는 데이터 형식입니다. 숫자가 큰 큰 숫자 또는 숫자. 숫자를 살펴보면 jQuery가 수레를 사용하고 있음을 확신합니다.

플로트에 관한 사실이 거의 없습니다. 정확하지 않습니다. 매우 부정확 한 숫자가 종종 발생합니다.

Google은 위치를 계산할 때보다 정확한 데이터 유형을 사용합니다. 왜 jQuery가 정확한 데이터 유형을 사용하지 않는지 궁금합니다. 사실 아주 쉬운 질문입니다. jQuery는 모든 종류의 데이터 (픽셀, 점, 퍼센트 등)를 사용하는 십진수 (easing numbers)를 산출하는 계산을 사용합니다. jQuery가 정수만 사용하고 퍼센트로만 작업한다면 꽤 못생긴 애니메이션을 얻을 수 있습니다. 그래서 jQuery가 수레를 사용하고 있다고 생각합니다.

마지막으로 jQuery 애니메이션의 거리는 거리와 시간을 사용하여 계산됩니다. 즉, jQuery가 DOM을 초당 60 번 "업데이트"하고 요소를 초당 60 픽셀 이동하려는 경우 모든 "업데이트"에서 요소를 한 픽셀 씩 이동합니다. 그러나 요소를 1 초에 61 픽셀 이동하려는 경우 dodgy 숫자가 될 것임을 알기가 어렵다고 생각하지 않아도됩니다. 요소가 초당 1.01666667 픽셀을 이동합니다. 이것은 jQuery가 수레를 사용하는 이유를 설명합니다 ...

나는 정말로 당신이 그것에 관해 할 수있는 것이 거의 없다는 것을 알고 있습니다. 숫자를 반올림 할 수 있습니다.

+0

예, 숫자를 반올림하는 것은 쉽습니다. 그러나 그것은 CSS 스프라이트가 이상하게 보이는 것에 의존합니다. – Ethan

+0

jQuery를 다시 작성하거나 부정확 한 "고정"방법을 알고 싶지 않는 한, 다른 방법으로는 할 수있는 것이 없다고 생각합니다. –

+0

질문을 편집했습니다. – Ethan

관련 문제