svg中text标签换行显示,并实现拖拽移动text标签
如图,项目中需要一个在线批阅的功能,批阅者可以在线给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标签时,他会是一个直接选中文字的效果,而不是拖动
svg中text标签换行显示,并实现拖拽移动text标签相关推荐
- svg.draggable.js 实现动态向svg中添加图形和图片并可以拖拽
源码: <!doctype html> <html> <head><meta charset="utf-8"><title&g ...
- 微信小程序中如何设置textarea或者van-field中的placeholder换行显示
微信小程序中如何设置textarea中的placeholder换行显示 van-field 中直接修改textarea 标签的样式即可 <textarea class="txt_wor ...
- html 右侧滚动条,html中去掉textarea右侧滚动条和右下角拖拽
摘要 腾兴网为您分享:html中去掉textarea右侧滚动条和右下角拖拽,湘税社保,唯品会,上海交通,钱大掌柜等软件知识,以及玫瑰小镇魔法花园,raw格式转换软件,阳光天天购,live壁纸,废品机械 ...
- Unity 基础 之 在 UGUI 上简单实现VideoPlayer视频播放的功能,简单暂停播放/显示视频名称/显示时长/拖拽播放等
Unity 基础 之 在 UGUI 上简单实现VideoPlayer视频播放的功能,简单暂停播放/显示视频名称/显示时长/拖拽播放等 目录 Unity 基础 之 在 UGUI 上简单实现VideoPl ...
- html中tr中加判断换行符,深入解析HTML的table表格标签与相关的换行问题
何为table:table者Html表格也,数据之载体. 下面是一个比较标准的table代码写法: XML/HTML Code复制内容到剪贴板 MonthDateAUG18 简单的HTML表格由tab ...
- EasyUI中放置Droppable的使用以及实现拖拽排序
场景 效果 实现 webapp下新建droppable文件夹,在其下新建basic.html <!DOCTYPE html> <html lang="en"> ...
- vue+openlayers中实现图片展示与图片的拖拽和放大缩小(一)
前言: openlayers中渲染图片是有多种方法的, Icon ,Image 等等都可以实现将图片放到地图上面,但是操作图片的话,方法比较少了,这里是配合 ol-ext 来实现的. 相关资料: 1. ...
- Unity获取组件的几种方式(拖拽法、标签法、名字法)
拖拽法 public GameObject cube;//以托动的形式void Start(){//获取该物体身上的刚体组件Rigidbody r=GetComponent<Rigidbody& ...
- Google map地图限制显示区域、拖拽范围
根据坐标限制显示区域.限制地图拖拽范围 function moveLimit(){var strictBounds = new google.maps.LatLngBounds(new google. ...
最新文章
- Android--相对布局
- Mysql5.7安装错误处理与主从同步及!
- MySQl 8.0.13版本修改密码
- 怎么样递增的注册成对的点云
- Dockder的CS模式:
- 今天起支付宝还信用卡开始收费 每月2000免费额度
- SAP BPC最佳实践-BPC安装及配置的常见问题
- GetComponentInParent 和 GetComponentsInParent的区别
- 迟滞比较器及施密特触发器详解
- 申请清华大学计算机类的理由,选择清华大学的十大理由(网络收集整理)
- uni-app调用wifi接口
- linux源码解析-dup_task_struct函数
- bcm43142 linux 驱动下载,CentosRedhat下bcm43142博通无线网卡linux驱动之二
- 帝国cms ajax,帝国CMS封装的ajax加载信息框架代码
- [已解决]Notepad++ 无法安装HexEditor
- 大学328门专业课程标准英文翻译模板
- 配置虚拟机(VMware Workstation)静态 IP 地址
- Python实用工具之制作证件照(有界面、附源码、赞关藏)
- phpstorm全局搜索
- 商用计算机 报价,ASUS - 台式机 - 商用台式电脑配置价格
热门文章
- python贪心法_算法-贪心
- matlab 橙色字母,改善MATLAB中橙色的檢測
- java 替换 word_Java 在 Word 文档中使用新文本替换指定文本的方法
- C++ CodeWar KATA4:Human readable duration format
- Java同一个线程对象能否多次调用start方法
- VoLTE 场景功耗测试
- win10开机蓝屏_电脑用户遇到蓝屏ACPIBIOSError应该如何解决?
- JAVA多线程:sleep(0)、sleep(1)、sleep(1000)的区别(四)
- 10条微信是高情商人士聊天技巧,避免尴尬沟通
- 深入解析Spark中的RPC