fabric.js实现文本自动换行(代码片段)

MINO吖 MINO吖     2023-01-09     248

关键词:

在Fabric.js中,可以通过 Text  IText;创建文字,但是文本是无法换行

 Fabric.js 提供了 Textbox 类,继承自 IText;

Textbox 类允许用户调整文本矩形的大小并自动换行。文本框的Y比例已锁定,用户只能更改宽度。高度将根据线的环绕自动调整。

 代码

  • 设置 splitByGrapheme
  • 设置 width
  • 设置 lockScalingY
let text = new fabric.Textbox(work, 
        stroke: "red",
        fill: "blue",
        width: 100,
        top: 0,
        left: 0,
        fontSize: 18,
        lineHeight: 1,
        fontWeight: "bold",
        textAlign: "left", // 文字对齐
        lockRotation: true, // 禁止旋转
        lockScalingY: true, // 禁止Y轴伸缩
        lockScalingFlip: true, // 禁止负值反转
        splitByGrapheme: true, // 拆分中文,可以实现自动换行
        objectCaching: false,
    );

效果

         控制 mr 的 control 可以动态对文本进行换行。

 


 Q:

        但是,当Textbox选中(selected)一次后,再次选中修改宽度时,问题就来了。

        修改宽度文本没有自动换行,而是文本被拉长压缩了。

        对比前后两次的target属性,发现再次修改时,target的属性出现了scaleX、controls等属性,以至于后面宽度变化不会自动换行,而是文字伸缩。

解决:

        监听 textbox 的 scaling 事件,修改 textbox 的 scaleX 和 width 属性

text.on("scaling", (ev)=>
        let target = ev.transform.target
        let width = target.get("width") * target.get("scaleX")
        target.set("width", width)
        target.set("scaleX", 1)
    )

html文本自动换行(代码片段)

...动换行一、自嗨1.2.3.补全另一些textarea相关二、其他方法实现文本换行1.div可编辑模式总结一、自嗨扯皮,不正经向就是记录一下,没用过textarea,没甚麽好说的…你被骗进来了哈哈(啊别打我)1.今天拿到老师出的题,素材里有个图片是... 查看详情

listview文本超长自动换行(代码片段)

核心代码:<GridViewColumnHeader="状态"Width="200"><GridViewColumn.CellTemplate><DataTemplate><TextBlockText="BindingE3"TextWrapping="Wr 查看详情

csscss实现强制不换行/自动换行/强制换行(代码片段)

查看详情

fabric.js拖放元素进画布(代码片段)

本文简介点赞+关注+收藏=学会了学习Fabric.js,我的建议是看文档不如看demo。本文实现的功能:将元素拖进到画布中并生成对应的图形或图片。效果如下图所示:思路要实现以上效果,需要考虑以下几点:元素有拖拽功能。能在... 查看详情

26个常用易忘css小技巧(代码片段)

收集于平时常用但易忘的CSS实现方法,如有遗漏或补充,还请指正!解决inline-block元素设置overflow:hidden属性导致相邻行内元素向下偏移.wrapdisplay:inline-block;overflow:hiddenvertical-align:bottom复制代码超出部分显示省略号//单行文本.wrapove... 查看详情

android中recyclerview如何实现自动换行(代码片段)

...没写这篇文章之前,我往往都是使用GridLayoutManager来实现一行显示多个item的布局,但是这种做法是非常不灵活的,因为item的个数是固定的,且不能随着其长短来自动换行,所以今天就来跟大家分享下如何实现... 查看详情

使用 Fabric.js 的交互式文本字段

】使用Fabric.js的交互式文本字段【英文标题】:InteractivetextfieldswithFabric.js【发布时间】:2012-04-1800:58:36【问题描述】:过去几周我一直在使用Fabric.js,但关于文本字段,我发现只能在创建时设置文本。是否有任何可能的方法来... 查看详情

前端开发vue+fabric.js+element-plus实现简易的h5可视化图片编辑器(代码片段)

目录前言一、实战效果技术选型核心功能代码实现二、Fabric.js简介安装创建画布监听画布事件鼠标事件监听设置画布背景设置背景颜色向画布添加图层对象获取当前选中的对象控制图层层级将画布导出成图片下载为图片画布状态... 查看详情

qtablewidget单元格自动分行显示(代码片段)

文章目录前言只需一行代码实现自动换行代理模式实现自动换行总结前言最近使用QTableWidget,使用浑身解数就是不自动换行,像网上说的在设置完数据后调用resizeRowsToContents();就会自动换行,对我而言,没有任何作用,后面看网上... 查看详情

qtablewidget单元格自动分行显示(代码片段)

文章目录前言只需一行代码实现自动换行代理模式实现自动换行总结前言最近使用QTableWidget,使用浑身解数就是不自动换行,像网上说的在设置完数据后调用resizeRowsToContents();就会自动换行,对我而言,没有任何作用,后面看网上... 查看详情

Fabric.js 文本字段 - Android 问题

】Fabric.js文本字段-Android问题【英文标题】:Fabric.jsTextfield-issuewithAndroid【发布时间】:2014-12-1008:56:15【问题描述】:我正在使用fabric.js,但文本字段存在一些问题。它们显然在Android设备上不可编辑。我可以选择文本区域,但我... 查看详情

微信小程序解决view标签内的文本不能自动换行问题(代码片段)

情景一行文字太多,用view标签包裹时,超出屏幕;解决方法简单粗暴<viewstyle=“overflow-wrap:break-word;”>1232131231232132132132132132132132132132132132112321312312321321321321321321321321321321321321123 查看详情

fabric.js(代码片段)

Fabric.jsisapowerfulandsimpleJavascriptHTML5canvaslibraryFabricprovidesinteractiveobjectmodelontopofcanvaselementFabricalsohasSVG-to-canvas(andcanvas-to-SVG)parserFabric.jsJavascriptCanvasLibrary(fabr 查看详情

python使用fpdf的multi_cellapi实现长文本写入的自动换行功能实战

python使用fpdf的multi_cellAPI实现长文本写入的自动换行功能实战目录python使用fpdf的multi_cellAPI实现长文本写入的自动换行功能实战 查看详情

当包含的对象改变大小时,Fabric.js 自动调整组大小

】当包含的对象改变大小时,Fabric.js自动调整组大小【英文标题】:Fabric.jsauto-sizegroupcontrolswhencontainedobjectschangesize【发布时间】:2014-11-0600:47:15【问题描述】:当我有一组织物IText对象并一起更改它们的所有字体大小时,分组的... 查看详情

p标签中的文本换行(代码片段)

...normal:默认,被浏览器忽略空白pre:空白被浏览器保留.nowrap:文本不会换行,会在同一行上继续,一直走到需要换行为止pre-wrap:保留空白符序列,但正常换行pre-line:合并空白符 查看详情

r语言ggplot2可视化自动换行适配长文本图例(legend)实战:multiplelinesfortextperlegendlabel(代码片段)

R语言ggplot2可视化自动换行适配长文本图例(legend)实战:MultipleLinesforTextperLegendLabel#导入包及数据处理library(stringr)library(tidyverse)#Createlonglabelstobewrappediris$Species=paste(iris$Species,"randomtexttomakethelabelsmuchmuchlongerthanthe... 查看详情

单行文本溢出加...的效果实现(代码片段)

white-space:nowrap;/*文本不换行*/overflow:hidden;/*溢出文本隐藏*/text-overflow:ellipsis;/*溢出文本省略  查看详情