码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Fabric.js 手动加粗文本iText


    本文简介

    点赞 + 关注 + 收藏 = 学会了


    本文介绍 Fabric.js 的 IText 在画布上如何让用户手动加粗文本。

    效果如图所示:

    file


    要实现2种操作

    1. 全文加粗
    2. 只加粗选中的文字

    如果你还不清楚 Fabric.js 有什么用,我强烈推荐你阅读 《Fabric.js 从入门到目中无人》 。该文能让你的前端技术再点亮一个技能点。



    全文加粗

    file

    只需把 IText 的 fontWeight 属性设置成 bold 即可实现加粗。

    如果想变回默认样式,可以将 fontWeight 设为 normal 。

    修改完文字样式后,需要执行 canvas.renderAll() 重新渲染一下画布内容。

    <button οnclick="bold()">加粗</button>
    <canvas id="c2" width="250" height="300" style="border: 1px solid #ccc"></canvas>
    
    <!-- 引入fabric.js -->
    <script src="js/fabric.js"></script>
    <script>
      // 创建画布
      const canvas = new fabric.Canvas('c2')
    
      // 创建文本
      const iText = new fabric.IText('hello world')
      canvas.add(iText)
    
      function bold() {
        // 当前选中的元素
        let activeTxt = canvas.getActiveObject()
    
        // 只有选中文本才执行以下操作
        if (activeTxt) {
          activeTxt.fontWeight = 'bold' // 将字体加粗
          canvas.renderAll() // 重新渲染画布
        }
      }
    </script>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23


    加粗选中的文字

    file

    可以用 setSelectionStyles 设置被选中的文字样式,里面传一个样式对象即可。

    <button οnclick="bold()">加粗</button>
    <canvas id="c2" width="250" height="300" style="border: 1px solid #ccc"></canvas>
    
    <!-- 引入fabric.js -->
    <script src="js/fabric.js"></script>
    <script>
      // 创建画布
      const canvas = new fabric.Canvas('c2')
    
      // 创建文本
      const canvas = new fabric.Canvas('c2')
    
      // 创建文本
      const iText = new fabric.IText('hello world')
      canvas.add(iText)
    
      function bold() {
        // 当前选中的元素
        let activeTxt = canvas.getActiveObject()
        if (activeTxt) {
          activeTxt.setSelectionStyles({ 'fontWeight': 'bold' }) // 设置选中文字的样式
          canvas.renderAll() // 重新渲染画布
        }
      }
    </script>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24


    仓库

    • ⭐本文代码仓库(完整版)


    推荐阅读

    文章简介
    《Fabric.js 橡皮擦的用法(包含恢复功能)》橡皮擦需要下载一个工具包,详情可参考该文。
    《Fabric.js 基础画笔的用法 BaseBrush》画笔的基础用法
    《Fabric.js 自由绘制圆形》将“框选”动作改造成自由绘制圆形
    《Fabric.js 3个api设置画布宽高》宽高设置并不是在初始化是才能进行的,本文介绍3种方法设置画布宽高,让你的画布更容易适配不同的使用场景
    《Fabric.js 更换图片的3种方法(包括更换分组内的图片,以及存在缓存的情况)》如果你的项目需要动态更换画布上的图片,那我也给你总结了3中方法
    《Fabric.js 摆正元素的4种方法(带过渡动画)》一键摆正被你旋转过的元素
    《Fabric.js 将本地图像上传到画布背景》除了在初始化时设置画布背景外,我还做了本地上传背景的功能,让画布在运行时也能修改背景图
    《在 Vue3中使用Fabric.js实现渐变(Gradient)效果,包括径向渐变radial》官方入门教程也只有线性渐变,以至于某些文章说 Fabric.js 只支持线性渐变。但其实径向渐变也完全支持
    《Fabric.js 从入门到目中无人》Fabric.js 入门指南,学完能应付简单业务
    《Fabric.js 右键菜单》Fabric.js 暂时还没右键事件,如果你想实现右键菜单的功能,可直接复制该文章的代码~

    点赞 + 关注 + 收藏 = 学会了

  • 相关阅读:
    vue项目中定位组件来源的查找思路
    JavaScript-Obfuscator4.0.0字符串阵列化Bug及修复方法
    MyBatis标签之Select resultType和resultMap
    JUC笔记(六) --- 不可变共享模型
    数据中台实战(11)-数据中台的数据安全解决方案
    随机生成一个指定边数多边形
    SpringBoot使用redis解决分页查询大量数据慢的情况
    在Unity中如何设置设备的高、中、低配
    【总目录】机器学习原理剖析、开源实战项目、全套学习指南(50篇合集)
    c++最短路模型(抓住那头牛)
  • 原文地址:https://blog.csdn.net/weixin_39415598/article/details/125419945
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号