[javascript] Clipboard.js를 사용하여 웹페이지에서 특정 요소 복사 후 3D 회전 효과 추가하기

이번 포스트에서는 Clipboard.js를 사용하여 웹페이지에서 특정 요소를 복사한 다음, 해당 요소에 3D 회전 효과를 추가하는 방법을 알아보겠습니다.

Clipboard.js란?

Clipboard.js는 웹 페이지에서 클립보드에 텍스트나 HTML 요소를 복사할 수 있게 해주는 JavaScript 라이브러리입니다. 사용자가 복사 버튼을 클릭하면 클립보드에 복사할 내용을 설정할 수 있습니다.

필요한 패키지 설치

먼저, Clipboard.js를 사용하기 위해 필요한 패키지를 설치해야 합니다. 프로젝트의 루트 디렉토리에서 다음 명령을 실행하여 필요한 패키지를 설치합니다:

npm install clipboard --save

Clipboard.js를 사용하여 특정 요소 복사하기

다음으로, Clipboard.js를 사용하여 특정 요소를 복사해보겠습니다. HTML 파일에 다음과 같은 요소를 추가합니다:

<div id="copyTarget">
    복사할 요소입니다.
</div>

<button id="copyButton">복사하기</button>

그리고 JavaScript 파일에 다음과 같이 Clipboard.js를 초기화하고 복사 버튼에 클릭 이벤트를 추가합니다:

import ClipboardJS from 'clipboard';

const copyButton = document.getElementById('copyButton');
const copyTarget = document.getElementById('copyTarget');

copyButton.addEventListener('click', () => {
    const clipboard = new ClipboardJS(copyButton, {
        target: () => copyTarget
    });

    clipboard.on('success', () => {
        console.log('복사되었습니다.');
    });

    clipboard.on('error', () => {
        console.log('복사에 실패했습니다.');
    });

    clipboard.onClick();
});

위 코드에서 copyButton은 복사 버튼 요소를, copyTarget은 복사할 대상 요소를 나타냅니다. ClipboardJS 객체를 생성할 때 target 옵션에 복사할 대상 요소를 설정하여 복사가 이루어지도록 합니다. 복사가 성공하면 success 이벤트 핸들러가 호출되고, 실패하면 error 이벤트 핸들러가 호출됩니다.

이제 웹 페이지에서 복사 버튼을 클릭하면 copyTarget에 해당하는 내용이 클립보드에 복사됩니다.

3D 회전 효과 추가하기

마지막으로, 복사된 요소에 3D 회전 효과를 추가해보겠습니다. CSS 파일에 다음과 같은 스타일을 추가합니다:

.copy-rotate {
    transform: rotateY(180deg);
    transition: transform 0.5s ease;
}

.copy-rotate:hover {
    transform: rotateY(0deg);
}

그리고 JavaScript 파일의 success 이벤트 핸들러에 다음 코드를 추가합니다:

clipboard.on('success', () => {
    console.log('복사되었습니다.');
    copyTarget.classList.add('copy-rotate');

    setTimeout(() => {
        copyTarget.classList.remove('copy-rotate');
    }, 500);
});

위 코드를 추가하면, 복사가 성공하면 copyTargetcopy-rotate CSS 클래스가 추가되어 회전 효과가 적용됩니다. 0.5초 후에 copy-rotate 클래스가 제거되어 원래 상태로 돌아갑니다.

이제 웹 페이지에서 복사 버튼을 클릭하면 요소가 3D 회전 효과와 함께 복사됩니다.

마무리

이번 포스트에서는 Clipboard.js를 사용하여 웹페이지에서 특정 요소를 복사한 후, 해당 요소에 3D 회전 효과를 추가하는 방법을 알아보았습니다. Clipboard.js를 사용하면 클립보드에 내용을 쉽게 복사할 수 있으며, CSS를 이용하면 원하는 스타일을 요소에 적용할 수 있습니다. 이를 활용하여 좀 더 동적이고 흥미로운 웹 페이지를 만들어보세요!

참고 자료