国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

jQuery實(shí)現(xiàn)網(wǎng)頁(yè)拼圖游戲

來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:03:15
文檔

jQuery實(shí)現(xiàn)網(wǎng)頁(yè)拼圖游戲

jQuery實(shí)現(xiàn)網(wǎng)頁(yè)拼圖游戲:之前看了一個(gè)頁(yè)面中將圖片分割的效果,感覺(jué)不錯(cuò),有些好奇他是怎么實(shí)現(xiàn)的。 跟搭檔說(shuō)了一下,大概明白。其實(shí)就是利用 overflow=hidden ,margin-left, margin-top 這三個(gè)屬性的配合,讓人感覺(jué)圖片被一個(gè)個(gè)格子地分開(kāi)了。 剛剛寫了個(gè) Jquery的小插件
推薦度:
導(dǎo)讀jQuery實(shí)現(xiàn)網(wǎng)頁(yè)拼圖游戲:之前看了一個(gè)頁(yè)面中將圖片分割的效果,感覺(jué)不錯(cuò),有些好奇他是怎么實(shí)現(xiàn)的。 跟搭檔說(shuō)了一下,大概明白。其實(shí)就是利用 overflow=hidden ,margin-left, margin-top 這三個(gè)屬性的配合,讓人感覺(jué)圖片被一個(gè)個(gè)格子地分開(kāi)了。 剛剛寫了個(gè) Jquery的小插件

之前看了一個(gè)頁(yè)面中將圖片分割的效果,感覺(jué)不錯(cuò),有些好奇他是怎么實(shí)現(xiàn)的。

跟搭檔說(shuō)了一下,大概明白。其實(shí)就是利用 overflow=hidden ,margin-left, margin-top 這三個(gè)屬性的配合,讓人感覺(jué)圖片被一個(gè)個(gè)格子地分開(kāi)了。

剛剛寫了個(gè) Jquery的小插件,處理了整個(gè)的圖片分格化,用戶只要指定一個(gè)圖片就可以自動(dòng)生成格子圖片,還自動(dòng)生成“打亂”,“復(fù)原”,行,列等按鈕。同時(shí)具有提示位置正確的圖片數(shù)的功能。

看效果:

1.生成格子圖片成功:

2.打亂圖片次序

3.手動(dòng)設(shè)置行列,這里限定了最大的行列都是 10 ,最小是3,多了會(huì)眼花撩亂。

4.再次打亂

5.去除小格子的邊框,去除了圖片分格子就不明顯了

在頁(yè)面上這用調(diào)用:

<div style="width:640px; height:400px;">
 <img id="origin" class="myimage" src="11.jpg"/>
</div><div id="targetDiv"></div>
<script>
$(document).ready(function(){
 
 $("#origin").tablePic({
 target: 'targetDiv',col:4,row:3,borderColor:'#fff',freeColor:'#cec'
 });
 
});
</script>

完整的js:

(function($){
 /*
 * 坐標(biāo)類
 * @param {Object} x
 * @param {Object} y
 * @memberOf {TypeName} 
 */
 function Point(x,y){
 this.top=x;
 this.left=y;
 }
 
 /**
 * 修正版本,原圖右下角的小圖不顯示,是活動(dòng)格子
 * 添加 “打亂”,“換圖按鈕”
 * 
 * @param {Object} options
 * @memberOf {TypeName} 
 * @return {TypeName} 
 */
 $.fn.tablePic=function(options){
 var DEFAULT={
 target:'',
 row:2,
 col:2,
 isBorder:true,
 borderColor:'#f88',
 mode:'strict',//是否嚴(yán)格判斷格式相鄰移到,如果不是strict,那么就是不管怎樣都是直接和空白格式內(nèi)容交換
 freeColor:'#92cf28' //空白格子的背景顏色
 }
 
 var options=$.extend(DEFAULT,options);
 //系統(tǒng)變量
 var SYSTEM={
 width:0,height:0,
 //小格子的大小
 sonWidth:0,sonHeight:0,
 src:null,
 current:'',correct:0,//正確個(gè)數(shù)
 hits:0//步數(shù)
 }
 var parent=null;//這個(gè)是待分割的圖片
 var target=null;//這個(gè)是格子存放的容器,一般是一個(gè)div,也應(yīng)該是!!!!!別搞獨(dú)特=.=
 
 //這個(gè)是左,上 的margin
 var margin=new Array();
 
 this.each(function(){
 parent=$(this);
 SYSTEM.src=parent.attr("src");
 SYSTEM.width=parseInt(parent.css("width"));
 SYSTEM.height=parseInt(parent.css("height"));
 SYSTEM.sonWidth=Math.round(SYSTEM.width/options.col);
 SYSTEM.sonHeight=Math.round(SYSTEM.height/options.row);
 
 init();
 initMargin();
 });
 
 //初始化目標(biāo)
 function init(){
 target=$("#"+options.target);
 initTarget();
 //最后我們要添加一個(gè)空白的divprepend
 target.append($("<div/>").attr("id","control").css("position","absolute").css("top",SYSTEM.height+8+((options.isBorder)?(options.row):0)+'px').css("right","0px").css("width",SYSTEM.Width/3).css("height",SYSTEM.sonHeight)
 .append($("<span/>").attr("id","correctInfo"))
 .append($("<button/>").bind("click",function(){initMargin();}).append("復(fù)原"))
 .append($("<button/>").bind("click",function(){mixMargin();}).append("打亂"))
 .append($("<button/>").attr("id","isBorder").bind("click",function(){border();}).append(((options.isBorder)?"去除":"添加")+"邊框"))
 .append(" 行:")
 .append($("<select/>").attr("id","rowSelect"))
 .append("列:")
 .append($("<select/>").attr("id","colSelect"))
 );
 initSelect();
 }
 
 function initTarget(){
 SYSTEM.sonWidth=Math.floor(SYSTEM.width/options.col);
 SYSTEM.sonHeight=Math.floor(SYSTEM.height/options.row);
 target.css("width",SYSTEM.width+'px').css("height",SYSTEM.height+'px');
 //是否顯示邊框
 if(options.isBorder){
 target.css("width",SYSTEM.width+options.col+'px').css("height",SYSTEM.height+options.row+'px');
 }
 target.css("position","relative");
 }
 /**
 * 設(shè)置兩個(gè) select的屬性,并添加事件
 */
 function initSelect(){
 for(var i=3;i<=10;i++){
 $("#rowSelect").append($("<option/>").attr("vaule",i).append(i));
 $("#colSelect").append($("<option/>").attr("vaule",i).append(i));
 }
 target.find("select").each(function(){
 $(this).change(function(){
 options.row=parseInt($("#rowSelect").val());
 options.col=parseInt($("#colSelect").val());
 initTarget();
 initMargin();
 });
 });
 }
 
 /**
 * 邊框的設(shè)置
 */
 function border(){
 options.isBorder=!options.isBorder;
 //initTarget();
 //initMargin();
 target.children(":not(#control)").children().each(function(){
 $(this).css("border-top",(options.isBorder?"1px solid "+options.borderColor:"none")).css("border-left",(options.isBorder?"1px solid "+options.borderColor:"none"));
 });
 $("#isBorder").html(((options.isBorder)?"去除":"添加")+"邊框");
 }
 
 function initImage(){
 //清空 target
 target.children(":not(#control)").remove();
 $("#rowSelect").val(options.row);
 $("#colSelect").val(options.col);
 //生成格子,基本形式:
 //<div class="miniDiv">
 // <div><img src="?????"/></div>
 // </div>
 //
 //為了兼容神奇的ie6,我們添加一個(gè)div在外圍
 var $temp=$("<div/>");
 target.append($temp);
 for(var i=0;i<options.row*options.col;i++){
 if(margin[i].left==options.col-1&&margin[i].top==options.row-1){
 $temp.append($("<div/>").attr("id","gz"+(i+1)).css("border-top",(options.isBorder?"1px solid "+options.borderColor:"none")).css("border-left",(options.isBorder?"1px solid "+options.borderColor:"none")).css("width",SYSTEM.sonWidth).css("height",SYSTEM.sonHeight).css("overflow","hidden").css("float","left")
 .append($("<div/>").css("width","100%").css("height","100%").css("background-color",options.freeColor)));
 SYSTEM.current='gz'+(i+1);
 }
 else{
 $temp.append($("<div/>").attr("id","gz"+(i+1)).css("border-top",(options.isBorder?"1px solid "+options.borderColor:"none")).css("border-left",(options.isBorder?"1px solid "+options.borderColor:"none")).css("width",SYSTEM.sonWidth).css("height",SYSTEM.sonHeight).css("overflow","hidden").css("float","left").append(
 $("<div/>").css("margin-left",(margin[i].left*SYSTEM.sonWidth)*-1+"px").css("margin-top",(margin[i].top*SYSTEM.sonHeight)*-1+"px")
 .append($("<img/>").attr("src",SYSTEM.src).css("width",SYSTEM.width+'px').css("height",SYSTEM.height+'px').css("display","block"))
 ));
 }
 }
 
 initHandle();
 checkRight();
 }
 
 //初始化 margin 這個(gè)屬性
 function initMargin(){
 var temp=0;
 for(var i=0;i<options.row;i++){
 for(var j=0;j<options.col;j++)
 margin[temp++]=new Point(i,j);
 }
 initImage();
 }
 
 //打亂圖片次序
 //使用 margin.splice 不能正確返回被刪除的數(shù)組元素,這里使用一個(gè) 中間 數(shù)組進(jìn)行隨機(jī)排序
 function mixMargin(){
 var temp1=new Array();
 var temp2=new Array();
 for(var i=0;i<options.col*options.row;i++){
 temp2[i]=i;
 }
 //使用 js 的splice 函數(shù)得到隨機(jī)排序的數(shù)組
 for(var i=0;i<options.col*options.row;i++){
 temp1[i]=margin[temp2.splice(Math.floor(Math.random()*temp2.length),1)];
 }
 margin=temp1;
 initImage();
 }
 
 /**
 * 添加事件
 * @memberOf {TypeName} 
 * @return {TypeName} 
 */
 function initHandle(){
 for(var i=0;i<=options.col*options.row;i++){
 $("#gz"+i).bind("click",function(){
 var newId=$(this).attr("id");
 if(newId==SYSTEM.current)
 return false;
 //如果設(shè)定了mode為strict,就判斷是不是與空白格子相鄰,只有相鄰了才可以發(fā)生效果
 if(options.mode=='strict'){
 if(SYSTEM.current=='gz0'&&newId!=('gz'+options.col))
 return false;
 var ii=parseInt(newId.substring(2));
 var jj=parseInt(SYSTEM.current.substring(2));
 if(!(Math.abs(ii-jj)==1||Math.abs(ii-jj)==options.col))
 return false;
 }
 var temp=$(this).html();
 $(this).html($("#"+SYSTEM.current).html());
 $("#"+SYSTEM.current).html(temp);
 SYSTEM.current=$(this).attr("id");
 checkRight();
 });
 }
 }
 
 /*
 * 檢查當(dāng)前正確的圖片數(shù)
 */
 function checkRight(){
 SYSTEM.correct=0;
 for(var i=0;i<options.col*options.row-1;i++){
 var $temp=$("#gz"+(i+1)).children(":first");
 if($temp.html()!=''&&parseInt($temp.css("margin-left"))==(-1*SYSTEM.sonWidth*(i%options.col))&&parseInt($temp.css("margin-top"))==(-1*SYSTEM.sonHeight*Math.floor(i/options.col))){
 SYSTEM.correct++;
 }
 }
 showCorrect();
 }
 
 /*
 * 顯示正確的圖片信息
 */
 function showCorrect(){
 $("#correctInfo").html("正確圖片:"+SYSTEM.correct+"/"+(options.col*options.row-1)+" ");
 }
 }
})(jQuery);

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

jQuery實(shí)現(xiàn)網(wǎng)頁(yè)拼圖游戲

jQuery實(shí)現(xiàn)網(wǎng)頁(yè)拼圖游戲:之前看了一個(gè)頁(yè)面中將圖片分割的效果,感覺(jué)不錯(cuò),有些好奇他是怎么實(shí)現(xiàn)的。 跟搭檔說(shuō)了一下,大概明白。其實(shí)就是利用 overflow=hidden ,margin-left, margin-top 這三個(gè)屬性的配合,讓人感覺(jué)圖片被一個(gè)個(gè)格子地分開(kāi)了。 剛剛寫了個(gè) Jquery的小插件
推薦度:
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 久久国产综合精品欧美 | 中文字幕韩国电影 | 四虎影院永久免费观看 | 亚洲精品免费观看 | 欧美日韩在线亚洲国产人 | 不卡日本| 欧美成a人片在线观看 | 国产精品久久久久… | 日韩 欧美 亚洲 | 视频一区二区免费 | 卡通动漫第一页 | 精品国产一区二区三区在线 | 久久香蕉影视 | 欧美精品首页 | 午夜黄色在线观看 | 亚洲欧美日韩综合在线 | 国产99视频精品草莓免视看 | 国产欧美日韩在线视频 | 欧美日韩高清在线 | 日韩欧美在线观看 | 亚欧洲精品在线视频免费观看 | 久热精品在线观看 | 欧美1页 | 高清 国产 日韩 欧美 | 国产高清一区二区 | 国产一区亚洲二区 | 欧美日韩精品一区二区三区 | 国产成人免费在线视频 | 国产高清在线免费视频 | 欧美综合另类 | 国产综合在线视频 | 99精品国产成人一区二区 | 国产在线一区视频 | 欧美精品免费在线观看 | 九九爱精品视频 | 日本欧美在线 | 亲子交尾五十路 | 国产一区视频在线 | 日韩欧美色综合 | 国产毛片一区二区 | 成人看免费一级毛片 |