html svg矩形添加文字,SVG文字交互区域的制作注意:html object in SVG
SVG文字交互区域的制作注意
在很多情况下,我们使用d3(或者其他SVG类库)创建交互式图表时,都需要将html元素插入到SVG元素上。典型的例子,就是图表中有需要交互式修改文字的地方,当用户点击了某个svg text元素,这里我们需要将一个html元素 input“放进”SVG元素中,并在这个input元素上绑定事件,从而快速更改文字。而svg本身元素类型是提供不了类似的功能的,所以用到html元素是必须的。
SVG元素主要有如下几类:svg(定义svg文档片段), rect(定义矩形), circle(定义圆形),ellipse(定义椭圆),path(路径),line(线),ploygon(多边形),text(文字),title(标题), desc(描述), g(群组), defs(参考元素), image(图片元素)。详见:http://www.w3school.com.cn/svg/svg_reference.asp
但是,直接将html元素插入SVG元素内是不可以显示的。
如下例,使用d3js设置text元素是可以显示的,但是如果把插入的元素改为div,则div元素虽然可以创建,但是不可见。
JavaScript
node.append("text")
.attr("dx", 16)
.attr("dy", ".0em")
.text(function(d) { return d.name });
1
2
3
4
node.append("text")
.attr("dx",16)
.attr("dy",".0em")
.text(function(d){returnd.name});
html object in SVG
这是使用SVG绘图时经常遇到的问题。有两个解决办法:
1.将div使用SVG元素foreignObject包裹。
这个办法的好处是,通过foreignObject,可以将div元素嵌入SVG片段来处理。详见:http://ajaxian.com/archives/foreignobject-hey-youve-got-html-in-my-svg.
但是此方法不兼容IE任何版本,详见https://developer.mozilla.org/zh-CN/docs/Web/SVG/Element/foreignObject
2.将div定义为浮动层,然后使用left, top属性,等计算位置。
用这种方法制作文字提示框,就像这样:
JavaScript
d3.select("#nytg-tooltip").style('top',ypos+"px").style('left',xpos+"px").style('display','block');
1
d3.select("#nytg-tooltip").style('top',ypos+"px").style('left',xpos+"px").style('display','block');
这个方法比起第一种,在位置计算上复杂度是一样的。并且浮动的div更容易控制。具体而言这有一个案例:
结论:
对于要进行交互操作的文字区域,通常要借助html元素的力量来实现效果。将html元素加入SVG有两种方法,其一是将div使用SVG元素foreignObject包裹,其二是将div定义为浮动层,然后使用left, top属性,等计算位置。
这里还要特别提到一个案例:在线思维导图软件mindmo也是这样处理文字区域的交互问题的。它将所有的节点文字区域都用浮动的div显示,使用top,left属性来控制其位置;而svg只用于路径显示。例如:https://www.mindomo.com/mindmap/cd8215d5e5b1427c9c22b4abc6aae5d6
html svg矩形添加文字,SVG文字交互区域的制作注意:html object in SVG相关推荐
- php中怎么给文字加颜色,PHP水印类,支持添加图片、文字、填充颜色区域的实现...
*自己整理的一个水印类* 支持添加图片.文字.填充颜色区域 /** * 图片加水印类,支持文字水印.透明度设置.自定义水印位置等. * 使用示例: * $obj = new WaterMask($im ...
- 图片添加边框和文字怎么弄?图片编辑在线教学
大家平时在拍完照片后,会对它进行一些编辑处理吗?像我每次拍完照,都会对图片进行一些后期处理,有时也会给图片添加一些边框或者文字,美化图片并增加图片信息量.那你们平时都是怎么给图片加上边框和文字的呢 ...
- php 图片填充图片,PHP水印类,支持添加图片、文字、填充颜色区域的实现_php实例...
下面小编就为大家带来一篇PHP水印类,支持添加图片.文字.填充颜色区域的实现.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 *自己整理的一个水印类* 支持添加图片.文字 ...
- php制作白色背景图加字,PHP实现水印类,支持添加图片、文字、填充颜色区域
本篇文章主要介绍PHP实现水印类,支持添加图片.文字.填充颜色区域,感兴趣的朋友参考下,希望对大家有所帮助. *自己整理的一个水印类* 支持添加图片.文字.填充颜色区域 /** * 图片加水印类,支持 ...
- svg.draggable.js 实现动态向svg中添加图形和图片并可以拖拽
源码: <!doctype html> <html> <head><meta charset="utf-8"><title&g ...
- jupyter添加标题、文字注释
转载:jupyter添加标题.文字注释 本文将分上下两部分简单介绍Jupyter notebook的入门教程,英文原文出处: Getting started with the Jupyter note ...
- android 图片绑定按钮,Android编程实现给Button添加图片和文字的方法
本文实例讲述了Android编程实现给Button添加图片和文字的方法.分享给大家供大家参考,具体如下: //为按钮添加图片和文字的方法 public Spanned getSpan(int id, ...
- 趣学python3(2)-添加以数字文字形式使用下划线的功能,以提高可读性
添加以数字文字形式使用下划线的功能,以提高可读性 x=2_111_222 y=0x_fff_6da print(x) print(y) 2111222 16774874
- php背景图添加字,怎样给视频后面加背景图 视频加背景图片并添加一行广告文字...
有不少广告小视频中,视频画面是一张海报背景图片,图片上显示一个小视频播放,并且在画面上还有显示一行广告字幕.这样的宣传视频制作其实蛮简单的,怎样给视频后面加背景图片的方法倒是挺多,要给视频加背景图片的 ...
最新文章
- K-BERT | 基于知识图谱的语言表示模型
- Android操作系统11种传感器介绍
- 奥鹏C语言专科在线作业答案,奥鹏13春电子科大《C语言(专科)》在线作业3答案...
- IT职场的一些处事之道
- 一个简单的Blob存取例子
- matlab 信道模拟 差错概率,移动信道差错序列的分布概率模拟法及门限电平的讨论...
- 2011对于运维的思考
- James McCrae
- Swift 5.0 值得关注的特性:Handle unknown values using @unknown default
- python单位转换编程_[转]Python编程FAQ
- 计算机二级 office 英语,计算机二级office题库及答案
- MyEclipse10破解过程
- 在智能家居音箱领域上的音频功放芯片IC
- Fluent 湍流非预混燃烧模拟
- 【第19天】内涵深厚才能妙语连珠
- 老旧笔记本安装openwrt实践:
- 我是如何把python爬虫获取到的数据写入Excel的?
- Rstudio(4.0.5 )安装Rtool40
- js实现点击按钮使图片排序
- 知名硅谷黑客当街被刺身亡!年仅43岁,马斯克都怒了
热门文章
- win10 gtx1660ti 配置vs opencv cuda加速
- 第一波瓜果盲盒发出去了,我有太多话要说!
- transaction、Conference、Workshop的区别
- 掌控板+麦轮,Mixly + Blynk,让你的麦轮战甲嗨炸全场!
- 60后水果店老板做微信营销
- Nginx运行FastCGI程序(ngx_http_fastcgi_module模块、fcgi库、spwan-fcgi进程管理器)
- oracle imp ora 00959,如何IMP存储在多TABLESPACE上的对象(IMP-00003 和 ORA-00959 问题的对应)...
- SAP FICO未清账和已清账的区别解释
- 哪里可以查询网站ALEXA排名? ALEXA排名意味着什么?
- 《css基础知识》——案例:淘宝首页的登录界面