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

发布时间 - 2026-01-11 02:47:32    点击率:

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

效果图

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)

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

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代码基本已经完成)。

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

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实现仿腾讯迷你首页选项卡效果代码  # jQuery实现仿腾讯视频列表分页效果的方法  # jQuery实现仿腾讯微博滑出效果报告每日天气的方法  # Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效  # Jquery实现仿腾讯微博发表广播  # jQuery制作仿腾讯web qq用户体验桌面  # 漂亮的jquery提示效果(仿腾讯弹出层)  # asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)  # 多个  # 第一个  # 腾讯  # 遍历  # 并到  # 只有一个  # 标上  # 当我们  # 神马  # 小编  # 就可以  # 象中  # 默认为  # 都是  # 我也  # 我想  # 也不  # 也会  # 我看  # 我觉得 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  魔毅自助建站系统:模板定制与SEO优化一键生成指南  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  如何在自有机房高效搭建专业网站?  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  如何快速重置建站主机并恢复默认配置?  文字头像制作网站推荐软件,醒图能自动配文字吗?  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  重庆市网站制作公司,重庆招聘网站哪个好?  Laravel如何升级到最新版本?(升级指南和步骤)  Android仿QQ列表左滑删除操作  如何快速辨别茅台真假?关键步骤解析  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  Android okhttputils现在进度显示实例代码  EditPlus中的正则表达式 实战(2)  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  济南网站建设制作公司,室内设计网站一般都有哪些功能?  Laravel如何创建自定义中间件?(Middleware代码示例)  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  Laravel如何使用withoutEvents方法临时禁用模型事件  ,怎么在广州志愿者网站注册?  大型企业网站制作流程,做网站需要注册公司吗?  Bootstrap整体框架之CSS12栅格系统  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  ,网页ppt怎么弄成自己的ppt?  北京网站制作的公司有哪些,北京白云观官方网站?  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  JavaScript数据类型有哪些_如何准确判断一个变量的类型  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  黑客如何利用漏洞与弱口令入侵网站服务器?  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  ,南京靠谱的征婚网站?  如何快速登录WAP自助建站平台?  Laravel如何集成Inertia.js与Vue/React?(安装配置)  实例解析angularjs的filter过滤器  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  香港服务器选型指南:免备案配置与高效建站方案解析  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】