jQuery实现拼图小游戏(实例讲解)


Posted in jQuery onJuly 24, 2017

小熊维尼拼图

jQuery代码实现拼图小游戏,鼠标选中拼块,用上下左右键移动拼块。

jQuery实现拼图小游戏(实例讲解)jQuery实现拼图小游戏(实例讲解)jQuery实现拼图小游戏(实例讲解)
jQuery实现拼图小游戏(实例讲解)jQuery实现拼图小游戏(实例讲解)jQuery实现拼图小游戏(实例讲解)
jQuery实现拼图小游戏(实例讲解)jQuery实现拼图小游戏(实例讲解)jQuery实现拼图小游戏(实例讲解)

html代码

<div id="box-div">
  <!--走不通时的提示!-->
  <div id="tips">
    <p>\(?-?)/ 哎呦,走不通啦!</p>
  </div>
  <div id="container">
    <div class="row">
      <div class="unit"><img src="http://yn321.cn3v.net/images/weini_part_01.png" alt="photo1"/></div>
      <div class="unit"><img src="http://yn321.cn3v.net/images/weini_part_02.gif" alt="photo2"/></div>
      <div class="unit"><img src="http://yn321.cn3v.net/images/weini_part_03.gif" alt="photo3"/></div>
    </div>
    <div class="row">
      <div class="unit"><img src="http://yn321.cn3v.net/images/weini_part_04.gif" alt="photo4"/></div>
      <div class="unit"><img src="http://yn321.cn3v.net/images/weini_part_05.gif" alt="photo5"/></div>
      <div class="unit"><img src="http://yn321.cn3v.net/images/weini_part_06.gif" alt="photo6"/></div>
    </div>
    <div class="row">
      <div class="unit"><img src="http://yn321.cn3v.net/images/weini_part_07.gif" alt="photo7"/></div>
      <div class="unit"><img src="http://yn321.cn3v.net/images/weini_part_08.gif" alt="photo8"/></div>
      <div class="unit"><img src="http://yn321.cn3v.net/images/weini_part_09.gif" alt="photo9"/></div>
    </div>
  </div>
</div
#box-div {
  position: relative;
  width: 508px;
  height: 631px;
  margin: 0 auto;
}

#container {
  width: 508px;
  height: 631px;
  margin: 0 auto;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  border: 1px solid #d5e0e6;
}

#container > .row {
  display: -webkit-box;
  white-space: nowrap;
}

#container > .row > .unit {
  width: 169px;
  height: 209px;
  display: inline-block\9;/*兼容IE9/10*/
  vertical-align: top\9;/*兼容IE9/10*/
  box-sizing: border-box;
  border: 1px solid rgba(7, 157, 239, 0);
}

#container > .row > .unit.move {
  border: 1px solid rgba(7, 157, 239, 1);
}

#tips {
  width: 200px;
  height: 50px;
  background: rgb(152, 206, 50);
  position: absolute;
  z-index: 5;
  top: -50px;
  left: calc(50% - 100px);
  opacity: 0;
}

#tips > p {
  margin: 0;
  line-height: 50px;
  text-align: center;
  color: white;
}
.directions{
  width:50%;
  margin:0 auto;
  text-align: center;
  line-height: 30px;
  color: white;
  background-color: #a7cbf0;
}

jquery代码

$("#container>.row>.unit>img").each(function () {
  $(this).click(function (event) {
    event.stopPropagation();
    $(".unit").removeClass("move");
    $(this).parent(".unit").addClass("move");
  })
});
move(".move","#tips");
function move(className,idName) {
  /* 提示信息 */
  function tipsAlert(idName) {
    $(idName).animate({top: "0", opacity: "1"}, 500);
    setTimeout(function () {
      $(idName).animate({top: "-50px", opacity: "0"}, 800);
    }, 1000)
  }
  /* 上下左右按键移动 */
  $(document).keydown(function (e) {
    var code = e.keyCode;
    if (code > 40 || code < 37) {
      return false;
    }
    var prev = $(className)[0].previousElementSibling;//选中元素前置位元素是否存在,以此判断元素是否还可以左右移动
    var next = $(className)[0].nextElementSibling;//选中元素后置位元素是否存在,以此判断元素是否还可以左右移动
    var paprev = $(className).parent()[0].previousElementSibling;//选中元素父级前置位元素是否存在,以此判断元素是否还可以上下移动
    var panext = $(className).parent()[0].nextElementSibling;//选中元素父级后置位元素是否存在,以此判断元素是否还可以上下移动
    var index = $(className).index();//根据选中元素的索引值,来确定上下移动时对换的位置
    var movenDiv = $(className).next()[0];//以此确定上下对换元素添加方式
    var movepDiv = $(className).prev()[0];//以此确定上下对换元素添加方式
    switch (code) {
      case 37://左
        if (prev) {
          $(className).insertBefore(prev);
        } else {
          tipsAlert(idName);
        }
        break;
      case 38://上
        if (paprev) {
          var exchangeTop = $(paprev).children()[index];
          $(className).insertBefore(exchangeTop);
          if (movenDiv) {
            $(exchangeTop).insertBefore(movenDiv);
          } else {
            $(exchangeTop).insertAfter(movepDiv)
          }

        } else {
          tipsAlert(idName);
        }
        break;
      case 39://右
        if (next) {
          $(className).insertAfter(next);
        } else {
          tipsAlert(idName)
        }
        break;
      case 40://下
        if (panext) {
          var exchangeBottom = $(panext).children()[index];
          $(className).insertBefore(exchangeBottom);
          if (movenDiv) {
            $(exchangeBottom).insertBefore(movenDiv);
          } else {
            $(exchangeBottom).insertAfter(movepDiv)
          }
        } else {
          tipsAlert(idName);
        }
        break;

    }
  });


}

以上这篇jQuery实现拼图小游戏(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jquery实现图片平滑滚动详解
Mar 22 jQuery
基于jquery实现二级联动效果
Mar 30 jQuery
jQuery zTree树插件动态加载实例代码
May 11 jQuery
jQuery Ajax 实现分页 kkpager插件实例代码
Aug 10 jQuery
简单实现jquery隔行变色
Nov 09 jQuery
jquery-file-upload 文件上传带进度条效果
Nov 21 jQuery
jquery获取transform里的值实现方法
Dec 12 jQuery
jQuery实现ajax回调函数带入参数的方法示例
Jun 26 jQuery
jQuery轮播图实例详解
Aug 15 jQuery
jQuery中DOM操作原则实例分析
Aug 01 jQuery
JQuery插件tablesorter表格排序实现过程解析
May 28 jQuery
jQuery实现查看图片功能
Dec 01 jQuery
jquery实现下拉菜单的手风琴效果
Jul 23 #jQuery
jQuery.Ajax()的data参数类型详解
Jul 23 #jQuery
JavaScript之事件委托实例(附原生js和jQuery代码)
Jul 22 #jQuery
浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
Jul 22 #jQuery
JQuery和html+css实现带小圆点和左右按钮的轮播图实例
Jul 22 #jQuery
js案例之鼠标跟随jquery版(实例讲解)
Jul 21 #jQuery
基于jQuery实现手风琴菜单、层级菜单、置顶菜单、无缝滚动效果
Jul 20 #jQuery
You might like
PHP 中执行排序与 MySQL 中排序
2009/04/21 PHP
php中配置文件操作 如config.php文件的读取修改等操作
2012/07/07 PHP
PHP与以太坊交互详解
2018/08/24 PHP
CheckBox 如何实现全选?
2006/06/23 Javascript
Javascript的构造函数和constructor属性
2010/01/09 Javascript
ExtJs GridPanel简单的增删改实现代码
2010/08/26 Javascript
javascript使用eval或者new Function进行语法检查
2010/10/16 Javascript
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
jQuery 自定义函数写法分享
2012/03/30 Javascript
Extjs Label的 fieldLabel和html属性值对齐的方法
2014/06/15 Javascript
Javascript编写俄罗斯方块思路及实例
2015/07/07 Javascript
js中 计算两个日期间的工作日的简单实例
2016/08/08 Javascript
JS创建对象的写法示例
2016/11/04 Javascript
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
Java设计中的Builder模式的介绍
2018/03/22 Javascript
Vue拖拽组件开发实例详解
2018/05/11 Javascript
LayerClose弹窗关闭刷新方法
2018/08/17 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
2018/08/22 Javascript
Vue动态加载异步组件的方法
2018/11/21 Javascript
jquery向后台提交数组的代码分析
2020/02/20 jQuery
Vue项目打包部署到apache服务器的方法步骤
2021/02/01 Vue.js
Python不规范的日期字符串处理类
2014/06/10 Python
python web框架 django wsgi原理解析
2019/08/20 Python
python3 pillow模块实现简单验证码
2019/10/31 Python
python中图像通道分离与合并实例
2020/01/17 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
2020/06/29 Python
python中pyqtgraph知识点总结
2021/01/26 Python
加大码胸罩、内裤和服装:Just My Size
2019/03/21 全球购物
.NET是怎么支持多种语言的
2015/02/24 面试题
人力资源管理专业毕业生自我评价
2013/09/21 职场文书
预备党员转正思想汇报
2014/01/12 职场文书
班长自荐书范文
2014/02/11 职场文书
送餐员岗位职责范本
2014/02/21 职场文书
2015年读书月活动总结
2015/03/26 职场文书
承诺书的签字人,需不需要承担相应的责任?
2019/07/09 职场文书
ORACLE中dbms_output.put_line输出问题的解决过程
2022/06/28 Oracle