Home > Web Front-end > HTML Tutorial > How to implement drag-and-drop layout using HTML and CSS

How to implement drag-and-drop layout using HTML and CSS

WBOY
Release: 2023-10-21 10:19:50
Original
1445 people have browsed it

How to implement drag-and-drop layout using HTML and CSS

How to use HTML and CSS to implement drag-and-drop layout

Drag-and-drop layout is a common and practical web page layout method that allows users to drag and drop with the mouse way to adjust the position of elements on the page. In this article, we will introduce how to use HTML and CSS to implement this drag-and-drop layout, and provide some specific code examples for reference.

The key technology to implement drag-and-drop layout is to use the Drag and Drop API in HTML5, as well as the position attribute and transform attribute in CSS. The following is a step-by-step implementation process:

Step 1: HTML structure
First, we need to create a draggable container and some draggable elements in HTML. This can be achieved through the following code:

<div id="container">
  <div class="draggable">元素1</div>
  <div class="draggable">元素2</div>
  <div class="draggable">元素3</div>
  <div class="draggable">元素4</div>
</div>
Copy after login

Step 2: CSS style
Next, we need to use CSS to set the style of the container and elements. It can be set by the following code:

#container {
  width: 400px;
  height: 300px;
  border: 1px solid #ccc;
  position: relative;
}

.draggable {
  width: 100px;
  height: 100px;
  background-color: #f00;
  position: absolute;
  left: 0;
  top: 0;
  cursor: move;
}
Copy after login

Step 3: JavaScript code
Finally, we need to use JavaScript to implement the drag and drop function. This can be achieved through the following code:

var draggables = document.getElementsByClassName('draggable');
var container = document.getElementById('container');

for (var i = 0; i < draggables.length; i++) {
  draggables[i].addEventListener('dragstart', function (e) {
    e.dataTransfer.setData('text/plain', null);
    e.target.style.opacity = '0.5';
  });

  draggables[i].addEventListener('dragend', function (e) {
    e.target.style.opacity = '1';
  });
}

container.addEventListener('dragover', function (e) {
  e.preventDefault();
});

container.addEventListener('drop', function (e) {
  e.preventDefault();
  var offsetX = e.clientX - container.getBoundingClientRect().left;
  var offsetY = e.clientY - container.getBoundingClientRect().top;
  var draggable = document.createElement('div');
  draggable.className = 'draggable';
  draggable.style.left = offsetX + 'px';
  draggable.style.top = offsetY + 'px';
  container.appendChild(draggable);
  draggable.addEventListener('dragstart', function (e) {
    e.dataTransfer.setData('text/plain', null);
    e.target.style.opacity = '0.5';
  });

  draggable.addEventListener('dragend', function (e) {
    e.target.style.opacity = '1';
  });
});
Copy after login

In the above code, we first add dragstart and dragend events to each draggable element to adjust the style of the element. Then, we added dragover and drop events to the container element to receive the dragged element and place it at the specified location.

So far, we have successfully implemented a simple drag-and-drop layout. Users can drag elements to change their position in the container to achieve a custom layout.

I hope this article will help you understand how to use HTML and CSS to implement drag-and-drop layout. The above code is for reference only, you can modify and expand it according to actual needs.

The above is the detailed content of How to implement drag-and-drop layout using HTML and CSS. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template