source

jquery: $(추가).상단()은 스크롤하지만 $(창)는 스크롤하지 않습니다.맨 아래로 스크롤()

manycodes 2023. 8. 14. 23:00
반응형

jquery: $(추가).상단()은 스크롤하지만 $(창)는 스크롤하지 않습니다.맨 아래로 스크롤()

사용자가 페이지를 스크롤할 때마다 페이지 하단에 요소를 배치하고 싶습니다.그것은 "고정 위치"와 비슷하지만 많은 고객의 브라우저가 그것을 지원할 수 없기 때문에 "위치: 고정" CSS를 사용할 수 없습니다.

jquery가 현재 뷰포트의 최상위 위치를 얻을 수 있지만 스크롤 뷰포트의 하위 위치는 어떻게 얻을 수 있습니까?

그래서 나는 어떻게 아는지 묻고 있습니다: $(창구).맨 아래로 스크롤()

var scrollBottom = $(window).scrollTop() + $(window).height();

scrollTop의 정반대인 scrollBottom은 다음과 같아야 합니다.

var scrollBottom = $(document).height() - $(window).height() - $(window).scrollTop();

여기 저에게 맞는 작고 못생긴 테스트가 있습니다.

// SCROLLTESTER START //
var showerEl = $('<h1 id="st" style="position: fixed; right: 25px; bottom: 25px;"></h1>')
showerEl.insertAfter('body');

$(window).scroll(function () {
  var scrollTop = $(window).scrollTop();
  var scrollBottom = $(document).height() - $(window).height() - scrollTop;

  showerEl.html('scrollTop: ' + scrollTop + '<br>scrollBottom: ' + scrollBottom);
});
// SCROLLTESTER END //

미래를 위해, 저는 scrollBottom을 jquery 플러그인으로 만들었습니다. ScrollTop과 같은 방식으로 사용할 수 있습니다(즉, 숫자를 설정하면 페이지 하단에서 해당 양을 스크롤하고 페이지 하단에서 픽셀 수를 반환합니다. 또는 숫자가 제공되지 않으면 페이지 하단에서 픽셀 수를 반환합니다.)

$.fn.scrollBottom = function(scroll){
  if(typeof scroll === 'number'){
    window.scrollTo(0,$(document).height() - $(window).height() - scroll);
    return $(document).height() - $(window).height() - scroll;
  } else {
    return $(document).height() - $(window).height() - $(window).scrollTop();
  }
}
//Basic Usage
$(window).scrollBottom(500);
var scrollBottom =
    $(document).height() - $(window).height() - $(window).scrollTop();

저는 아래쪽 스크롤을 받는 것이 더 좋다고 생각합니다.

그러면 맨 위로 스크롤됩니다.

$(window).animate({scrollTop: 0});

맨 아래로 스크롤됩니다.

$(window).animate({scrollTop: $(document).height() + $(window).height()});

필요한 경우 창을 원하는 컨테이너 ID 또는 클래스로 변경합니다(따옴표로 표시).

시도:

 $(window).scrollTop( $('body').height() );

다음은 표 그리드에 대한 최상의 옵션 스크롤이며 표 그리드의 마지막 행으로 스크롤됩니다.

 $('.add-row-btn').click(function () {
     var tempheight = $('#PtsGrid > table').height();
     $('#PtsGrid').animate({
         scrollTop: tempheight
         //scrollTop: $(".scroll-bottom").offset().top
     }, 'slow');
 });
// Back to bottom button
$(window).scroll(function () {
    var scrollBottom = $(this).scrollTop() + $(this).height();
    var scrollTop = $(this).scrollTop();
    var pageHeight = $('html, body').height();//Fixed

    if ($(this).scrollTop() > pageHeight - 700) {
        $('.back-to-bottom').fadeOut('slow');
    } else {
        if ($(this).scrollTop() < 100) {
            $('.back-to-bottom').fadeOut('slow');
        }
        else {
            $('.back-to-bottom').fadeIn('slow');
        }
    }
});
$('.back-to-bottom').click(function () {
    var pageHeight = $('html, body').height();//Fixed
    $('html, body').animate({ scrollTop: pageHeight }, 1500, 'easeInOutExpo');
    return false;
});
var scrolltobottom = document.documentElement.scrollHeight - $(this).outerHeight() - $(this).scrollTop();

내 페이지의 항목:

document.getElementById(elementId).scroll(0,
 document.getElementById(elementId).scrollHeight);

function scrollBottum(elementId){
   document.getElementById(elementId).scroll(0, document.getElementById(elementId).scrollHeight);
}
<html><div><button onclick="scrollBottum('myCart')">Click me to scroll</button></div>
<div id="myCart" style="height: 50px; overflow-y: scroll;">
  <div>1: A First ...</div>
  <div>2: B</div>
  <div>3: C</div>
  <div>4: D</div>
  <div>5: E</div>
  <div>6: F</div>
  <div>7: LAST !!</div>
</div>
</html>

저는 그것을 시도했고 그것은 매우 잘 작동합니다.

scrollrev(){
    let x:any= document.getElementById('chat')
    x.scrollTop = -9000;
  }

나는 그 코드를 시도했고 그것은 작동합니다.

 // scroll top
 scroll(){
    let x:any= document.getElementById('chat')
    x.scrollTop = 9000;
  }
  // scroll buttom
  scrollrev(){
    let x:any= document.getElementById('chat')
    x.scrollTop = -9000;
  }

이것은 빠른 해킹입니다. 스크롤 값을 매우 큰 숫자에 할당하기만 하면 됩니다.이렇게 하면 페이지가 맨 아래로 스크롤됩니다.일반 Javascript 사용:

document.body.scrollTop = 100000;

언급URL : https://stackoverflow.com/questions/4655273/jquery-window-scrolltop-but-no-window-scrollbottom

반응형