国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

jQuery實(shí)現(xiàn)騰訊信用界面(自制刻度尺)樣式

2019-11-19 15:48:12
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

依據(jù)我現(xiàn)有的知識(shí),在前端上"簡(jiǎn)易"的實(shí)現(xiàn)了騰訊信用的界面,同時(shí)自己自制了一個(gè)豎直的刻度尺插件,曲線(xiàn)的位置可以根據(jù)傳入的數(shù)值動(dòng)態(tài)的改變,這次主要也想總結(jié)一下關(guān)于jQuery中extend的方法,也是我們?cè)趯?xiě)插件的時(shí)候常用的方法

效果圖

jQuery中的extend方法

  這里我參考了前輩的博客,在前輩博客中可以進(jìn)行更深一步的學(xué)習(xí):

  文檔中給的解釋是:jQuery.extend()函數(shù)主要是用于將一個(gè)或多個(gè)對(duì)象的內(nèi)容合并到目標(biāo)對(duì)象上,該函數(shù)可以將一個(gè)或多個(gè)對(duì)象的成員屬性和方法復(fù)制到指定的對(duì)象上。

  extend也是在我們寫(xiě)插件時(shí)常用的方法,

1、擴(kuò)展方法的原型

$.extend(param,dparam...),它的含義是將dparam合并到param中,

需要注意如果多個(gè)對(duì)象具有該屬性,則后者會(huì)覆蓋前者的屬性值,

也就是說(shuō)var result = $.extend({},{name : 'JSoso',age:17},{name:"okaychen",sex:"boy"})

最后 result = {name:"okaychen",age:17,sex:"boy"};

2、只有一個(gè)參數(shù)的情況

只有一個(gè)參數(shù)時(shí)會(huì)將改方法合并到j(luò)Query的全局對(duì)象中

比如:

$.extend(  {hello:function(){console.log('hello extend')}})

最終會(huì)將hello方法添加到j(luò)Query全局對(duì)象中去。

3、帶布爾值的情況

jQuery中的extend還有一種重載原型

語(yǔ)法:$.extend(boolean,dest,src1,src2...) 

第一個(gè)布爾值參數(shù)表示是否使用深度拷貝,默認(rèn)為false(可以明確指定為true,但是不能明確指明為false)

那么什么是深度拷貝呢?其實(shí)不難理解,深度拷貝就是該"屬性對(duì)象"的"屬性"也會(huì)被拷貝的目標(biāo)對(duì)象中

var result = $.extend(true, {}  {name:'JSoso',abstract: {age:17,country:'USA'}},  {last:"Amor",abstract: {state:'student',country:'China'}});

那么合并后的結(jié)果就是:

result = {  name:'JSoso',  last:'Amor',  abstract:{age:17,state:'student',country:'China'}}

那么如果參數(shù)是false,結(jié)果會(huì)是神馬呢?

result = {  name : "JSoso",  last : "Amor",  abstract:{state:"student",country:"China"}}

會(huì)看到第一個(gè)abstract內(nèi)的屬性并沒(méi)有被拷貝,因?yàn)闆](méi)有執(zhí)行深度拷貝,所以abstract會(huì)被后一個(gè)覆蓋掉了。

關(guān)于extend拷貝的方法我總結(jié)了上面三點(diǎn),其實(shí)還有好多學(xué)問(wèn),需要我們?nèi)グl(fā)掘。

流程分析

  我看目前網(wǎng)上幾乎都是水平的可滑動(dòng)的刻度尺插件,幾乎沒(méi)有豎直的插件,其實(shí)也大同小異。因?yàn)樽鲞@個(gè)東西的需要,所以我需要做一個(gè)豎直的刻度尺(而且我本人也不喜歡用插件,我想有一天實(shí)現(xiàn)我的插件夢(mèng))。

我做這個(gè)插件的第一步是先用HTML+ CSS靜態(tài)的寫(xiě)出大致的效果(這樣的同時(shí)我覺(jué)得我也直觀的構(gòu)思了這個(gè)東西的大致架構(gòu)),比如先0~10做出來(lái),然后計(jì)算好間距,然后在后面做文章。 

當(dāng)我們清晰了這個(gè)刻度尺的架構(gòu)之后,需要做的就是用append的方法(這里我用的jQuery)插入到指定的位置就可以了(因?yàn)檫@個(gè)時(shí)候你的刻度尺css代碼基本已經(jīng)完成)。

然后我們需要處理中間標(biāo)志(即曲線(xiàn)的初始位置)

var firstRand = true;if (firstRand) { pTop = $(".rulerPointer").position().bottom;}var rulerLNo = 0;for (var z = 0; z < setLen; z++) {  if (z * setHeight > pTop) {   limitTop = pTop - z * setHeight;   rulerLNo = z;   break; }}

改變曲線(xiàn)的位置<和傳入的數(shù)值相對(duì)應(yīng)>

 if (param.value && param.value >= param.minUnit && param.value <= param.max) {  $(" .rulerPointer").css("bottom", (param.value / param.minUnit) * 10 * param.mult)} else {  $(" .rulerPointer").css("bottom", '0');}

然后我們用each遍歷的方法給刻度尺標(biāo)上刻度值(這里idx就是索引值,ele表示獲取遍歷的每一個(gè)dom對(duì)象)

$("#" + param.wrapperId + " .sizeNo").each(function (idx, ele) { if (idx >= rulerLNo && idx < setLen) {   $(ele).html((idx - rulerLNo) * param.minUnit *param.unitSet); }})

到這里我們的刻度尺的代碼已經(jīng)完成(我只展示了部分代碼)。

初始化

  當(dāng)我們完成插件的封裝,我們只需要?jiǎng)?chuàng)建一個(gè)實(shí)例化的對(duì)象就可以了。

var measureRuler = new MeasureRuler({ wrapperId:"rulerWrapper",        //刻度尺容器的ID max:110,         //最大刻度 minUnit:1,         //最小刻度 unitset:10,         //刻度尺單元長(zhǎng)度 value:60,         //初始化值,曲線(xiàn)的初始位置 mult:1          //刻度尺倍數(shù),默認(rèn)為10px})

總結(jié)

以上所述是小編給大家介紹的jQuery實(shí)現(xiàn)騰訊信用界面(自制刻度尺)樣式,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)武林網(wǎng)網(wǎng)站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 永寿县| 周至县| 成都市| 河东区| 城步| 莱州市| 东明县| 杭锦旗| 彝良县| 屯留县| 延寿县| 盱眙县| 黄石市| 万山特区| 吉木萨尔县| 崇文区| 黔西| 建宁县| 明光市| 平顺县| 台山市| 稷山县| 新建县| 安宁市| 陇西县| 昌邑市| 衡东县| 绿春县| 滦南县| 开化县| 济阳县| 社旗县| 汶上县| 垦利县| 田阳县| 建宁县| 义马市| 遵义县| 内丘县| 洪泽县| 嘉鱼县|