jQuery实现腾讯信用界面(自制刻度尺)样式


Posted in jQuery onAugust 15, 2017

依据我现有的知识,在前端上"简易"的实现了腾讯信用的界面,同时自己自制了一个竖直的刻度尺插件,曲线的位置可以根据传入的数值动态的改变,这次主要也想总结一下关于jQuery中extend的方法,也是我们在写插件的时候常用的方法

效果图

jQuery实现腾讯信用界面(自制刻度尺)样式

jQuery中的extend方法

这里我参考了前辈的博客,在前辈博客中可以进行更深一步的学习:

文档中给的解释是:jQuery.extend()函数主要是用于将一个或多个对象的内容合并到目标对象上,该函数可以将一个或多个对象的成员属性和方法复制到指定的对象上。

extend也是在我们写插件时常用的方法,

1、扩展方法的原型

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

需要注意如果多个对象具有该属性,则后者会覆盖前者的属性值,

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

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

2、只有一个参数的情况

只有一个参数时会将改方法合并到jQuery的全局对象中

比如:

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

)

最终会将hello方法添加到jQuery全局对象中去。

3、带布尔值的情况

jQuery中的extend还有一种重载原型

语法:$.extend(boolean,dest,src1,src2...) 

第一个布尔值参数表示是否使用深度拷贝,默认为false(可以明确指定为true,但是不能明确指明为false)

jQuery实现腾讯信用界面(自制刻度尺)样式

那么什么是深度拷贝呢?其实不难理解,深度拷贝就是该"属性对象"的"属性"也会被拷贝的目标对象中

var result = $.extend(true, {}
{name:'JSoso',abstract: {age:17,country:'USA'}},

{last:"Amor",abstract: {state:'student',country:'China'}}
);

那么合并后的结果就是:

result = {
name:'JSoso',

last:'Amor',

abstract:{age:17,state:'student',country:'China'}
}

那么如果参数是false,结果会是神马呢?

result = {
name : "JSoso",

last : "Amor",

abstract:{state:"student",country:"China"}
}

会看到第一个abstract内的属性并没有被拷贝,因为没有执行深度拷贝,所以abstract会被后一个覆盖掉了。

关于extend拷贝的方法我总结了上面三点,其实还有好多学问,需要我们去发掘。

流程分析

我看目前网上几乎都是水平的可滑动的刻度尺插件,几乎没有竖直的插件,其实也大同小异。因为做这个东西的需要,所以我需要做一个竖直的刻度尺(而且我本人也不喜欢用插件,我想有一天实现我的插件梦)。

我做这个插件的第一步是先用HTML+ CSS静态的写出大致的效果(这样的同时我觉得我也直观的构思了这个东西的大致架构),比如先0~10做出来,然后计算好间距,然后在后面做文章。 

当我们清晰了这个刻度尺的架构之后,需要做的就是用append的方法(这里我用的jQuery)插入到指定的位置就可以了(因为这个时候你的刻度尺css代码基本已经完成)。

jQuery实现腾讯信用界面(自制刻度尺)样式

然后我们需要处理中间标志(即曲线的初始位置)

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;
 }
}

改变曲线的位置<和传入的数值相对应>

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遍历的方法给刻度尺标上刻度值(这里idx就是索引值,ele表示获取遍历的每一个dom对象)

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

到这里我们的刻度尺的代码已经完成(我只展示了部分代码)。

初始化

当我们完成插件的封装,我们只需要创建一个实例化的对象就可以了。

var measureRuler = new MeasureRuler({
 wrapperId:"rulerWrapper",   
 //刻度尺容器的ID
 max:110,         //最大刻度
 minUnit:1,         //最小刻度
 unitset:10,         //刻度尺单元长度
 value:60,         //初始化值,曲线的初始位置
 mult:1          //刻度尺倍数,默认为10px
})

总结

以上所述是小编给大家介绍的jQuery实现腾讯信用界面(自制刻度尺)样式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

jQuery 相关文章推荐
jQuery查找和过滤_动力节点节点Java学院整理
Jul 04 jQuery
JS和jQuery通过this获取html标签中的属性值(实例代码)
Sep 11 jQuery
jQuery与vue实现拖动验证码功能
Jan 30 jQuery
jQuery实现使用sort方法对json数据排序的方法
Apr 17 jQuery
jQuery实现仿京东防抖动菜单效果示例
Jul 06 jQuery
使用jQuery给Table动态增加行、清空table的方法
Sep 05 jQuery
jquery的$().each和$.each的区别
Jan 18 jQuery
JS/jQuery实现简单的开关灯效果【案例】
Feb 19 jQuery
jquery实现选项卡切换代码实例
May 14 jQuery
jQuery模拟html下拉多选框的原生实现方法示例
May 30 jQuery
jQuery HTML获取内容和属性操作实例分析
May 20 jQuery
jQuery加PHP实现图片上传并提交的示例代码
Jul 16 jQuery
使用jQuery实现购物车结算功能
Aug 15 #jQuery
jQuery绑定事件方法及区别(bind,click,on,live,one)
Aug 14 #jQuery
jQuery选择器特殊字符与属性空格问题
Aug 14 #jQuery
jQuery实现手势解锁密码特效
Aug 14 #jQuery
jQuery 中msgTips 顶部弹窗效果实现代码
Aug 14 #jQuery
jQuery:unbind方法的使用详解
Aug 14 #jQuery
jQuery 实时保存页面动态添加的数据的示例
Aug 14 #jQuery
You might like
数据库相关问题
2006/10/09 PHP
php在服务器执行exec命令失败的解决方法
2012/03/03 PHP
基于thinkPHP类的插入数据库操作功能示例
2017/01/06 PHP
web 页面分页打印的实现
2009/06/22 Javascript
js格式化时间小结
2014/11/03 Javascript
JavaScript模拟实现继承的方法
2015/03/30 Javascript
JS实现左右无缝轮播图代码
2016/05/01 Javascript
JavaScript面向对象编写购物车功能
2016/08/19 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
2016/11/05 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
2017/08/16 Javascript
微信小程序之分享页面如何返回首页的示例
2018/03/28 Javascript
深入浅出vue图片路径的实现
2019/09/04 Javascript
vue-amap根据地址回显地图并mark的操作
2020/11/03 Javascript
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
Python中实现两个字典(dict)合并的方法
2014/09/23 Python
python计算对角线有理函数插值的方法
2015/05/07 Python
完美解决Python2操作中文名文件乱码的问题
2017/01/04 Python
Python使用Matplotlib实现雨点图动画效果的方法
2017/12/23 Python
python 处理dataframe中的时间字段方法
2018/04/10 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
2018/04/19 Python
Python之时间和日期使用小结
2019/02/14 Python
python文本数据处理学习笔记详解
2019/06/17 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
2019/08/02 Python
HTML5 canvas标签实现刮刮卡效果
2015/04/24 HTML / CSS
北美Newegg打造的全球尖货海购平台:tt海购
2018/09/28 全球购物
自我鉴定范文200字
2013/10/02 职场文书
自荐书模板
2013/12/15 职场文书
创建文明学校实施方案
2014/03/11 职场文书
高三毕业寄语
2014/04/10 职场文书
2015年教学工作总结
2015/04/02 职场文书
react antd实现动态增减表单
2021/06/03 Javascript
一条慢SQL语句引发的改造之路
2022/03/16 MySQL
SpringCloud项目如何解决log4j2漏洞
2022/04/10 Java/Android
MySQL视图概念以及相关应用
2022/04/19 MySQL
Python使用永中文档转换服务
2022/05/06 Python