svg中text标签换行显示,并实现拖拽移动text标签

1 篇文章 0 订阅

如图,项目中需要一个在线批阅的功能,批阅者可以在线给word文档进行批注和打勾打叉等功能,后来又追加移动批注和批注换行的功能,想法就是用户通过\n或者按钮等操作对文本进行一个切割,

例如 图片中 的文本 

嘻嘻嘻\n哈哈哈\n啦啦啦\n么么么\n哒哒哒

然后对文本用split("\n")方法进行切割,变成数组['嘻嘻嘻','哈哈哈','啦啦啦','么么么','哒哒哒']

//x 和 y 是做鼠标移动时回传出来的,因为text便签无法换行,所以要换行必须使用tspan标签,

即在text标签中插入tspan便签,x和y分别是控制tspan的x轴和y轴,是相对于svg的,而不是针对于父级text的,

let arr = ['嘻嘻嘻','哈哈哈','啦啦啦','么么么','哒哒哒']

let str

arr.map((item, index) => {

     let k = `<tspan x="${x}" y="${y + 20 * (index + 1)}">${item}</tspan >`;

     str += k;

});

因为不止有批注还有勾叉,涂鸦等,所以后台给了我一个text字段可以自己存东西,如下图是存text的

 这个存的是涂鸦的

 移动的话也是需要取出存储的上一次的自段,然后动态去根据x,y的回传值对point的各个坐标进行加减计算,逻辑其实并不复杂,关键储存的东西想清楚,就是业务代码的工作量了,

如果要移动的话,其实还需要给每个标签外加一个rect标签,鼠标移入时让rect 显示,移出时关闭,给予颜色,便于操作,而且如果没有这个rect标签,当你直接拖拽text标签时,他会是一个直接选中文字的效果,而不是拖动

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值