【问题标题】:Fabric js text restrictionsFabric js文本限制
【发布时间】:2017-07-06 12:38:13
【问题描述】:

如何在 fabric.js 中实现这一点?

文字限制: 1)- 如果用户在可用的文本框中键入了太多文本,则不应允许他们这样做,并且应显示一条消息,告诉他们选择不同的消息或查找不同的字体。 找到了答案..

请帮我补2

2)- 如果用户键入的消息在两侧的文本框中剩余大量空间,则文本框的大小应调整到文本的 1 毫米以内。我想这是在文本框有虚线边框的情况下。另请注意,背景图案不会位于文本框下方,这也是文本未填满宽度时需要缩短文本框的另一个原因(以便显示更多背景)。

3)- 客户总是希望文本框的全高达到最大值,这样字母的顶部总是接触顶部,字母的底部总是接触底部,无论是小写和大写的混合,也不管如果字母有尾巴。
以下是一些示例来解释需要发生的事情(请阅读到列表末尾以正确理解):
“HELLO”这个词 - 所有字母都会接触到顶部和底部
“你好”这个词——“H”和“ll”将接触顶部和底部
“aaaa”这个词 - 即使小写字母会触及顶部和底部
“aaah”这个词——“h”会触及顶部和底部,而“aaa”只会触及底部
“大”这个词——因为“g”向下,“g”会触及底部,但
“bi”不会。这个词实际上会非常小,因为“b”会触及顶部而不是底部,“g”会触及底部而不是顶部,而“i”也不会触及。

【问题讨论】:

  • 在另一个stackoverflow here中有类似他的东西
  • 谢谢。我编辑了..第二点和第三点呢?在 fabric.js 中这些可能吗?

标签: javascript jquery html html5-canvas fabricjs


【解决方案1】:

对于问题2,你需要捕捉事件,

然后在函数内部你应该得到文本框的宽度和实际文本的宽度,并相应地调整文本框的宽度,比如

canvas.on('text:editing:exited',   onTextExited)
onTextExited = function(event)
{
var onemm = 10; //Need to calculate what one mm is in pixels
var canvasObj=event.target;
if(canvasObj.width > canvasObj._getTextWidth())
{
//Adjust the width of object 
canvasObj.width = canvasObj._getTextWidth() + onemm;
canvasObj.setCoords();
}

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-10
    • 2017-11-17
    • 1970-01-01
    • 2017-05-18
    • 2018-07-17
    • 2013-02-23
    • 1970-01-01
    • 2017-02-09
    相关资源
    最近更新 更多