首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js原生拖放拼图游戏源码

以下是一个简单的 JavaScript 原生拖放拼图游戏的源码示例:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>拖放拼图游戏</title>
  <style>
    #puzzle {
      display: grid;
      grid-template-columns: repeat(3, 100px);
      grid-gap: 5px;
    }

    .piece {
      width: 100px;
      height: 100px;
      background-color: #ccc;
      border: 1px solid #000;
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
    }
  </style>
</head>

<body>
  <div id="puzzle">
    <div class="piece" draggable="true">1</div>
    <div class="piece" draggable="true">2</div>
    <div class="piece" draggable="true">3</div>
    <div class="piece" draggable="true">4</div>
    <div class="piece" draggable="true">5</div>
    <div class="piece" draggable="true">6</div>
    <div class="piece" draggable="true">7</div>
    <div class="piece" draggable="true">8</div>
    <div class="piece" draggable="true">9</div>
  </div>

  <script>
    const puzzle = document.getElementById('puzzle');
    const pieces = puzzle.querySelectorAll('.piece');

    let draggedPiece = null;

    pieces.forEach(piece => {
      piece.addEventListener('dragstart', e => {
        draggedPiece = piece;
        e.dataTransfer.effectAllowed = 'move';
      });

      piece.addEventListener('dragover', e => {
        e.preventDefault();
        e.dataTransfer.dropEffect = 'move';
      });

      piece.addEventListener('drop', e => {
        e.preventDefault();
        if (e.target.classList.contains('piece') && e.target !== draggedPiece) {
          const temp = e.target.textContent;
          e.target.textContent = draggedPiece.textContent;
          draggedPiece.textContent = temp;
        }
      });
    });
  </script>
</body>

</html>

基础概念:

  • 拖放(Drag and Drop):允许用户通过鼠标或其他输入设备将元素从一个位置移动到另一个位置的操作。

优势:

  • 提供直观、自然的用户交互方式。
  • 增强用户体验,使操作更加便捷。

类型:

  • 基于 HTML5 的拖放。
  • 使用第三方库实现的拖放。

应用场景:

  • 拼图游戏。
  • 文件管理器中的文件移动。
  • 图片编辑中的元素排列。

常见问题及解决方法:

  • 元素无法拖动:确保设置了 draggable="true" 属性,并且添加了正确的拖动事件监听器。
  • 拖放位置不准确:在 dragover 事件中使用 e.preventDefault() 来允许放置。
  • 元素内容未正确交换:在 drop 事件中准确判断目标元素并进行内容交换。

希望这个示例能帮助您理解 JavaScript 原生拖放拼图游戏的基本实现。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Fabric.js 拖放元素进画布

    本文简介 学习 Fabric.js,我的建议是看文档不如看 demo。 本文实现的功能:将元素拖进到画布中并生成对应的图形或图片。...解2:Fabric.js 创建元素可看 《Fabric.js 从入门到膨胀》的基础图形篇,要创建图片可以看 图片篇。 解3:缩放画布我在 《Fabric.js 缩放画布》 里讲解过。...解4:移动画布我在 《Fabric.js 拖拽平移画布》 里讲解过。 解5:画布的左上角不一定在body的左上角,也就是鼠标当前位置可能和画布对应的坐标不一样,需要通过加减法计算一下。...解6:Fabric.js 提供了一个方法可以将鼠标当前坐标转换为画布对应的真实坐标,这个方法叫 restorePointerVpt 。 动手 我分几个步骤慢慢实现上述功能。...⭐ Fabric.js 拖拽创建元素

    3.3K30

    前端拾零02—H5原生拖放总结 【原创】

    前端拾零02—H5原生拖放总结 目录导航 前端拾零02—H5原生拖放总结 1. 拖放总览 2....Email: sunjianfeng@csxiaoyao.com QQ: 1724338257 前端拾零收录日常开发中一些很常见很基础的前端操作,省去每次google甚至答案错误的烦恼 github源码地址...拖放总览 前端拖放,无非通过两种方式:1、js鼠标事件监听,动态改变坐标位置;2、H5原生api。随着H5的普及,推荐使用相对简单的H5原生api实现拖放功能。..." draggable="true" ondragstart="dragstart(event)" ondrag="drag(event)" ondragend="dragend(event)"/> js...linkMove: 只允许值为”link”和”move”的dropEffect (9) all: 允许任意dropEffect 【By CS逍遥剑仙】 未经允许不得转载:禅林阆苑 » 前端拾零02—H5原生拖放总结

    1.9K20

    nw.js如何处理拖放操作

    nw.js如何处理拖放操作 其实拖放(drag-drop)操作是Html5的功能,不是nw.js的内置API,那么我们采用Html5应用一般的处理方法就可以了。...首先我们看一下一个正常的页面,直接拖放一个文件过来的效果。...nw.js会按照chrome浏览器默认处理文件的方式来处理拖放的文件,能显示的会直接显示,不能显示的会变成资源下载。 这肯定不是桌面应用想要的效果,那么Html5是如何处理拖放的呢?...1.1 如何禁用拖放操作 在Html元素上,我们可以通过ondragover和ondrop两个事件来处理文件拖放,那么和阻止其他事件行为的方法一样,我们只需要进行监听并阻止冒泡就可以了。...我们新建了一个div来处理文件拖放。

    3K50

    js书写原生ajax,JS 原生ajax写法

    原生ajax 原文链接:http://caibaojian.com/ajax-jsonp.html 一.JS原生ajax ajax:一种请求数据的方式,不需要刷新整个页面: ajax的技术核心是 XMLHttpRe...… JS原生ajax与Jquery插件ajax深入学习 序言: 近来随着项目的上线实施,稍微有点空闲,闲暇之时偶然发现之前写的关于javascript原生xmlHttpRequest ajax方法以及后来...jquery插件ajax方法,于是就行了一些总结,因 … js原生Ajax的封装与使用 一.原生Ajax代码的封装如下: (function() { var XHR = { createStandardXHR...原生ajax 主要复习了php的pdo数据库操作,和js的ajax,真麻烦,希望jquery的ajax简单点. index.php: 1 2 [代码]JS原生Ajax&comma...;GET和POST javascript/js的ajax的GET请求: Jquery学习笔记(10)–ajax删除用户,使用了js原生ajax 主要复习了php的pdo数据库操作,和js的ajax,真麻烦

    15.3K40

    HTML5 拖放API与Vue.js实战

    拖放 API 将可拖动元素添加到 HTML,使我们可以构建包含可以拖动的具有丰富 UI 元素的 Web 应用。 在本文中我们将用 Vue.js 构建一个简单的看板应用。...HTML5 拖放 API 是什么? 当用户将鼠标移到可拖动元素上时,拖动操作开始,然后将元素移动到启用拖放的元素上。 再默认情况下,唯一可拖动的 HTML 元素是图像和链接。...从拖动到释放元素的这段时间中,元素被拖放后,将会在被拖动的元素上触发两个事件:dragstart 和 dragend。 现在还不能把可拖动元素拖放到任何地方。...,将会在启用拖放的元素上触发以下事件: Dragenter:当一个元素被拖动到启用拖放的元素上时触发一次Dragover:只要元素仍然位于启用了 drop 的元素上,就会连续触发Drop:在把拖动的元素拖放到启用了拖放的元素上之后触发...总结 在本文中,我们介绍了什么是 HTML 5 拖放 API ,如何使用,以及如何在 Vue.js 中实现。 拖放功能也可以在其他前端框架和原生 JavaScript 中使用。

    4.3K10

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券