Я строю a chart с помощью D3.js, который показывает некоторую информацию о компетентности работникаFit текст на SVG textpath
, как вы можете видеть, какой-то текст больше, чем размер контейнера элемента, из-за того, часть текста , разрезают
Я попытался изменить текст размер шрифта динамически, но этот процесс не был очень успешным:/
теперь мой код выглядит следующим образом
.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
Да, это один из вариантов, но мне все же хотелось бы знать, как масштабировать текст, чтобы соответствовать рамкам в моем случае. – bumbeishvili
@Mark, как я могу узнать, если текст переполняется? – bumbeishvili