前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从零开始,开发一个 Web Office 套件(5):Mouse hover over text

从零开始,开发一个 Web Office 套件(5):Mouse hover over text

作者头像
zhaokang555
发布2023-10-17 10:02:37
1140
发布2023-10-17 10:02:37
举报
文章被收录于专栏:赵康的日常专栏

《从零开始, 开发一个 Web Office 套件》系列博客目录 这是一个系列博客, 最终目的是要做一个基于HTML Canvas 的, 类似于微软 Office 的 Web Office 套件, 包括: 文档, 表格, 幻灯片... 等等. 对应的Github repo 地址: https://github.com/zhaokang555/canvas-text-editor

2. 富文本编辑器(MVP)

2.15 Mouse hover over text

2.15.1 再议 Bounding box

首先,让我们来回顾一下CanvasTextEditorChar的包围盒:

如上图,CanvasTextEditorChar的包围盒是由:left, boundingBoxTop, width, height定义的。另外,其top仅指的是textBaseLine的纵坐标,跟包围盒没有直接的关系。 我们期望的结果是:当鼠标hover在包围盒上时,产生相应变化。 所以,不能直接让CanvasTextEditorChar直接继承ResponsiveToMouseHover,因为二者的top含义完全不同。而是要让CanvasTextEditorChar持有它作为自己的包围盒。

2.15.2 实现

修改CanvasTextEditorChar

  • 让其持有一个boundingBox对象:
    • 添加属性:boundingBox: ResponsiveToMouseHover
    • constructor中为boundingBox初始化
  • 当修改Char的位置信息时,要同时更新boundingBox的位置信息
  • render中调用boundingBox.render()

同时,修改CursorType:

添加普通文字对应的鼠标样式:

然后修改CanvasTextEditorParagraphCanvasTextEditor中对应的destructor:

2.15.3 效果

为了看得更清楚,我们可以加上一些辅助线。修改ResponsiveToMouseHover.render():

然后再看下效果:

(未完待续)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2. 富文本编辑器(MVP)
    • 2.15 Mouse hover over text
      • 2.15.1 再议 Bounding box
      • 2.15.2 实现
      • 2.15.3 效果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档