# leafer-x-ruler **Repository Path**: sourcenet/leafer-x-ruler ## Basic Information - **Project Name**: leafer-x-ruler - **Description**: leafer-ui的标尺线插件 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: http://leafer-x-ruler.sourcenet.cc - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 0 - **Created**: 2023-12-14 - **Last Updated**: 2025-04-30 ## Categories & Tags **Categories**: webui **Tags**: None ## README # leafer-x-ruler 标尺线插件 支持不同单位px、cm、in、pt、pc、mm转换, 以及自定义单位 ## show ![cover](https://github.com/LvHuaiSheng/leafer-x-ruler/blob/master/playground/src/assets/cover2.png?raw=true) ### 1.X版本文档请查看:[V1.x文档](./README_v1.md) #### 如何从1.x升级到2.x > 1. 只需将1.x中自定义的config和options配置项合并即可,如无自定义配置项 那么可直接升级,参考下方配置 > 2. 2.x版本调整了`themes`初始化配置项,将Map对象改为普通对象,初始化速度更快,自定义主题更便捷 ```js // -- 1.x版本 -- const config={ enabled: true, } const options={ ruleSize: 20, } const ruler = new Ruler(app,config,options) // -- 2.x版本,只需将config和options合并即可 -- const config={ enabled: true, ruleSize: 20, } const ruler = new Ruler(app,config) ``` ### use #### 基本使用 ```js import { App } from 'leafer-ui' import { Ruler } from 'leafer-x-ruler' const app = new App({ view: window, tree: {}, editor: {}, }) // 实例化标尺插件 const ruler = new Ruler(app) // 启用、禁用 ruler.enabled = false ``` #### 自定义配置示例 ```js import { App } from 'leafer-ui' import { Ruler } from 'leafer-x-ruler' const app = new App({ view: window, tree: {}, editor: {}, }) // 实例化标尺插件,传入自定义配置 const ruler = new Ruler(app,{ // 使用自定义的单位 unit:'cs', // 添加自定义单位 conversionFactors: { // 自定义单位cs cs: { px: 2, gaps: [5000, 2500, 1000, 500, 200, 100, 50, 20, 10], defaultGap: 1000 } } }) // 添加自定义主题 ruler.addTheme('custom1', { backgroundColor: '#6cb0ab', textColor: '#a45454', borderColor: '#6f4593', highlightColor: 'rgba(22,93,255,0.75)' }) // 切换主题 ruler.changeTheme('custom1') // 切换字体 ruler.changeUnit('px') // 启用、禁用 ruler.enabled = false ``` ### QA ```js // 如果使用侧边栏的伸缩时标尺宽高并未同步更新,或许是因为画布的大小并未改变无法触发resize事件;如果想改变画布的大小并使标尺同步,需要自行监听窗口大小变化,并触发leafer-ui的resize事件,以下是在vue3中使用的示例: ``` ## 内置属性
属性 说明 操作方式 类型 示例值 默认
enabled 启用、禁用 get / set boolean true true
theme 使用主题名称 get / set string dark light
rulerLeafer 标尺线层Leafer get Leafer - -
config 标尺设置 set RulerConfig - -
## 内置方法
方法 说明 参数类型 示例值
changeEnabled 启用、禁用 (boolean) true
addTheme 添加自定义主题 (string,ThemeOption) -
removeTheme 移除自定义主题 (string) -
changeTheme 切换主题 (string) -
addUnit 添加自定义单位 (string,ConversionFactor) -
removeUnit 移除自定义单位 (string) -
changeUnit 切换单位 (string) cm
forceRender 强制渲染 -
#### RulerConfig ```ts type RulerConfig = { /** * 是否启用标尺线 */ enabled?: boolean /** * 标尺线主题,默认light,可选(light:明亮,dark:暗黑) */ theme?: string, /** * 单位 默认px,内置了px、cm、in、pt、pc、mm */ unit?: string, /** * 标尺宽高 */ ruleSize?: number; /** * 字体大小 */ fontSize?: number; /** * 主题,默认存在明亮、暗黑主图 */ themes?: {[key: string]: ThemeOption} /** * 定义单位转换因子 (每单位对应的像素数),(可从源码内查看预设定义) */ conversionFactors?: {[key: string]: ConversionFactor}; } ``` #### ThemeOption ```ts type ThemeOption = { /** * 背景色 */ backgroundColor: string, /** * 文字颜色 */ textColor: string, /** * 边框颜色 */ borderColor: string, /** * 高亮颜色 */ highlightColor: string } ``` #### ConversionFactor ```ts export interface ConversionFactor { /** * 自定义单位对应的像素数,比如英寸单位:1英寸对应96px,那这里就是96 */ px: number /** * 缩放倍率,对应缩放比例:[0.02, 0.03, 0.05, 0.1, 0.2, 0.5, 1, 2, 5] */ gaps: number[] /** * 默认缩放倍率(如果没有匹配到缩放比例对应的倍率,则使用默认值defaultGap) */ defaultGap: number } ``` ## 运行源码 ```sh npm run start # 开始运行项目 npm run build # 打包插件代码,同时会创建types npm run test # 自动化测试 ``` ## usage ### install ```shell npm i leafer-x-ruler ```