当前位置: 首页 > Web前端 > HTML

我开源了一个轻量级的网络编辑器标尺插件!

时间:2023-03-28 19:19:21 HTML

前言做过web端编辑的前端同事或多或少都会接触到标尺插件,类似于ps或者PPT等软件中的插件。jqury等比较老的web插件会生成很多dom,所以我写了一个纯TS和canvas绘制的尺子,不依赖任何第三方库。文档使用方法如下,欢迎使用、贡献和提交issue!PS:暂不支持辅助线功能,插件会尽快上线。在一些思路上,我也参考了另一个尺子插件daybrush/rulerlight-rulerDEMO/Github主要特点(Features)使用canvas绘图,支持无限滚动,不会生成多个DOM导致页面重绘支持自定义尺子背景色、文字color,scalecolor和unit支持translate模式,即在第一个canvas绘制标尺后,scroll是通过csstransform用Typescript写的,不依赖任何第三方库。打包后的文件只有26kb(含样式),支持缩放刻度值。目前,提供了2种音阶主题样式。提供多实例控制器来管理多个规模的实例安装(安装)npmilight-ruleruse(Useage)基本上使用importLightRulerfrom"light-ruler";construler=newLightRuler({mode:"infinite",wrapperElement:document.getElementById("box"),scrollElement:document.getElementById("wrap"),rulerId:"my-ruler",width:30000,height:30000,style:{模式:"right",},onScroll:(x,y)=>{console.log(x,y);},});React使用importReact,{useRef,useEffect}from"react";importLightRulerfrom"light-ruler";exportdefaultfunction(){construlerRef=useRef(null);useEffect(()=>{construler=newLightRuler({模式:“infinite",mountRef:rulerRef.current,scrollElement:document.getElementById("wrap"),rulerId:"ruler",宽度:30000,高度:30000,onScroll:(x,y)=>{console.log(x,y);},});},[]);返回(...

);}Vue3使用提示:取决于标准使用的position:absolute,所以包裹标尺的容器必须设置position属性同时为了保持刻度固定,监听滚动的元素不能是包裹刻度的元素配置(Config)。名称含义值模式?绘制模式“无限”/“翻译”/“自动”mountRef?Ruler-mountedDOM(优先于wrapperElement,会使用mountRef的parentElement作为父容器)HTMLElementwrapperElement?标尺的父容器DOM(标尺DOM会自动生成)HTMLElement/CSSSelectorscrollElement?监控滚动的DOMHTMLElement/CSSSelectorwidth?标尺绘图宽度数字高度?标尺绘图高度numberrulerId?标尺idstringstyle?标尺样式ObjectonScroll?滚动回调函数(x:number,y:number)=>Functionstyle属性名称含义值大小?标尺大小(比如20,那么水平标尺的高度为20px,垂直标尺的宽度为20px)numberbackgroundColor?标尺背景颜色stringfontColor?标尺字体颜色stringfontSize?标尺字体大小(如果不设置,会自动计算出合适的大小,如果设置了,是绝对值,不会自适应)numberfontWeight?标尺字体粗细“粗体”/num??bertickColor?标尺刻度颜色字符串单位?标尺单位样式Objectgap?标尺刻度间隔数刻度?标尺刻度值比例因子数字显示?标尺初始化后是否显示booleanmode?标尺主题样式'center'/'right'unit属性名称含义值backgroundColor?单位背景色stringfontColor?单位字体颜色stringfontSize?单位字体大小数字文本?Unit显示内容stringAPIscale设置比例尺的比例因子,比例尺的比例值会根据比例因子变化。paramsnamemeaningvaluescaleNumber比例因子numberruler.scale(0.5);resizeresetscalewidthandheight或sizeparamsnamemeaningvaluewidth?比例绘制宽度数字高度?尺子绘图高度数字大小?标尺尺寸numberruler.resize({width:1920,height:1080,size:18,});updateupdateupdaterulerstyleparamsnamemeaningvaluestyle?标尺样式Objectruler.update({fontColor:"#fff",unit:{text:"mm",},});changeScrollElement改变标尺监控的滚动对象params名称含义值scrollElement监控的滚动对象show显示标尺ruler.show();隐藏隐藏标尺ruler.hide();销毁清除标尺ruler.destroy();