如何在D3 SVG上绘制文本,如果它's的边界框符合某些标准
How can I draw text on a D3 SVG iff it's bounding box falls within certain criteria?
我使用D3.js在SVG容器上绘制一些文本。在绘制文本时,我稍微翻译了一下它的位置。我将翻译后的文本左边界的x位置存储在一个名为a
的变量中
var a = null;
var label = svgContainer.append("text")
.attr("x", 200)
.attr("y", 300)
.text("Hello World")
.attr("font-family", "Courier New")
.attr("font-weight", "bold")
.attr("font-size", "10px")
.attr("fill", "black")
.attr("transform", function(d){
var bb = this.getBBox();
console.log("bb.x = ", bb.x);
console.log("bb.y = ", bb.y);
console.log("bb.width = ", bb.width);
console.log("bb.height = ", bb.height);
a = bb.x - (bb.width/2);
return "translate(" + (bb.width / (-2)) + ", 0)";
}
);
我想更改此代码,使其绘制文本当且仅当a < 100
。我该怎么做?问题是,a仅在绘制文本时计算并指定值。到那时已经太晚了。在实际绘制文本之前,如何获取值??
您可以在获得BBox:后添加:.style("display", "none")
var a = null;
var label = svgContainer.append("text")
.attr("x", 100)
.attr("y", 10)
.text("Hello World")
.attr("font-family", "Courier New")
.attr("font-weight", "bold")
.attr("font-size", "10px")
.attr("fill", "black")
.attr("transform", function(d){
var bb = this.getBBox();
console.log("bb.x = ", bb.x);
console.log("bb.y = ", bb.y);
console.log("bb.width = ", bb.width);
console.log("bb.height = ", bb.height);
a = bb.x - (bb.width/2);
return "translate(" + (bb.width / (-2)) + ", 0)";
}
)
.style("display", "none");
然后使用:svgContainer.selectAll("text")
svgContainer.selectAll("text")
.attr("x", function(d) {
// enter your code/ validations in here
})
.style("display", "block");
相关文章:
- 在哪里可以学习ECMAScript标准中尚未包含的JavaScript功能
- 如何允许web浏览器记住未以标准方式发送的表单字段
- 上传带有XMLHttprequest的文件-多部分/表单数据中缺少边界
- 对于如何在没有modernizr的情况下用边界半径的功能检测检查来替换我的旧浏览器检查
- 命名约定的Web标准
- 仅在边界内时替换特定字符
- 将谷歌地图中的平移边界设置为图像覆盖
- 用于编码标准的javascript工具
- 将边界设置为overlayImage谷歌地图
- Sencha Ext JS排序标准以字符串而不是JSON的形式发送
- LokiJS与标准Javascript对象访问
- 为什么不是't这=>边界“;这个“;到周围的范围
- 获取以屏幕像素为单位的旋转SVG元素的边界
- RegEx:在单词边界添加加号
- backbone.js-映射标准url参数-使用多个参数
- 如何将日期转换为标准格式
- 我如何才能获得Facebook在边界内的位置列表
- 精灵从pixi到p2的边界多边形
- 为什么新js Fetch标准禁止响应头名称为'设置Cookie 1/2'
- 如何在D3 SVG上绘制文本,如果它's的边界框符合某些标准