详尽分享组件的封装方法【比较高级方法】★★★★★★★

简介: 详尽分享组件的封装方法【比较高级方法】★★★★★★★

html:

<!doctype html

[/span>html lang="en"

[/span>head

[/span>meta charset="UTF-8"

[/span>title

[/span>style type="text/css"

.main{ Width</span>: 500px; Height</span>: 500px; border: red 1px solid; margin: 0 auto; text-align: center; }

.cover{margin: 10px auto;}

.btn{margin: 0 auto;padding: 2px 20px; border: red 1px solid; text-align: center; color: #000; cursor: pointer;}

[/span>body

[/span>div class="main box"

[/span>div class="cover"

[/span>img src="images/guagua-cover3.png" class="pictureOver" alt=""

[/span>div class="anniu"

[/span>span class="btn close"

[/span>span class="btn open"

[/span>script src=""

[/span>script src="js/Scratch.js"

[/span>script type="text/javascript"

/实例化方法/

var scratch = new Scratch({

canvasId: 'box',

close:".close",

open:".open",

cover:".cover",

cursor: {

x: '-20',

y: '-20'

},

radius: 20,

nPoints: 1000,

percent: 30,

pointSize: { x: 5, y: 5},

callback: function () {/刮刮之后的函数/

console.log("回调函数");

}

});

js:

var Scratch = (function () {

/

Merge properties between two objects

@param obj1

@param obj2

@returns { {}}

*/

function mergeOptions(obj1, obj2){

var obj3 = {}//代码效果参考:http://www.ezhiqi.com/bx/art_1445.html ;

for (var key in obj1) { obj3【key】 = obj1【key】; }

for (var key in obj2) { obj3【key】 = obj2【key】; }

return obj3;

}

/随机函数

Generate a random number

@param min

@param max

@returns {Number}

/

function randomPoint(min, max) {

var random = Math.abs(Math.random()(max - min) + min);

return random = parseInt(random.toFixed(0), 10);

}

/*

Scratch constructor

@param options

@constructor

/

var Scratch = function(options) {

this.cursor = {

png: '', // Modern browsers

cur: '', // for IE

x: 0,

y: 0,

default: 'auto'

};

this.pointSize = {

x: 5,

y: 5

};

this.defaults = {

canvasId: '', // Canvas id

open:"",

cover:"",

cursor: this.cursor, // Custom pointer

sceneWidth: 302, // Canvas Width</span>

sceneHeight: 60, // Canvas Height</span>

radius: 40, // Radius of scratch zone

nPoints: 10, // n points for clear canvas

pointSize: this.pointSize,

percent: null,

callback: null

};

this.options = mergeOptions(this.defaults, options); /此处使得可以直接获得this.options.canvasId/

this.options.cursor = mergeOptions(this.cursor, options.cursor);

this.options.pointSize = mergeOptions(this.pointSize, options.pointSize);

console.log(this.options.canvasId);

// init Scratch

this.init();

};

Scratch.prototype.init = function () {

var _this = this; // Save the "this" :)

console.log("初始化成功");

console.log(this.options.btn);

console.log(this.options.cover);

/打开/

$(this.options.open).click(function(){

_this.show();

});

/关闭*/

$(this.options.close).click(function(){

_this.hide();

});

};

//显示

Scratch.prototype.show = function() {

console.log("22");

$(this.options.cover).fadeIn(500);

this.options.callback();

};

//隐藏

Scratch.prototype.hide = function() {

$(this.options.cover).fadeOut(200);

this.callback(this.options.callback);

};

//回调

Scratch.prototype.callback = function(callback) {

if (callback != null this.percent >= this.options.percent) {

callback();

}

};

return Scratch;

})();

给心灵一个纯净空间,让思想,情感,飞扬!

相关文章
|
4月前
|
前端开发
|
前端开发 安全 JavaScript
突破常规的前端技巧与方法(一)
突破常规的前端技巧与方法(一)
79 0
|
JavaScript 前端开发 测试技术
突破常规的前端技巧与方法(四)
突破常规的前端技巧与方法(四)
62 0
|
JSON JavaScript 前端开发
突破常规的前端技巧与方法(二)
突破常规的前端技巧与方法(二)
42 0
|
前端开发 JavaScript 搜索推荐
突破常规的前端技巧与方法(三)
突破常规的前端技巧与方法(三)
158 0
突破常规的前端技巧与方法(三)
|
存储 数据可视化 Ubuntu
bcftools学习笔记丨软件简介、安装方式、使用方法、核心功能、参数解释等一文速览
bcftools学习笔记丨软件简介、安装方式、使用方法、核心功能、参数解释等一文速览
|
JSON jenkins 持续交付
python接口自动化(十六)--参数关联接口后传(详解)
大家对前边的自动化新建任务之后,接着对这个新建任务操作了解之后,希望带小伙伴进一步巩固胜利的果实,夯实基础。因此再在沙场实例演练一下博客园的相关接口。我们用自动化发随笔之后,要想接着对这篇随笔操作,不用说就需 要用参数关联了,发随笔之后会有一个随笔的 id,获取到这个 id,继续操作传这个随笔 id 就可以了(博客园的登录机制已经变了,不能用账号和密码登录了,这里用 cookie 登录)
196 1
python接口自动化(十六)--参数关联接口后传(详解)
|
编解码 前端开发 数据处理
前端基础向--从项目入手封装公共组件
前端基础向--从项目入手封装公共组件
286 0
|
jenkins 测试技术 持续交付
python接口自动化(三十六)-封装与调用--流程类接口关联续集(详解)
上一篇已经给大家都介绍过了流程类接口关联,但是由于博客的登录机制改变,所以没有办法给小伙伴们实战演练一下,那么这篇就按照上一篇计划的用jenkins来给小伙伴们演示一下流程类接口的封装和调用,其实很简单,就是用上一篇和前边这篇传送门的代码稍稍修改即可。不知道你自己练习了么,如果练习了,可以看看和我有什么不同,没练习的看看自己思路和我有啥不一样。好了废话少说进入主题
194 0
python接口自动化(三十六)-封装与调用--流程类接口关联续集(详解)
|
jenkins 测试技术 持续交付
python接口自动化(三十五)-封装与调用--流程类接口关联(详解)
流程相关的接口,主要用 session 关联,如果写成函数(如上篇),s 参数每个函数都要带,每个函数多个参数,这时候封装成类会更方便。在这里我们还是以博客园为例,带着小伙伴们实践一下。
377 0
python接口自动化(三十五)-封装与调用--流程类接口关联(详解)