编辑文本 Fabricjs - IText 格式字母和同时选择 textDecoration

Posted

技术标签:

【中文标题】编辑文本 Fabricjs - IText 格式字母和同时选择 textDecoration【英文标题】:Editor Text Fabricjs - IText format letters and simultaneous selection textDecoration 【发布时间】:2016-05-05 08:06:20 【问题描述】:

https://jsfiddle.net/gislef/Lvfpq57h/

为了使这个编辑器成为我作为 kitchensink 文本编辑器的基础,我咨询了 fabric js documentation about IText 并在 Jsfiddle 中看到了一些孤立的示例。

我有两个问题:

如何仅选择文本中选择的字母和格式?

如何同时选择文本装饰的三个选项:下划线、穿线和上划线?

当前代码:

radios5 = document.getElementsByName("fonttype");  // wijzig naar button
for(var i = 0, max = radios5.length; i < max; i++) 
    radios5[i].onclick = function() 

        if(document.getElementById(this.id).checked == true) 
            if(this.id == "text-cmd-bold") 
                canvas.getActiveObject().set("fontWeight", "bold");
            
            if(this.id == "text-cmd-italic") 
                canvas.getActiveObject().set("fontStyle", "italic");
            
            if(this.id == "text-cmd-underline") 
                canvas.getActiveObject().set("textDecoration", "underline");
            
            if(this.id == "text-cmd-linethrough") 
                canvas.getActiveObject().set("textDecoration", "line-through");
            
            if(this.id == "text-cmd-overline") 
                canvas.getActiveObject().set("textDecoration", "overline");
            

         else 
            if(this.id == "text-cmd-bold") 
                canvas.getActiveObject().set("fontWeight", "");
            
            if(this.id == "text-cmd-italic") 
                canvas.getActiveObject().set("fontStyle", "");
              
            if(this.id == "text-cmd-underline") 
                canvas.getActiveObject().set("textDecoration", "");
            
            if(this.id == "text-cmd-linethrough") 
                canvas.getActiveObject().set("textDecoration", "");
              
            if(this.id == "text-cmd-overline") 
                canvas.getActiveObject().set("textDecoration", "");
            
        


        canvas.renderAll();
    

【问题讨论】:

感谢分享此代码!我说的是fabricjs和canvas,它看起来很棒,你有什么问题吗?看起来工作正常!谢谢。 【参考方案1】:

在您的示例中,您使用的是 fabric.js 1.5.0 的版本

fabric.js 的最后一个(也可能是之前的)版本中,我们提供了更改唯一选定文本样式的方法。文档中的Here是对这个方法的描述

你可以像这样使用它:

canvas.getActiveObject().setSelectionStyles(
  underline: true,
  overline: true
)

【讨论】:

以上是关于编辑文本 Fabricjs - IText 格式字母和同时选择 textDecoration的主要内容,如果未能解决你的问题,请参考以下文章

FabricJS IText - 如何添加具有多种样式的文本框?

如何为 IText Fabricjs 中的每个项目设置绝对位置

在fabric js中擦除iText时显示光标线代替擦除的字符

如何在 FabricJS 中为 IText 对象添加按键监听器?

How to get the edited text from itext in fabricjs

How to get the edited text from itext in fabricjs