2017-05-11 12 views
0

모바일 웹 사이트에 대한 채팅이 있으며 채팅 거품 크기로는 em 단위를 사용하고 있습니다. 그렇기 때문에 요소는 항상 원형이 아닌 것처럼 보입니다 (예 : 510.673). 정확한 크기를 알아야 특정 단추를 표시 할시기를 알 수 있으며 언제 대화에서 이전 채팅 메시지를로드 할 수 있습니까? 사업부의 상단에 도달하면 여기em 단위를 사용하여 div 스크롤 및 높이를 정확하게 측정하는 방법은 더 어렵습니다.

<div class="chat-window"> 
    <div id="chatWindow" class="item-content" style="height: 100%; overflow: auto;"> 
</div> 

overflow: auto; 때문에없이 필요한 HTML을, 내가 전화를받지 않습니다. 여기

는이 chatWindow 요소

$('#chatWindow').on('scroll', onScroll); 

에 이벤트로 부착이 채팅 거품이 때의 모양을

onScroll() { 
     const chatWindow = $('#chatWindow'); 
     const scrollTop = chatWindow.scrollTop(); 
     const scrollHeight = chatWindow[0].scrollHeight; 
     const clientHeight = chatWindow[0].clientHeight; 
     if (scrollTop <= 0) { 
      // When top is reached 
      isInBottom = false; 
      // more code 
     } else if (scrollTop + clientHeight >= scrollHeight) { 
      // When bottom is reached 
      isInBottom = true; 
      // more code 
     } else { 
      // When anywhere else 
      isInBottom = false; 
     } 
    } 

그래서이있는 onScroll 기능입니다, 자바 스크립트입니다 그들은 단위와 함께 있습니다 enter image description here

그들은 스크롤 번호를 계산할 수 없으므로 정확하게 늦게.

나는 chatWindow[0].clientHeight 대신에 chatWindow[0].getBoundingClientRect().height으로 시도했지만, 그 하나의 매개 변수에 대해서만, 다른 두 개는 부동 소수점을 가진 정확한 숫자가 필요합니다.

어떻게하면됩니까?

+0

은 _ "나는 정확한 크기를 알 필요가 있으므로 특정 버튼을 표시 할 때 알 수 있고, 내가 그 대화에서 이전의 채팅 메시지를로드 시작할 때"_ - 왜 정확한 "필요 "그 가치? ("정확한", btw. - 510.673의 이상한 이해는 여기에서 _exact_ 값이 될 것이고, 당신은 다른 것을 원할 것입니다.) 평등을 사용하여 스크롤 위치를 비교하지 않았습니까? 이를 위해서는 일반적으로 비교보다 크거나 작은 것을 사용합니다. – CBroe

답변

0

더 자세히 설명해 주시겠습니까?

chatWindow [0] .getBoundingClientRect()는 키로 '높이'를 갖는 객체를 반환합니다.

chatWindow[0].getBoundingClientRect().height === chatWindow[0].clientHeight 

나머지 개체의 값은 ViewPort와 관련이 있습니다. 이것은 당신의 계산에도 영향을 미칠 것입니다.

https://developer.mozilla.org/en/docs/Web/API/Element/getBoundingClientRect

+0

예, chatWindow [0] .getBoundingClientRect(). height를 의미합니다. 그것은 510.8125를 반환하고 chatWindow [0] .clientHeight는 510 –

+0

을 더 연구했습니다. 의심 스럽지만 현재 부분 스크롤 오프셋이 지원됩니다. 읽기, 주 스레드 터치 스크롤은 분수 오프셋을 지원하지 않습니다. https://bugs.chromium.org/p/chromium/issues/detail?id=414283 –

+0

또한 https : //developer.mozilla .org/ko-ko/docs/Web/API/Window/scrollY, "실제로는 문서가 현재 세로로 스크롤되는 픽셀 수를 나타내는 배정 밀도 부동 소수점 값이 반환됩니다 여기서 양수 값은 내용이 위로 스크롤되는 것을 의미합니다.문서가 서브 픽셀 정밀 장치 상에 렌더링되는 경우, 반환 값도 서브 픽셀 정밀이며 소수 요소를 포함 할 수 있습니다. 문서가 왼쪽 또는 오른쪽으로 모두 스크롤되지 않으면 scrollY가 0입니다. " –