본문 바로가기
JavaScript

JS 10일차

by Zㅣ존수빈zz 2023. 1. 3.

# Drag and Drop

- addEventListener에서 'dragover'(드래그실행), 'drop'(파일드롭) 이벤트 사용

- Array.from() 메서드를 사용하여 fileList를 Array형태로 바꾸어준다.

- dragOverHandler 함수와 dropHandler함수 모두 안에 e.preventDefault();를 사용하여 브라우저의 기본설정인 파일열기를 실행하지 않도록 한다.

- dataTransfer는 드래그 되고 있거나 드랍되는 데이터를 표시한다.

- dataTransfer.files는 해당 데이터를 fileList로 표시한다.

    <div id="container">
        <div id="drop_zone">
            <p><i>여기</i>에 파일을 드래그 앤 드랍 하세요</p>
        </div>
    </div>

    <script>
        let dropZone = document.getElementById('drop_zone');

        dropZone.addEventListener('dragover', dragOverHandler);
        dropZone.addEventListener('drop', dropHandler);

        function dropHandler(e) {
            e.preventDefault();     // 브라우저가 파일을 열지 않음

            console.log('드랍되었습니다');
            console.log(e.dataTransfer.files);

            let files = Array.from(e.dataTransfer.files);   // fileList를 array로 바꿔줌

            for(let file of files) {
                console.log(file.name);
            }

            // ...서버에 제출
            document.getElementById('container').innerHTML = '<h1>제출되었습니다</h1>'
        }

        function dragOverHandler(e) {
            console.log('드래그 중입니다.');

            e.preventDefault();     // 브라우저가 파일을 열지 않음
        }
    </script>

# Top button

- 특정 위치까지 스크롤하면 Top버튼의 hidden클래스를 지우고, Top버튼을 클릭하면 화면의 맨 위로 자동 스크롤되도록 한다.

- style에서 html에 scroll-behavior: smooth를 적용하면 자동스크롤 될 때 부드럽게 올라가는 효과를 줄 수 있다.

- addEventListener의 이벤트로 scroll을 사용할 때 window를 대상으로 하면 됨.

- document.documentElement.scrollTop

- scrollTop는 viewport를 기준으로 가장 상단의 위치값을 반환한다.

    <style>
        html {
            scroll-behavior: smooth;
        }
        body {
            min-height: 1000px;
        }
        button {
            position: fixed;
            bottom: 1rem;
            right: 1rem;
        }
        .hidden {
            display: none;
        }
    </style>

    <p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p>
    <button class="hidden">Top</button>

    <script>
        let button = document.querySelector('button');

        window.addEventListener('scroll', (e) => {
            console.log(document.documentElement.scrollTop);

            if(document.documentElement.scrollTop < 200) {
                button.classList.add('hidden');
            } else {
                button.classList.remove('hidden');
            }
        })

        button.addEventListener('click', (e) => {
            document.documentElement.scrollTop = 0;
        })
    </script>

특정 element의 최상단 위치로 자동스크롤 하고싶을 때

  - scrollIntoView()

// html
// 버튼 클릭시 함수 실행
<button type="button" class="scrolled" onclick="f(event)">
	SCROLL
</button>

<section class="main2">
    <div class="wrapper">
        <div>
            <div>
            ...(생략)...
</section>


// Js
function f(event) {
    document.querySelector('.main2').scrollIntoView();
}
// main2 클래스의 최상단으로 자동스크롤

 

'JavaScript' 카테고리의 다른 글

[React] 컴포넌트와 props  (0) 2023.01.20
React 1일  (0) 2023.01.17
JS 9일차  (0) 2023.01.03
JS 8일차  (0) 2022.12.29
JS 7일차  (0) 2022.12.27

댓글