HTML+CSS+JS实现 ❤️美女拼图游戏❤️
生活随笔
收集整理的這篇文章主要介紹了
HTML+CSS+JS实现 ❤️美女拼图游戏❤️
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
🍅 作者主頁(yè):Java李楊勇?
🍅 簡(jiǎn)介:Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者🏆、【java李楊勇】公號(hào)作者? ?簡(jiǎn)歷模板、學(xué)習(xí)資料、面試題庫(kù)、技術(shù)互助【關(guān)注我,都給你】
🍅 歡迎點(diǎn)贊 👍 收藏 ?留言 📝 ??
效果演示:?文末獲取源碼
代碼目錄:
主要代碼實(shí)現(xiàn):
CSS樣式:
html {padding: 0px;margin: 0px;background: #eee;}#gameDiv {width: 460px;height: 460px;margin: 20px auto;background: #F9F9F9;padding: 1px 1px;position: relative;}#maskBox {opacity: 0.5;display: block;}JavaScript代碼 :
<script>/*** Created by jsonpeter on 2015/8/13.*/(function($g) {//游戲配置setting = {gameConfig: {url: "345.jpg",id: "gameDiv",//生成規(guī)格橫4 縱4size: "4*4",//每個(gè)元素的間隔margin: 1,//拖動(dòng)時(shí)候塊透明度opacity: 0.8},setElement: {type: "div",id: "",float: "",display: "",margin: "",background: "",width: "",height: "",left: "",top: "",position: "", //absoluteopacity: 0.4,animate: 0.8}};//元素生成參數(shù)var _sg = setting.gameConfig;var _st = setting.setElement;var gameInfo = function() {};gameInfo.prototype = {init: function() {this.creatObj();this.eventHand();},sortObj: {rightlist: [], //正確的排序romdlist: [] //打亂后的排序},creatObj: function() {_sg.boxObj = document.getElementById(_sg.id) || "";//尺寸自動(dòng)獲取var _size = _sg.size.split('*') || [0, 0];//計(jì)算單個(gè)div的高寬var w = Math.floor(_sg.boxObj.offsetWidth / _size[0]);var h = Math.floor(_sg.boxObj.offsetHeight / _size[1]);//圖片生成divvar _size = _sg.size.split('*') || [0, 0];var wt = _size[0],hg = _size[1];//創(chuàng)建一個(gè)素組并排序打散var sortList = [];for (var a = 0; a < wt * hg; a++) {sortList.push(a);}sortList.sort(randomsort);this.sortObj.rightlist = sortList;//---------var _i = 0,sid = 0;for (; _i < wt; _i++) {var _s = 0;for (; _s < hg; _s++) {//賦值隨機(jī)打散后的id_st.id = sortList[sid++];_st.display = "block";_st.float = "left";//_st.top=w*_i+"px";//_st.left=h*_s+"px";_st.margin = _sg.margin + "px";_st.background = "url('" + _sg.url + "') " + (-w * _s) + "px " + (-h * _i) + "px";_st.width = w - _sg.margin * (wt / 2) + "px";_st.height = h - _sg.margin * (hg / 2) + "px";this.sortObj.romdlist.push(this.addElement());// console.log( (_w*_i)+"px "+(_h*_s)+"px ");}}this.boxSort();},boxSort: function() {var _arrySort = this.sortObj.romdlist;var _tmp = [],_n = 0;eachBox(_arrySort, function(d) {_tmp.push(parseInt(_arrySort[d].id));});//排序新數(shù)組_tmp.sort(function(a, b) {return a > b ? 1 : -1;});//排序后的帶dom的素組for (; _n < _tmp.length; _n++) {var _s = 0;for (; _s < _arrySort.length; _s++) {if (_arrySort[_s].id == _tmp[_n]) {_sg.boxObj.appendChild(_arrySort[_s]);}}}return _tmp;},//添加元素addElement: function() {var _obj = document.createElement(_st.type);_obj.id = _st.id;_obj.style.display = _st.display;_obj.style.float = _st.float;_obj.style.margin = _st.margin;_obj.style.background = _st.background;_obj.style.width = _st.width;_obj.style.position = _st.position;_obj.style.top = _st.top;_obj.style.left = _st.left;_obj.style.height = _st.height;return _obj;},mouseEvent: {mousedown: function(ev) {ev = ev || ev.event;ev.preventDefault();//元素類(lèi)型div_st.type = "span";_st.id = "maskBox";_st.width = this.offsetWidth + "px";_st.height = this.offsetHeight + "px";_st.position = "absolute";_st.background = "";//_st.opacity=_sg.opacity;_st.left = this.offsetLeft + "px";_st.top = this.offsetTop + "px";},mouseup: function(ev) {ev = ev || ev.event;//var _e=t.setElement;ev.preventDefault();var obj = document.getElementById(this.id);if (obj) {_sg.boxObj.removeChild(obj);}},mousemove: function(ev) {ev = ev || ev.event;this.style.left = getX_Y.call(this, "x", ev) + "px";this.style.top = getX_Y.call(this, "y", ev) + "px";}},//正確檢查 對(duì)比兩個(gè)數(shù)組gameCheck: function() {var s = 0,bols = true;var _arry = this.sortObj.rightlist;var _arryRom = this.sortObj.romdlist;console.log(_arry);console.log(_arryRom);for (; s < _arry.length; s++) {if (_arry[s] != _arryRom[s].id) {bols = false;break;}}return bols;},eventHand: function() {var _obj = _sg.boxObj.getElementsByTagName("div");var i = 0,olen = _obj.length;var that = this;var m = that.mouseEvent;var box_index = 0;for (; i < olen;) {(function(n) {//按下鼠標(biāo)_obj[n].addEventListener("mousedown", function(e) {var _this = this;m.mousedown.call(_this, e);_st.background = _this.style.background;_this.style.background = "#FFF";//生成可移動(dòng)的divvar _newObj = that.addElement();_sg.boxObj.appendChild(_newObj);_newObj.style.opacity = _sg.opacity;//移動(dòng)位置_newObj.onmousemove = function(e) {m.mousemove.call(_newObj, e);// console.log("____"+this.offsetLeft);var _i = 0;for (; _i < olen; _i++) {var _w = parseInt(_obj[_i].style.width) / 1.5;var _h = parseInt(_obj[_i].style.height) / 1.5;var _left = _obj[_i].offsetLeft;var _top = _obj[_i].offsetTop;var _boxX = parseInt(this.style.left);var _boxY = parseInt(this.style.top);//還原樣式eachBox(_obj, function(d) {_obj[d].style.opacity = 1.0;});//計(jì)算拖動(dòng)到的位置if (_left + _w > _boxX || _left > _boxX + _w) {if (_top + _h > _boxY || _top > _boxY + _h) {box_index = _i;_obj[_i].style.opacity = _st.opacity;break;}}}};//鼠標(biāo)松開(kāi)_newObj.addEventListener("mouseup", function(e) {//刪除移動(dòng)事件_newObj.onmousemove = function(e) {};//獲取當(dāng)前停留元素的坐標(biāo)var tagObj = {id1: _obj[box_index].id,id2: _this.id,bg1: _obj[box_index].style.background,bg2: this.style.background};//交換位置_this.id = tagObj.id1;_this.style.background = tagObj.bg1;_obj[box_index].id = tagObj.id2;_obj[box_index].style.background = tagObj.bg2;//獲取拖動(dòng)后的排序that.sortObj.romdlist = _obj;//還原樣式eachBox(_obj, function(d) {_obj[d].style.opacity = 1.0;});//刪除浮動(dòng)divm.mouseup.call(_newObj, e);//計(jì)算是否完成拼圖if (that.gameCheck()) {alert("O(∩_∩)O哈哈~");}}, false);}, false);})(i++);}}}//隨機(jī)數(shù)function randomsort(a, b) {return Math.random() > .5 ? -1 : 1; //用Math.random()函數(shù)生成0~1之間的隨機(jī)數(shù)與0.5比較,返回-1或1}function eachBox(obj, fn) {var _s = 0;for (; _s < obj.length; _s++) {fn(_s);}}function getX_Y(s, ev) {var _b = (ev.clientX - this.parentNode.offsetLeft) - (this.offsetWidth / 2);if (s === "y") {_b = (ev.clientY - this.parentNode.offsetTop) - (this.offsetHeight / 2);}return _b;}$g.gameInfo = new gameInfo();})(window)</script>上面的圖片可以自己替換成喜歡
源碼獲取
大家可以點(diǎn)贊、收藏、關(guān)注、評(píng)論我啦 、查看博主主頁(yè)或下方微信公眾號(hào)獲取更多~!
打卡 文章 更新?50??/? 100天
精彩推薦更新中:
HTML5大作業(yè)實(shí)戰(zhàn)案例《100套》
Java畢設(shè)項(xiàng)目精品實(shí)戰(zhàn)案例《100套》?
總結(jié)
以上是生活随笔為你收集整理的HTML+CSS+JS实现 ❤️美女拼图游戏❤️的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: HTML+CSS+JS实现 ❤️ 团队人
- 下一篇: HTML+CSS+JS实现 ❤️3D悬浮