Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Element Dragging on Canvas</title>
- <style>
- body {
- margin: 0;
- overflow: hidden;
- }
- canvas {
- display: block;
- background-color: #f0f0f0;
- }
- </style>
- </head>
- <body>
- <canvas id="canvas"></canvas>
- <script>
- const canvas = document.getElementById('canvas');
- const ctx = canvas.getContext('2d');
- // Set canvas size to fill the screen
- canvas.width = window.innerWidth;
- canvas.height = window.innerHeight;
- // Initial position of the draggable element
- let elementX = 50;
- let elementY = 50;
- const elementWidth = 100;
- const elementHeight = 50;
- let isDragging = false;
- // Function to draw the element
- function drawElement() {
- ctx.fillStyle = 'blue';
- ctx.fillRect(elementX, elementY, elementWidth, elementHeight);
- }
- // Function to check if the mouse is over the element
- function isMouseOverElement(x, y) {
- return x > elementX && x < elementX + elementWidth &&
- y > elementY && y < elementY + elementHeight;
- }
- // Mouse event listeners
- canvas.addEventListener('mousedown', (e) => {
- const mouseX = e.clientX;
- const mouseY = e.clientY;
- if (isMouseOverElement(mouseX, mouseY)) {
- isDragging = true;
- }
- });
- canvas.addEventListener('mousemove', (e) => {
- if (isDragging) {
- elementX = e.clientX - elementWidth / 2;
- elementY = e.clientY - elementHeight / 2;
- drawCanvas();
- }
- });
- canvas.addEventListener('mouseup', () => {
- isDragging = false;
- });
- // Function to redraw the canvas
- function drawCanvas() {
- ctx.clearRect(0, 0, canvas.width, canvas.height);
- drawElement();
- }
- // Initial drawing
- drawCanvas();
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement