之前看了一个页面中将图片分割的效果,感觉不错,有些好奇他是怎么实现的。
跟搭档说了一下,大概明白。其实就是利用 overflow=hidden ,margin-left, margin-top 这三个属性的配合,让人感觉图片被一个个格子地分开了。
刚刚写了个 Jquery的小插件,处理了整个的图片分格化,用户只要指定一个图片就可以自动生成格子图片,还自动生成“打乱”,“复原”,行,列等按钮。同时具有提示位置正确的图片数的功能。
看效果:
1.生成格子图片成功:
2.打乱图片次序
3.手动设置行列,这里限定了最大的行列都是 10 ,最小是3,多了会眼花撩乱。
4.再次打乱
5.去除小格子的边框,去除了图片分格子就不明显了
在页面上这用调用:
<div style="width:640px; height:400px;"> <img id="origin" class="myimage" src="/UploadFiles/2021-04-02/11.jpg">完整的js:
(function($){ /* * 坐标类 * @param {Object} x * @param {Object} y * @memberOf {TypeName} */ function Point(x,y){ this.top=x; this.left=y; } /** * 修正版本,原图右下角的小图不显示,是活动格子 * 添加 “打乱”,“换图按钮” * * @param {Object} options * @memberOf {TypeName} * @return {TypeName} */ $.fn.tablePic=function(options){ var DEFAULT={ target:'', row:2, col:2, isBorder:true, borderColor:'#f88', mode:'strict',//是否严格判断格式相邻移到,如果不是strict,那么就是不管怎样都是直接和空白格式内容交换 freeColor:'#92cf28' //空白格子的背景颜色 } var options=$.extend(DEFAULT,options); //系统变量 var SYSTEM={ width:0,height:0, //小格子的大小 sonWidth:0,sonHeight:0, src:null, current:'',correct:0,//正确个数 hits:0//步数 } var parent=null;//这个是待分割的图片 var target=null;//这个是格子存放的容器,一般是一个div,也应该是!!!!!别搞独特=.= //这个是左,上 的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(); }); //初始化目标 function init(){ target=$("#"+options.target); initTarget(); //最后我们要添加一个空白的divprepend target.append($("<div/>").attr("id","control").css("position","absolute").css("top",SYSTEM.height+8+((options.isBorder)"right","0px").css("width",SYSTEM.Width/3).css("height",SYSTEM.sonHeight) .append($("<span/>").attr("id","correctInfo")) .append($("<button/>").bind("click",function(){initMargin();}).append("复原")) .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"); } /** * 设置两个 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(); }); }); } /** * 边框的设置 */ 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="/UploadFiles/2021-04-02/">以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。