jQuery實(shí)現(xiàn)騰訊信用界面(自制刻度尺)樣式
依據(jù)我現(xiàn)有的知識(shí),在前端上"簡(jiǎn)易"的實(shí)現(xiàn)了騰訊信用的界面,同時(shí)自己自制了一個(gè)豎直的刻度尺插件,曲線的位置可以根據(jù)傳入的數(shù)值動(dòng)態(tài)的改變,這次主要也想總結(jié)一下關(guān)于jQuery中extend的方法,也是我們?cè)趯懖寮臅r(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也是在我們寫插件時(shí)常用的方法,
1、擴(kuò)展方法的原型
$.extend(param,dparam...),
它的含義是將dparam合并到param中,
需要注意如果多個(gè)對(duì)象具有該屬性,則后者會(huì)覆蓋前者的屬性值,
也就是說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)的屬性并沒有被拷貝,因?yàn)闆]有執(zhí)行深度拷貝,所以abstract會(huì)被后一個(gè)覆蓋掉了。
關(guān)于extend拷貝的方法我總結(jié)了上面三點(diǎn),其實(shí)還有好多學(xué)問,需要我們?nèi)グl(fā)掘。
流程分析
我看目前網(wǎng)上幾乎都是水平的可滑動(dòng)的刻度尺插件,幾乎沒有豎直的插件,其實(shí)也大同小異。因?yàn)樽鲞@個(gè)東西的需要,所以我需要做一個(gè)豎直的刻度尺(而且我本人也不喜歡用插件,我想有一天實(shí)現(xiàn)我的插件夢(mèng))。
我做這個(gè)插件的第一步是先用HTML+ CSS靜態(tài)的寫出大致的效果(這樣的同時(shí)我覺得我也直觀的構(gòu)思了這個(gè)東西的大致架構(gòu)),比如先0~10做出來,然后計(jì)算好間距,然后在后面做文章?!?br />
當(dāng)我們清晰了這個(gè)刻度尺的架構(gòu)之后,需要做的就是用append的方法(這里我用的jQuery)插入到指定的位置就可以了(因?yàn)檫@個(gè)時(shí)候你的刻度尺css代碼基本已經(jīng)完成)。
然后我們需要處理中間標(biāo)志(即曲線的初始位置)
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; } }
改變曲線的位置<和傳入的數(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, //初始化值,曲線的初始位置 mult:1 //刻度尺倍數(shù),默認(rèn)為10px })
總結(jié)
以上所述是小編給大家介紹的jQuery實(shí)現(xiàn)騰訊信用界面(自制刻度尺)樣式,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- jQuery實(shí)現(xiàn)仿騰訊迷你首頁(yè)選項(xiàng)卡效果代碼
- jQuery實(shí)現(xiàn)仿騰訊視頻列表分頁(yè)效果的方法
- jQuery實(shí)現(xiàn)仿騰訊微博滑出效果報(bào)告每日天氣的方法
- Jquery實(shí)現(xiàn)仿騰訊娛樂頻道焦點(diǎn)圖(幻燈片)特效
- Jquery實(shí)現(xiàn)仿騰訊微博發(fā)表廣播
- jQuery制作仿騰訊web qq用戶體驗(yàn)桌面
- 漂亮的jquery提示效果(仿騰訊彈出層)
- asp.net網(wǎng)站開發(fā)中用jquery實(shí)現(xiàn)滾動(dòng)瀏覽器滾動(dòng)條加載數(shù)據(jù)(類似于騰訊微博)
相關(guān)文章
JavaScript動(dòng)態(tài)改變表格單元格內(nèi)容的方法
這篇文章主要介紹了JavaScript動(dòng)態(tài)改變表格單元格內(nèi)容的方法,涉及javascript操作html中table表格的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03JavaScript 日期時(shí)間選擇器一些小結(jié)
flatpickr 是一個(gè)輕量級(jí)、注重精益、由 UX 驅(qū)動(dòng)和可擴(kuò)展的 JavaScript 日期時(shí)間選擇器。這篇文章主要介紹了JavaScript 日期時(shí)間選擇器,需要的朋友可以參考下2018-04-04用js實(shí)現(xiàn)的頁(yè)面關(guān)鍵字密度查詢代碼
2007-12-12JavaScript面試必備技巧之手寫一個(gè)Promise
很多同學(xué)在面試的時(shí)候都會(huì)被要求手寫一個(gè)Promise,那么今天我總結(jié)了一些手寫Promise的方法,可以跟著我的思路一起來實(shí)現(xiàn)一個(gè)Promise,讓我們的面試更有把握2023-02-02JS前端實(shí)現(xiàn)留言板功能的方法總結(jié)
留言板的主要使用場(chǎng)景是為用戶提供一個(gè)在網(wǎng)站或應(yīng)用上留言的平臺(tái),本文主要為大家介紹了四個(gè)常見的前端實(shí)現(xiàn)留言板功能的方法,希望對(duì)大家有所幫助2023-11-11Javascript 調(diào)用 ActionScript 的簡(jiǎn)單方法
在Flex中,ActionScript調(diào)用Javascript是比較簡(jiǎn)單的,說白了就是,在html里,怎么調(diào)用Javascript,在ActionScript就怎么調(diào)用就可以了。接下來通過本文給大家介紹js 調(diào)用 actionscript方法,感興趣的朋友一起看看吧2016-09-09js select option對(duì)象小結(jié)
本篇文章主要是對(duì)js中的select option對(duì)象進(jìn)行了總結(jié)介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-12-12你必須知道的Javascript知識(shí)點(diǎn)之"字面量和對(duì)應(yīng)類型"說明介紹
本篇文章小編為大家介紹,你必須知道的Javascript知識(shí)點(diǎn)之"字面量和對(duì)應(yīng)類型"。需要的朋友參考下2013-04-04原生js實(shí)現(xiàn)中獎(jiǎng)信息無間隙滾動(dòng)效果
本文主要分享了原生js實(shí)現(xiàn)中獎(jiǎng)信息無間隙滾動(dòng)效果的示例代碼。具有一定的參考價(jià)值,下面跟著小編一起來看下吧2017-01-01