【发布时间】:2017-09-18 09:12:36
【问题描述】:
据我所知,不可能在 FabricJS 中向 textBackgroundColor 添加填充(填充存在,但对 textBackgroundColor 没有影响),所以我试图修改文本的外观以给人一种有填充的印象.
我通过在文本对象中的每一行末尾自动添加空格来做到这一点。它并不优雅,但很接近。
但是我遇到了 1 个问题,我的代码变得有点混乱。
现在添加新行(按回车键)无法按预期工作。
光标似乎出现在它应该出现的字符后面,并且必须按两次回车才能进入新行,此时已添加了一个空行。
出了什么问题,我怎样才能让它重回正轨?
我认为要解决空行错误,如果该行包含 1 个或多个字符,则仅添加空格是有意义的,但我无法做到这一点。
这是我的Fiddle
JS
var canvas = new fabric.Canvas('mycanvas');
var activeObject = canvas.getActiveObject(str1);
var objects = canvas.getObjects();
var concatstr = '';
var res;
var str;
var str1;
var abcd;
canvas.on('text:changed', function() {
var concatstr = '';
var activeObject = canvas.getActiveObject();
var txtsa = jQuery.trim(activeObject.text);
values = txtsa.split('\n');
jQuery.each(values, function(index, val) {
jQuery.trim(val);
concatstr += " " + val + " " + "\\n";
});
var temp = concatstr.replace(/ +/g, ' ');
var final = temp.replace(/\\n/g, "\n");
activeObject.setText(final);
});
var text1 = new fabric.IText(' Text ', {
top: 100,
left: 100,
textBackgroundColor: '#000',
fontSize: 30,
lineHeight: 0.9,
fill: 'white',
fontWeight: 'bold',
textAlign: 'center',
fontFamily: 'Helvetica Nue, Helvetica, Sans-Serif, Arial, Trebuchet MS',
});
canvas.add(text1);
canvas.renderAll();
【问题讨论】:
-
请参阅this other question,这是文本对象上的填充和边距的潜在答案。
标签: javascript jquery fabricjs