1.2.10 • Published 8 months ago

react-sketch-ruler v1.2.10

Weekly downloads
-
License
MIT
Repository
github
Last release
8 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

8 months ago

1.2.7

8 months ago

1.2.9

8 months ago

1.2.10

8 months ago

1.2.0

10 months ago

1.1.1

11 months ago

1.2.6

9 months ago

1.2.5

9 months ago

1.2.4

10 months ago

1.2.3

10 months ago

1.2.2

10 months ago

1.2.1

10 months ago

1.1.0

11 months ago

1.0.2

11 months ago

1.0.1

11 months ago

1.0.0-beta.3

11 months ago

0.0.0-beta.2

11 months ago

0.0.0-beta.1

12 months ago