如何实现自定义滑块组件?
下面的动画展现了通过两个代表x、y轴的滑块来实现图形的平移效果动画,本文介绍怎么来实现这样的滑块。
滑块html结构
示例通过ul列表结构组织,每个li元素的内容表示一个滑块,每个滑块包含名称、滑块和值三部分内容,其中滑块使用input元素即可实现,只需要将type设置为range即可。
滑块CSS样式
整个滑块组通过绝对定位的方式将其定位在web页面的右上角,取消ul列表的默认列表样式,每个滑块的名称、滑块、值居中对齐,只需要简单几个css样式就可以达到这个效果。/*将toolbox容器绝对定位到web页面右上角*/ #toolbox { position: absolute; top: 0; right: 0; margin: 1rem 2rem; opacity: 0.6; } /*不显示ul任何列表样式*/ #toolbox ul { list-style-type: none; } /*居中对齐滑块名称、滑块、值*/ #toolbox ul li { display: flex; align-items: center; } TypeScript代码实现滑块组件封装
接下来,还需要通过js代码添加滑块监听处理方法,实时更新滑块的值,并提供回调入口供应用使用该滑块。这里通过TypeScript来实现,代码如下:export class xinUI { // 创建滑块组件 setupSlider(parent_selector: string, options: any) { var parent = document.querySelector(parent_selector); // 从options中提取滑块的名称、最小、最大值、当前值等,不存在的则取默认值 var name = options.name; var min = options.min || 0; var max = options.max || 1; var callback = options.callback; var value = options.value || 0; // 创建一组滑块 var elm_li = document.createElement("li"); elm_li.innerHTML = ` ${name}
${value}`; parent.appendChild(elm_li); var elm_slider = elm_li.querySelector(".xin-widget-slider"); var elm_value = elm_li.querySelector(".xin-widget-value"); // 更新显示滑块的值 updateValue(); // 添加input、change事件,实时改变滑块的值并回调options指定的方法 elm_slider.addEventListener("input", handleChange); elm_slider.addEventListener("change", handleChange); function updateValue() { elm_value.textContent = value; } function handleChange(event) { value = event.target.value; updateValue(); // 供用户回调 callback(event, {value: value}); } } }; 滑块组件示例
下面的示例在web页面的右上角创建两个滑块代表x、y坐标,滑动滑块将在控制台打印滑块的值。
index.html
滑块组件使用示例
main.tsimport { xinUI } from "./slider-ui.js"; function main() { var translation = [10, 30]; // 创建x、y平移滑块 var myUI = new xinUI(); myUI.setupSlider("#toolbox ul", {name: "x", max: 100, value: translation[0], callback: updatePosition(0)}); myUI.setupSlider("#toolbox ul", {name: "y", max: 100, value: translation[1], callback: updatePosition(1)}); function updatePosition(index) { return function(event, ui) { translation[index] = parseInt(ui.value); //以下为应用处理的代码,这里仅打印其信息以示例 console.log(translation[index]); } } } main(); export {};
竹笋是发物?忠告这3类人尽量少吃,不听劝就是找罪受竹笋真的是发物?忠告3类人少吃,别自己找罪受竹笋可以做各种美味,烹饪方法多样,爆炒清蒸腌制等都可以做出一道道见之垂涎欲滴食之回味无穷的美味佳肴。竹笋有什么营养价值?竹笋不仅好吃,而
女同胞快看,黄连河景区38妇女节优惠活动来了!国际妇女节HAPPYWOMENSDAY20世纪初,一系列发生在欧洲和美洲的社会主义女权运动,共同促成了三八国际妇女节的诞生。中国在1924年首次公开庆祝妇女节,今年是我国第99个妇
善用冰片消痔冰片又名片脑桔片艾片龙脑香等,是龙脑香科植物龙脑香树脂的加工品或龙脑香树的树干树枝切碎,经蒸馏冷却而得的结晶。中医认为,冰片性辛苦微寒,归心脾肺经,具有开窍醒神清热止痛的功效,临床
阿胶虽补也不是想吃就吃随着养生理念的普及,越来越多的人喜欢买阿胶用来送礼,特别是在春节这种中国传统的节日,阿胶成了人们滋养身体孝敬父母走亲访友的理想选择。但是我们应该如何合理地服用,才能充分地发挥其保健
肥皂泡破裂时温度达2万摄氏度,高于太阳温度,为何不烧伤我们?综述太阳对于地球而言是一颗硕大而炙热的恒星,其内部无时不刻在进行着核子反应,这也导致太阳温度极高。单从数据上看太阳表面的温度高达5000,而内部核心温度可以达到1,500万度。我们
6个月宝宝吃蛋黄,导致全身长疹子,第1种辅食吃错了会伤害孩子文菁妈刘阿姨来市里面帮儿子媳妇带孙女,平时都去小区里面跟其他的阿姨一起唠嗑。她的孙女马上就要6个月了,大家就开始指挥她要给孩子加辅食了,刘阿姨说媳妇已经买了米粉回来了,到时冲给孩子
阿胶作为养生滋补佳品,有哪些小秘密?阿胶,又名驴皮胶,含有明胶原骨胶原蛋白质及钙钾钠镁锌等17种元素,所含蛋白质水解后能产生多种必需氨基酸。其性平,味甘平,为补血止血滋阴润燥的良药,一直被奉为养生滋补佳品。阿胶的分类
修行能量层级1因为每个人的能量层级都是由这个人的信念动机行为准则和心灵境界决定的,而一个人的能量层级又决定了这个人一生的一切。所以我们每个人最终将会为自己的每一个念头语言或者行为负责,并将重新体
励志文案正能量文案分享1努力不是口头禅,想成为强者,先要做一个坚持者。2有航道的人,再渺小也不会迷途。3人生没有如果,不要尽力而为,而要全力以赴。4世界会向有目标和远见的人让路。5所有幸运和巧合都是一个
成果发表!嫦娥五号月壤颗粒揭示太空风化作用奥秘央视网消息近日,中科院地质地球所等科研团队通过对单个嫦娥五号月壤颗粒的探测分析,获得了月壤颗粒表面关键物质的太空风化作用信息。这一成果日前在国际学术期刊地球物理研究快报上发表。数十
医院不愿开的十三种中成药,堪称家庭健康守护神1舌苔中间有裂纹,舌边有齿痕建议留用人参健脾丸指导健脾益气,和胃止泻。用于脾胃虚弱所致的饮食不化脘闷嘈杂恶心呕吐腹痛便溏不思饮食体弱倦怠。2白天瞌睡多站着都能睡着,夜晚就可以精神后