【发布时间】:2025-11-20 18:00:03
【问题描述】:
我正在使用 D3.js 构建 a chart,它显示了有关员工能力的一些信息
如您所见,某些文本大于容器元素大小,因此,部分文本被剪切
我尝试动态更改文本字体大小,但这次尝试不是很成功:/
现在我的代码是这样的
.attr('font-size', function (d) {
var defaultSize = 14;
var angleForOneLetter = 1.14; //
console.log('angle=' + d.data.angle);
console.log('length=' + d.data.name.length);
console.log('str=' + d.data.name);
if (angleForOneLetter * d.data.name.length > d.data.angle) {
angleForOneLetter = d.data.angle / (d.data.name.length + 2);
console.log('letter angle=' + angleForOneLetter + '\n \n');
if (angleForOneLetter > 0.8) return 10;
if (angleForOneLetter > 0.7) return 10;
if (angleForOneLetter > 0.5) return 8;
if (angleForOneLetter > 0.4) return 6;
if (angleForOneLetter > 0.3) return 5;
return 3;
}
console.log('letter angle=' + angleForOneLetter + '\n \n');
return defaultSize;
});
它只适用于图表半径为580px;的情况
当图表半径变化时,我想要一种更好的方法来实现相同的目标并使文本适合边框
你可以在codepen上玩代码
【问题讨论】:
-
您的最终目标是否只是缩小文本以使其始终符合其界限?如果你这样做的话,大部分文本都会变得难以阅读。相反,我会保持所有文本大小相同,
...那些溢出的。然后我会添加一个鼠标悬停来显示全文。 -
是的,这是选项之一,但我仍然想知道,如何缩放文本以适应我的情况
-
@Mark 我怎么知道,如果文本溢出?