1.2.10 • Published 9 months ago

react-sketch-ruler v1.2.10

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

react-sketch-ruler

In using react, the zoom operation used for page presentation

npm.io build status

Cloud Studio Template

🚀 Features

  • 💡 以鼠标为中心缩放页面, 可以使用pazoom的特性
  • 📦 减化配置
  • 💎 提供还原, 放大, 缩小的功能
  • 📦 平台与业务代码通过插槽的方式进行分离, 也就是你只需要专注你的业务代码, 其他交给平台

🔑 说明


插件应用范围: 适合作为低代码平台操作页面缩放工具,比如做图工具如, 大屏可视化, 做图工具图怪兽等,类似ps的缩放效果.

🌈 应用案例(目前只有vue版):

GoView 高效拖拽式低代码数据可视化开发平台

GoView 2X 应用源码地址

🦄 demo

案例浏览: https://kakajun.github.io/react-sketch-ruler image

安装

支持全局导入和模块导入

npm install --save react-sketch-ruler

yarn add react-sketch-ruler  -S

引入方式

将打包后的dist包拷贝,用import导入,支持下面两种引用方式

import SketchRule from 'react-sketch-ruler'
import 'react-sketch-ruler/lib/style.css'

CDN 引入

<script src="https://unpkg.com/react-sketch-ruler/lib/index.umd.js"></script>
<link type="text/css" rel="stylesheet" href="https://unpkg.com/react-sketch-ruler/lib/style.css" />

const SketchRule = window.SketchRuler

详情参见 CDN demo

支持的功能

  • 标尺渲染
  • 缩放内容,重绘标尺
  • 按Ctrl+鼠标滚轮缩放, 根据鼠标位置发生变化
  • 按空格拖动画布
  • 切换标尺状态,显示或隐藏
  • 参考线管理(增加删除)
  • 支持参考线任意地方拖拽
  • 左上角的眼睛,点击能控制红线显影
  • 初始化自动居中
  • 提供右下角按钮缩放,还原所需API
  • 刻度吸附效果
  • 选中阴影阴影响应
  • 阴影刻度数字响应

未来支持功能

  • [] 加入单元测试功能

参考一个完整的例子,点击这里

api

属性

属性名称描述类型默认值
scale初始化标尺的缩放及画布Number1(autoCenter 默认为true,初始值不生效)
rate初始化标尺的缩放Number1
thick标尺的厚度Number16
width放置标尺窗口的宽度Number1400
height放置标尺窗口的高度Number900
paddingRatio画布与外框间隔Number20% (基于外框宽高最小长度)
autoCenter自动居中对齐Booleantrue (设为false,那么需要在panzoomOption中传入startX,startY)
eyeIcon睁眼图标String-
closeEyeIcon闭眼图标String-
canvasWidth画布宽Number1000
canvasHeight画布高Number700
isShowReferLine是否显示标线Booleantrue
showRuler是否显示尺规Booleantrue
showShadowText是否显示阴影文字Booleantrue
lines初始化水平标尺上的参考线object{h:[],v:[]}
snapsObj吸附刻度集合object{h:[],v:[]}
snapThreshold吸附距离Number5
shadow阴影配置object{x: 0,y: 0, width: 0, height: 0}
gridRatio刻度分散比例Number1
selfHandle自己处理监听移动和缩放Booleanfalse
panzoomOptionpanzoom相关的扩展参数object-
palette标尺的样式配置参数Object如下表
属性名称描述默认值
bgColor画布背景#f6f7f9
longfgColor刻度背景#BABBBC
fontColor刻度字体颜色#7D8694
fontShadowColor刻度阴影字体颜色#106ebe
shadowColor激活阴影背景#E8E8E8
lineColor对准线颜色#51d6a9
lineType对准线类型solid (solid \dashed \ dotted)
lockLineColor锁定对准线颜色#d4d7dc
hoverColor标签颜色字体#fff
hoverBg标签颜色背景#000
borderColor尺子外边框颜色#eeeeef

更多pazoom插件的配置的panzoomOption参数,可以参考pazoom document

Event

事件名称描述回调参数
onHandleCornerClick左上角点击事件
updateScale更新scale事件
handleLine更新标线事件
onZoomChange画布移动,缩放事件{dimsOut:{elem: {}, parent: {}},originalEvent:{},scale,x,y}

使用说明

  1. 同时按Ctrl+鼠标滚轮缩放, 根据鼠标位置发生页面缩放
  2. 同时按空格+鼠标左键, 拖动画布
  3. 有些需要自己定义监听移动和缩放,不想按空格移动, 或者不想Ctrl+weel 移动, 那么可以设置selfHandle为true,然后通过ref获取到组件实例,然后通过实例调用组件的方法, 自定义监听按键
  4. 具体操作参见我插件里面的监听移动和缩放方法
const panzoomInstance = sketchruleRef.panzoomInstance

document.addEventListener('wheel', function (e) {
  if (e.ctrlKey || e.metaKey) {
    panzoomInstance.zoomWithWheel(e)
  }
})

// 让按下空格键才能移动画布
document.addEventListener('keydown', function (e) {
  if (e.key === ' ') {
    panzoomInstance.bind()
    e.preventDefault()
  }
})

document.addEventListener('keyup', function (e) {
  if (e.key === ' ') {
    panzoomInstance.destroy()
  }
})

插槽提供方法

事件名称描述回调参数
reset画布重置位置
zoomIn画布放大
zoomOut画布缩小
initPanzoom初始化panzoom实例

插槽ref

panzoomInstance panzoom实例

QQ 技术交流群:

欢迎大家一起参与插件建设

贡献者

最后

这是个开源业余做的功能,欢迎加强该插件的小伙伴加入, 如果插件react-sketch-ruler对您有帮助,请给个star,您的鼓励是我最大的动力。

引用

vue3标尺组件 vue3-sketch-ruler

1.2.8

9 months ago

1.2.7

10 months ago

1.2.9

9 months ago

1.2.10

9 months ago

1.2.0

12 months ago

1.1.1

1 year ago

1.2.6

11 months ago

1.2.5

11 months ago

1.2.4

12 months ago

1.2.3

12 months ago

1.2.2

12 months ago

1.2.1

12 months ago

1.1.0

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0-beta.3

1 year ago

0.0.0-beta.2

1 year ago

0.0.0-beta.1

1 year ago