찾다
웹 프론트엔드CSS 튜토리얼HTML, CSS 및 JavaScript를 사용하여 드래그 가능한 요소 만들기

현대 웹 개발에서 상호작용은 사용자의 참여를 유도하고 역동적인 사용자 경험을 창출하는 데 핵심입니다. 상호작용성을 추가하는 한 가지 방법은 요소를 드래그 가능하게 만드는 것입니다. 이번 게시물에서는 HTML, CSS, JavaScript를 사용하여 드래그 가능한 요소를 생성하는 방법을 살펴보겠습니다.

출력:

Creating a Draggable Element Using HTML, CSS, and JavaScript

HTML 구조
기본 HTML 구조부터 시작해 보겠습니다. 드래그 가능하게 만들고 싶은 간단한 div 요소를 생성하겠습니다. 코드는 다음과 같습니다.



<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Draggable Element</title>
<link rel="stylesheet" href="styles.css">


<div class="draggable" id="draggableElement">Drag me!</div>
<script src="script.js"></script>



이 코드에는 draggable 클래스와 draggableElement ID가 있는 div가 있습니다. 이것이 드래그 가능하게 만드는 요소가 될 것입니다.

CSS를 사용하여 드래그 가능한 요소 스타일 지정

.draggable {
    position: absolute;
    cursor: grab;
    width: 100px;
    height: 100px;
    background-color: #007bff;
    color: #fff;
    text-align: center;
    line-height: 100px;
    border-radius: 8px;
    user-select: none;
}

.draggable.dragging {
    cursor: grabbing;
}

이 CSS에서는 요소의 스타일을 지정하기 위해 .draggable 클래스를 정의합니다. 페이지 내에서 자유롭게 이동할 수 있도록 위치를 절대값으로 설정했습니다. 커서 속성은 요소가 드래그 가능함을 나타내기 위해 잡기로 설정됩니다. 또한 너비, 높이, 배경색, 텍스트 색상, 텍스트 정렬 및 줄 높이를 정의하여 텍스트를 세로 및 가로 가운데에 배치합니다. 둥근 모서리에 테두리 반경이 추가되고 드래그하는 동안 텍스트 선택을 방지하기 위해 user-select: none이 사용됩니다. 자세히 보기

JavaScript로 상호작용 추가

let draggableElement = document.getElementById('draggableElement');
let offsetX, offsetY;

draggableElement.addEventListener('mousedown', startDragging);
draggableElement.addEventListener('mouseup', stopDragging);

function startDragging(e) {
    e.preventDefault();
    offsetX = e.clientX - draggableElement.getBoundingClientRect().left;
    offsetY = e.clientY - draggableElement.getBoundingClientRect().top;
    draggableElement.classList.add('dragging');
    document.addEventListener('mousemove', dragElement);
}

function dragElement(e) {
    e.preventDefault();
    let x = e.clientX - offsetX;
    let y = e.clientY - offsetY;
    draggableElement.style.left = x + 'px';
    draggableElement.style.top = y + 'px';
}

function stopDragging() {
    draggableElement.classList.remove('dragging');
    document.removeEventListener('mousemove', dragElement);
}

드래깅 시작: 사용자가 요소에서 마우스 버튼을 누를 때 startDragged 함수가 트리거됩니다. 이 기능은:

  1. e.preventDefault()를 사용하여 이벤트의 기본 동작을 방지합니다.
  2. 마우스 위치에서 요소의 왼쪽 상단 모서리 위치를 빼서 오프셋을 계산합니다.
  3. 커서를 변경할 수 있는 드래그 클래스를 추가합니다.
  4. 문서에 mousemove 이벤트에 대한 이벤트 리스너를 추가하여 dragElement 함수를 트리거합니다.

드래그 요소: 마우스가 움직일 때 dragElement 함수가 실행됩니다. 이 기능은:

  1. 이벤트의 기본 동작을 방지합니다.
  2. 마우스 위치와 오프셋을 기반으로 요소의 새 위치를 계산합니다.
  3. 요소의 왼쪽 및 위쪽 CSS 속성을 업데이트하여 새 위치로 이동합니다.

드래깅 중지: 사용자가 마우스 버튼을 놓으면 stopDragged 기능이 실행됩니다. 이 기능은:

  1. 드래그 클래스를 제거하여 커서를 원래 상태로 되돌립니다.
  2. 문서에서 mousemove 이벤트 리스너를 제거하여 드래그를 중지합니다. 자세히 알아보기

결론:
이벤트 리스너와 DOM 조작의 기본 사항을 이해함으로써 웹 프로젝트에 상호작용성을 추가하여 사용자 경험을 향상시킬 수 있습니다.

전체 기사 읽기 - 여기를 클릭하세요

위 내용은 HTML, CSS 및 JavaScript를 사용하여 드래그 가능한 요소 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
너무 많은 색상 링크너무 많은 색상 링크Apr 13, 2025 am 11:36 AM

최근에 색상에 대한 도구, 기사 및 리소스가 많이있었습니다. 당신의 즐거움을 위해 여기에 반올림하여 몇 개의 탭을 닫을 수 있습니다.

Flexbox에서 자동 마진이 작동하는 방법Flexbox에서 자동 마진이 작동하는 방법Apr 13, 2025 am 11:35 AM

Robin은 이전에 이것을 다루었지만 지난 몇 주 동안 그것에 대해 약간의 혼란을 듣고 다른 사람이 설명하는 데 찌르는 것을 보았습니다.

움직이는 무지개가 강조합니다움직이는 무지개가 강조합니다Apr 13, 2025 am 11:27 AM

나는 샌드위치 사이트의 디자인을 절대적으로 좋아합니다. 많은 아름다운 특징 중에는 무지개가있는이 헤드 라인이 스크롤 할 때 움직이는 밑줄이 있습니다. 그것은 아닙니다

새해, 새 직업? 그리드 구동 이력서를 만들자!새해, 새 직업? 그리드 구동 이력서를 만들자!Apr 13, 2025 am 11:26 AM

많은 인기있는 이력서 디자인은 그리드 모양으로 섹션을 배치하여 사용 가능한 페이지 공간을 최대한 활용하고 있습니다. CSS 그리드를 사용하여 레이아웃을 만듭니다

너무 많이 재 장전하는 습관에서 사용자를 해소하는 한 가지 방법너무 많이 재 장전하는 습관에서 사용자를 해소하는 한 가지 방법Apr 13, 2025 am 11:25 AM

페이지 새로 고침은 일입니다. 때로는 반응이 없다고 생각하거나 새로운 콘텐츠를 사용할 수 있다고 생각할 때 페이지를 새로 고침합니다. 때때로 우리는 단지 화가났습니다

React를 사용한 도메인 구동 설계React를 사용한 도메인 구동 설계Apr 13, 2025 am 11:22 AM

React 세계에서 프론트 엔드 애플리케이션을 구성하는 방법에 대한 지침은 거의 없습니다. (“옳은 느낌”이 될 때까지 파일을 움직여도 롤). 진실

비활성 사용자 감지비활성 사용자 감지Apr 13, 2025 am 11:08 AM

대부분의 경우 사용자가 응용 프로그램에 적극적으로 참여하거나 일시적으로 비활성화되어 있는지에 대해 신경 쓰지 않습니다. 비활성, 의미, 아마도 그들

Wufoo ZapierWufoo ZapierApr 13, 2025 am 11:02 AM

Wufoo는 항상 통합으로 훌륭했습니다. 캠페인 모니터, MailChimp 및 Typekit과 같은 특정 앱과 통합이 있지만

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기