boseok-note
  • README
  • javascript
    • 함수형 자바스크립트
    • core
      • 이벤트루프 (Event Loop)
      • boxing, unboxing
      • prototype
      • 실행컨텍스트
      • hoisting
      • 클로져(Closure)
      • arguments
      • Scope - 스코프 - 유효범위
    • api
      • Promise
      • Fetch API
      • worker-api
      • Web API
    • lib
      • rxjs
        • rxjs
    • 호스트객체?
    • es6
      • var-let-const
      • template-literals
      • async-await
    • tip
      • array-like
      • Object literal, new Object
    • dom-api
      • HTML Element get Text
      • get-size
      • scrollToBottom
    • for in, for of 차이
    • storage
    • Constructor (생성자)
    • Javascript
    • module
  • front-end
    • vuejs
      • vue-rx
      • README
        • 1-start
        • 2-basic-component
        • 3-add-component
        • 4-advanced-component
        • 5-dynamic-methods-event
        • 6-internal-process
      • next-tick
      • compare-react
      • v-model-with-props
      • v-for
      • vuejs
      • vuex
    • browser
      • dom
      • cssom
      • reflow, repaint
      • 렌더링 트리(Rendering Tree)
      • web-standard
    • css
      • text-ellipse
      • white-space
      • css layout
    • Pre-render
    • react-native
      • react-native
    • 최적화 관련
    • reactjs
      • performance
      • reactjs
    • CSR, SSR
  • server-side
    • letsencrypt
    • auto-deploy
    • nlb
    • Certbot, aws https setting with wildcard
    • mysql
    • node.js
      • npm
        • npm install
      • node-dynamodb
      • node에서 간편하게 letsencrypt를 사용하여 https 구현하는 방법
    • Docker
    • nginx
    • Amazon Web Service
    • nginx https 설정
  • design-pattern
    • observer
    • flux
    • README
  • coop
    • git
      • gitignore
      • remote
      • ssh key 사용하기
      • password
      • credential
      • git
  • cs
    • port
    • data-structure
      • tree
      • binary-tree
    • network
      • home-router
      • tcp-udp
      • http
    • process
  • etc
    • sync-async
    • seo
      • seo
      • SEO Check Point
    • rest
    • unity
      • methods
Powered by GitBook
On this page
  1. javascript
  2. dom-api

scrollToBottom

프론트어플리케이션을 개발하다보면, 특정 엘리먼트 위치로 스크롤하거나, 제일 하단, 상단스크롤이 필요할때가 많죠.

거기에 바로 이동되는게 아니라, 스크롤이되면서 부드럽게 이동하려면.. 구현방법을 모르면 머리아파집니다.

쉽게 구현해봅시다.

우선 제일 하단으로 스크롤하는 함수입니다.

export const scrollToBottom = element => {
  const el = element ? element : window;
  el.scrollBy({top: el.scrollHeight || 99999, behavior: 'smooth'});
};

스크롤영역을 가진 엘리먼트를 파라미터로 넘기면 그 엘리먼트가 스크롤되고, 아니면 전체화면이 스크롤되도록 구현했습니다.

아래함수는 특정 엘리먼트가 가장 상단에 보이도록 스크롤합니다.

export const scrollToElement = (element, block = 'start') => {
  if(!element)
    throw Error('no element');
  element.scrollIntoView({ block,  behavior: 'smooth' });
};

파라미터로 엘리먼트, block이 있는데, 엘리먼트는 화면에 보여져야할 엘리먼트이고,

블록은 start, end 문자열을 넣으면 됩니다. 안넣으면 디폴트로 start입니다.

end옵션을 주면, 해당엘리먼트가 스크롤영역 가장 하단에 보이게됩니다.

신기(?)하게도 스크롤영역이 여러개여도, 알아서 해당엘리먼트가 있는 스크롤영역을 찾아서 스크롤합니다.

Previousget-sizeNextfor in, for of 차이

Last updated 6 years ago