2010-01-07 4 views
1

의 맨 아래에있는 경우 내가숨겨진/오버 플로우 텍스트가 상단이나 요소

How to determine from javascript if an html element has overflowing content

에 Shog9의 대답을 확장하고 싶습니다 결정하고 내가 알고 싶습니다 어떻게하면 숨겨진 텍스트 포함하는 요소의 상단 또는 하단 (또는 둘 다 또는 없음)에 있습니다.

그것에 대해 가장 좋은 방법은 무엇입니까?

+0

콘텐츠가 상위 상위에있는 경우 오버플로 요소의 예가 있습니까? 내가 생각할 수있는 유일한 시나리오는 오버플로가있는 요소 일 것입니다. 사용자가 콘텐츠를 스크롤 한 위치는 ... – Shog9

+0

예, 오버플로 : 자동은 내가 사용하고있는 것입니다. 따라서 스크롤 할 때 내용을 위아래로 숨길 수 있으며 포함하는 요소는 둘 다 없거나 전혀 포함 할 수 없습니다. 아래 내 대답을 참조하십시오. – slolife

+0

@ Shog9, 나는 우리가 콘텐츠를 스크롤하는 시나리오를 가지고 있지만 스크롤바를 사용하는 대신 정상적인 (그리고 더 예쁜) 화살표를 사용하고자한다. – trysis

답변

1

내가 나무를 통해 숲을 볼 수 없었다. Joel의 코드 스 니펫 var isScrolledDown = el.scrollTop > 0;은 내가 어떻게하는지 깨닫게했습니다. 아직 IE6 +에서 작동 있을지

function HasTopOverflow(el) { 
    return el.scrollTop; 
} 

function HasBottomOverflow(el) { 
    var scrollTop = el.scrollTop, 
     clientHeight = el.clientHeight, 
     scrollHeight = Math.max(el.scrollHeight, clientHeight); 

    return (scrollTop + clientHeight) < scrollHeight; 
} 

테스트하지 않은,하지만 FF 작동 : 나는 두 가지 기능을 사용했다.

버그가있는 경우 알려 주시기 바랍니다.

3

scrollLeftscrollTop을 Shog의 답변과 결합 할 수 있습니다. 특히

:

// Author: Shog9 
// Determines if the passed element is overflowing its bounds, 
// either vertically or horizontally. 
// Will temporarily modify the "overflow" style to detect this 
// if necessary. 
// Modified to check if the user has scrolled right or down. 
function checkOverflow(el) 
{ 
    var curOverflow = el.style.overflow; 
    if (!curOverflow || curOverflow === "visible") 
     el.style.overflow = "hidden"; 

    var isOverflowing = el.clientWidth < el.scrollWidth 
     || el.clientHeight < el.scrollHeight; 

    // check scroll location 
    var isScrolledRight = el.scrollLeft > 0; 
    var isScrolledDown = el.scrollTop > 0; 

    el.style.overflow = curOverflow; 

    return isOverflowing; 
} 
+0

Joel에게 감사드립니다. 코드가 도움이되었지만 isScrolledRight 및 isScrolledDown이이 함수에서 반환되지 않았으므로 코드를 그대로 사용할 수 없습니다. – slolife

+0

코드는 이미 완료된 것처럼 객체를 반환하거나 일련의 기능을 제공하도록 쉽게 수정됩니다. – Joel

관련 문제