【问题标题】:How to inline text and image如何内联文本和图像
【发布时间】:2020-08-04 14:41:30
【问题描述】:

我有一个矩形,我想在中间放一个文本和一个小图像(图像和文本是内联的)。图片和文字必须有固定的间隙,所以当我改变文字的长度时,图片仍然与文字有固定的间隙。

我还试图为图像添加一个功能(如果我点击它,就会出现一个网站链接)

这就是我想要复制的内容

An example in image for what I am saying

这是我目前的代码(我已经尝试了一些方法,但没有奏效)

var svgContainer = d3.select("body").append("svg")
                                    .attr("width", 500)
                                     .attr("height", 500);
 
var g = d3.select("svg") .append("g")
 var rectangle = g.append("rect")
                  .attr("x", 0)
                  .attr("y", 0)
                  .attr("width", 300)
                  .attr("height", 200)
                  .style("fill","pink");
                         
 var text = g.append("text")
 .attr("x",150)
 .attr("y",100)
 .attr("text-anchor","middle")
 .text('Nam oc cho')
 
 var img = g.append("image")
 .attr("x",200)
 .attr("y",85)
 .attr("href","firefox.jpg")
 .attr("height","20px")
.attr("width","20px")
                       
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>

https://jsfiddle.net/namkhoai16/o7cm9n35/38/

【问题讨论】:

  • 为什么没有图片? SVG 不进行重排,因此如果没有 javascript,当文本长度发生变化时,您将无法移动图像。
  • 我正在尝试用 d3.js 来做,但我不知道如何让它回流
  • 我刚刚编辑了我的问题

标签: svg button padding inline


【解决方案1】:

由于文本是用 text-anchor: middle 编写的,所以它在 150 之前有一半长度,在 150 之后有一半长度。所以我们只需要在它的 x 位置加上一半的长度就可以找到它的终点。

var svgContainer = d3.select("body").append("svg")
                                    .attr("width", 500)
                                     .attr("height", 500);
 
var g = d3.select("svg") .append("g")
 var rectangle = g.append("rect")
                  .attr("x", 0)
                  .attr("y", 0)
                  .attr("width", 300)
                  .attr("height", 200)
                  .style("fill","pink");
                         
 var text = g.append("text")
 .attr("x",150)
 .attr("y",100)
 .attr("text-anchor","middle")
 .text('Nam oc cho')
 
 var img = g.append("image")
 .attr("x",150 + text.node().getComputedTextLength () / 2)
 .attr("y",85)
 .attr("href","https://cnet2.cbsistatic.com/img/0ssO7VfSYSEzbQVQ6uK6FYamQx4=/940x0/2014/06/13/c582d2aa-092e-4d29-a616-a1e5c9403b36/firefox-logo-2014-vertical-4sts.jpg")
 .attr("height","20px")
.attr("width","20px")
                       
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>

【讨论】:

  • 非常感谢您的帮助,您是最棒的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-10
  • 2020-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多