本文實例講述了jquery實現的美女拼圖遊戲。分享給大家供大家參考。具體如下:
這裡可以自由打亂拼圖次序,3*3,4*4等多種組合來進行格數拼圖
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Jquery-puzzle by 4074</title> <style> html{ height:100%; } body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,button,textarea,p,blockquote,th,td{ padding:0; margin:0; } body{ font-family: "Helvetica Neue", "Hiragino Sans GB", "Segoe UI", "Microsoft Yahei", "微软雅黑", Tahoma, Arial, STHeiti, sans-serif; font-size:12px; background:#fff; color:#333; } a{ outline:none; -moz-outline:none; text-decoration:none; } .clearfix{ zoom:1; _height:1px; } .clearfix:after{ content:"."; display:block; height:0; clear:both; visibility:hidden; } .head{ height:50px; line-height:50px; padding-left:20px; border-bottom:1px solid #eee; box-shadow: 1px 1px 5px #ccc; } .head h1{ float:left; width:320px; font-weight:normal; font-size:22px; } .head span{ display:block; float:right; font-size:12px; color:#999; line-height:14px; margin:30px 10px 0 0; } .wrap{ width:1000px; margin:80px auto; } .play_wrap{ width:300px; float:left; padding:20px; margin-left:200px; } #play_area{ position:relative; width:300px; height:300px; margin:auto; background:#fefefe; border-radius:2px; color: black; box-shadow: 0px 0px 8px #09F; border:1px solid #fff; *border:1px solid #e5e5e5; cursor:default; } #play_area .play_cell{ width:48px; height:48px; border:1px solid #fff; border-radius:4px; position:absolute; background-position: 5px 5px; cursor: default; z-index:80; box-shadow:0px 0px 8px #fff; transition-property:background-position; transition-duration:300ms; transition-timing-function:ease-in-out; } #play_area .play_cell.hover{ filter: alpha(opacity=80); opacity:.8; box-shadow: 0px 0px 8px #000; z-index:90; *border:1px solid #09F; } .play_menu{ float:left; margin-left:60px; font-size:14px; padding-top:20px; } .play_menu p{ line-height:200%; clear:both; } .play_menu a.play_btn{ display:block; margin-bottom:20px; width:80px; height:28px; line-height:28px; text-align:center; text-decoration:none; color:#333; background:#fefefe; border:1px solid #eee; border-radius: 2px; box-shadow: 1px 1px 2px #eee; border-color: #ddd #d2d2d2 #d2d2d2 #ddd; outline:none; -moz-outline:none; } .play_menu a.play_btn:hover{ background-color: #fcfcfc; border-color: #ccc; box-shadow: inset 0 -2px 6px #eee; } .play_menu a#play_btn_level{ position:relative; margin-bottom:30px; } .level_text{ margin-left:-10px; } .level_icon{ display:block; position:absolute; top:12px; right:16px; width:0; height:0; overflow:hidden; border:5px solid #FFF; border-color:#999 transparent transparent transparent; } .level_menu{ position:absolute; margin:-30px 0 0px 1px; display:none; } .level_menu ul{ list-style:none; } .level_menu li{ float:left; } .level_menu li a{ display:block; padding:3px 10px; border:1px solid #e8e8e8; margin-left:-1px; color:#09c; } .level_menu li a:hover{ background:#09c; color:#fefefe; } #info{ font-size:16px; margin:30px 0 0 0; } #info a{ color:#09F; } </style> <script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript"> var puzzleGame = function(options){ this.img = options.img || ""; this.e_playArea = $("#play_area"); this.e_startBtn = $("#play_btn_start"); this.e_playScore = $("#play_score"); this.e_playCount = $("#play_count"); this.e_levelBtn = $("#play_btn_level"); this.e_levelMenu = $("#play_menu_level"); this.areaWidth = parseInt(this.e_playArea.css("width")); this.areaHeight = parseInt(this.e_playArea.css("height")); this.offX = this.e_playArea.offset().left; this.offY = this.e_playArea.offset().top; this.levelArr = [[3,3],[4,4],[6,6]]; this.level = 1; this.scoreArr = [100,200,400]; this.score = 0; this.playCount = 0; this.cellRow = this.levelArr[this.level][0]; this.cellCol = this.levelArr[this.level][1]; this.cellWidth = this.areaWidth/this.cellCol; this.cellHeight = this.areaHeight/this.cellRow; this.imgArr = []; this.ranArr = []; this.cellArr = []; this.easing = 'swing'; this.time = 400; this.thisLeft = 0; this.thisTop = 0; this.nextIndex; this.thisIndex; this.cb_cellDown = $.Callbacks(); this.isInit = false; this.isBind = false; this.start(); }; puzzleGame.prototype = { start:function(){ this.init(); this.menu(); }, set: function(options){ this.level = options.level === 0 ? 0 : (options.level || 1); }, menu:function(){ var self = this; this.e_startBtn.click(function(){ self.e_levelMenu.hide(); self.play(); }); this.e_levelBtn.click(function(){ if(self.playing) return; self.e_levelMenu.toggle(); }); this.e_levelMenu.find("a").click(function(){ self.e_levelMenu.hide(); self.e_levelBtn.find(".level_text").html($(this).html()) if(parseInt($(this).attr("level")) !== self.level){ self.set({ "level": $(this).attr("level") }); self.isInit = true; self.isBind = false; } }) }, play:function(){ if(this.isInit){ this.isInit = false; this.cellRow = this.levelArr[this.level][0]; this.cellCol = this.levelArr[this.level][1]; this.cellWidth = this.areaWidth/this.cellCol; this.cellHeight = this.areaHeight/this.cellRow; this.init(); } this.e_playCount.html(this.playCount = 0); this.randomImg(); if(!this.isBind)this.bindCell(); }, init:function(){ var _cell; this.cellArr = []; this.imgArr = []; this.e_playArea.html(""); for(var i = 0; i<this.cellRow; i++){ for(var j = 0; j<this.cellCol; j++){ this.imgArr.push(i*this.cellCol + j); _cell = document.createElement("div"); _cell.className = "play_cell"; $(_cell).css({ "width": this.cellWidth-2, "height": this.cellHeight-2, "left": j * this.cellWidth, "top": i * this.cellHeight, "background": "url(" + this.img + ")", "backgroundPosition": (-j) * this.cellWidth + "px " + (-i) * this.cellHeight + "px" }); this.cellArr.push($(_cell)); this.e_playArea.append(_cell); } } }, randomImg:function(){ var ran,arr; arr = this.imgArr.slice(); this.ranArr = []; for(var i = 0, ilen = arr.length; i < ilen; i++){ ran = Math.floor(Math.random() * arr.length); this.ranArr.push(arr[ran]); this.cellArr[i].css({ "backgroundPosition": (-arr[ran]%this.cellCol) * this.cellWidth + "px " + (-Math.floor(arr[ran]/this.cellCol)) * this.cellHeight + "px" }) arr.splice(ran,1); } $("#p").html(this.ranArr.join()) }, bindCell:function(){ var self = this; this.isBind = true; this.cb_cellDown.add(self.cellDown); for(var i = 0, len = this.cellArr.length; i<len; i++){ this.cellArr[i].on({ "mouseover": function(){ $(this).addClass("hover"); }, "mouseout": function(){ $(this).removeClass("hover"); }, "mousedown": function(e){ self.cb_cellDown.fire(e, $(this), self); return false; } }); } }, cellDown:function(e,_cell,self){ var //self = this, _x = e.pageX - _cell.offset().left, _y = e.pageY - _cell.offset().top; self.thisLeft = _cell.css("left"); self.thisTop = _cell.css("top"); self.thisIndex = Math.floor(parseInt(self.thisTop)/self.cellHeight)*self.cellCol; self.thisIndex += Math.floor(parseInt(self.thisLeft)/self.cellWidth); _cell.css("zIndex",99); $(document).on({ "mousemove": function(e){ _cell.css({ "left": e.pageX - self.offX - _x, "top": e.pageY - self.offY - _y }) }, "mouseup": function(e){ $(document).off("mouseup"); $(document).off("mousemove"); self.cb_cellDown.empty(); if( e.pageX - self.offX < 0 || e.pageX - self.offX > self.areaWidth || e.pageY - self.offY < 0 || e.pageY - self.offY > self.areaHeight ){ self.returnCell(); return; } var _tx, _ty, _ti, _tj; _tx = e.pageX - self.offX; _ty = e.pageY - self.offY; _ti = Math.floor( _ty / self.cellHeight ); _tj = Math.floor( _tx / self.cellWidth ); self.nextIndex = _ti*self.cellCol + _tj; if(self.nextIndex == self.thisIndex){ self.returnCell(); }else{ self.changeCell(); } } }) }, changeCell:function(){ var self = this, _tc = this.cellArr[this.thisIndex], _tl = this.thisLeft, _tt = this.thisTop, _nc = this.cellArr[this.nextIndex], _nl = (this.nextIndex % this.cellCol) * this.cellWidth, _nt = Math.floor(this.nextIndex / this.cellCol) * this.cellHeight; _nc.css("zIndex",98); this.cellArr[this.nextIndex] = _tc; this.cellArr[this.thisIndex] = _nc; this.ranArr[this.nextIndex] = this.ranArr[this.nextIndex] + this.ranArr[this.thisIndex]; this.ranArr[this.thisIndex] = this.ranArr[this.nextIndex] - this.ranArr[this.thisIndex]; this.ranArr[this.nextIndex] = this.ranArr[this.nextIndex] - this.ranArr[this.thisIndex]; _tc.animate({ "left": _nl, "top": _nt },self.time,self.easing,function(){ _tc.removeClass("hover"); _tc.css("zIndex",""); }) _nc.animate({ "left": _tl, "top": _tt },self.time,self.easing,function(){ _nc.removeClass("hover"); _nc.css("zIndex",""); self.check(); if(!self.cb_cellDown.has(self.cellDown)) self.cb_cellDown.add(self.cellDown); }) }, returnCell:function(){ var self = this; this.cellArr[this.thisIndex].animate({ "left": self.thisLeft, "top": self.thisTop },self.time,self.easing,function(){ $(this).removeClass("hover"); $(this).css("zIndex",""); if(!self.cb_cellDown.has(self.cellDown)) self.cb_cellDown.add(self.cellDown); }); }, check:function(){ this.e_playCount.html( ++ this.playCount); if(this.ranArr.join() == this.imgArr.join()){ this.success(); } }, success:function(){ alert("ok"); this.score += this.scoreArr[this.level] this.e_playScore.html(this.score); } } $(document).ready(function(e) { var pg = new puzzleGame({ img: "images/120908-1347075337_M.jpg" }); }); </script> </head> <body> <div class="wrap"> <div class="play_wrap"> <div id="play_area"></div> </div> <div class="play_menu"> <a id="play_btn_start" class="play_btn" href="javascript:void(0);" unselectable="on">开始</a> <a id="play_btn_level" class="play_btn" href="javascript:void(0);" unselectable="on"> <span class="level_text">4 x 4</span> <span class="level_icon"></span> </a> <div class="level_menu" id="play_menu_level"> <ul> <li> <a href="javascript:void(0);" level=0 >3 x 3</a> </li> <li> <a href="javascript:void(0);" level=1 >4 x 4</a> </li> <li> <a href="javascript:void(0);" level=2 >6 x 6</a> </li> </ul> </div> <p>完成:<span id="play_score">0</span></p> <p>交换:<span id="play_count">0</span></p> <p>说明:<br> -点击开始,小图片将随机打乱;<br> -拖动小图片可交换位置,顺序完全正确则为成功;<br> -难度分“3x3”、“4x4”、“6x6”三级;<br> -对应的分值为100、200、400; </p> </div> </div> </body> </html>
希望本文所述對大家的jQuery程式設計有所幫助。

JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。

C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 Linux新版
SublimeText3 Linux最新版

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中