码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Fabric.js 元素被遮挡的部分也可以操作~



    theme: smartblue

    我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第13篇文章,点击查看活动详情


    本文简介

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

    题目:

    当两个元素有部分重叠时,选中底层元素后,想通过被盖住的部分移动元素,该如何实现?

    01.gif

    其实 Fabric.js 已经提供了相应的 API 去完成上面的需求了。但直到今天, Fabric.js 官方文档还是那么晦涩难懂,于是就有了本文。

    动手实现

    先来看看默认的效果

    02.gif

    默认情况下,被选中的元素会跑到视图的最顶层,释放后会恢复到原来的层级。

    如果需要做到“本文简介”提到的效果,需要将 preserveObjectStacking 设置为 true ,同时使用 altSelectionKey 指定组合键。

    先看看官方文档

    preserveObjectStacking :Boolean

    Indicates whether objects should remain in current stack position when selected. When false objects are brought to top and rendered as part of the selection group

    将 preserveObjectStacking 设置为 true ,可以让元素被选中时保留在原来的层级,我在 《Fabric.js 元素被选中时保持原有层级》 里也有提到过。

    altSelectionKey :null|String

    Indicates which key enable alternative selection in case of target overlapping with active object values: 'altKey', 'shiftKey', 'ctrlKey'. For a series of reason that come from the general expectations on how things should work, this feature works only for preserveObjectStacking true. If null or 'none' or any other string that is not a modifier key feature is disabled.

    altSelectionKey 可以设置选中的组合键,可传入 'altKey'、 'shiftKey'、 'ctrlKey' 三个值。分别对应键盘上的 alt键、shift键、ctrl键。

    如果传入的是 'null'、'none' 或其他不相关的字符,就不采用任何功能键配合(当没事发生过)。

    由于 Fabric.js 的默认操作逻辑(前面演示过),在设置 altSelectionKey 的同时最好将 preserveObjectStacking 设置成 true 。

    所以最终的代码如下所示:

    ```html

    ```

    官方文档的描述对于刚接触 Fabric.js 的工友来说可能会有点懵。学 Canvas 相关技术建议动手实践一下~

    代码仓库

    ⭐ Fabric.js 元素选中时保持原来层级(按着alt可继续选中)

    推荐阅读

    👍《Fabric.js 从入门到膨胀👍👍👍》

    👍《Fabric.js 动态设置字号大小》

    👍《Fabric.js 上划线、中划线(删除线)、下划线》

    👍《Fabric.js 自由绘制圆形》

    👍《Fabric.js 橡皮擦的用法(包含恢复功能)》

    👍《Fabric.js 缩放画布》

    👍《Fabric.js 变换视窗》

    👍《Fabric.js 拖拽平移画布》

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

  • 相关阅读:
    【spring和容器系列】spring bean
    vue3的钩子函数分析
    Linux——进程控制之终止
    MySQL 慢查询探究分析
    前端笔试题总结,带答案和解析(三)
    [msyql]实战:关于回表的一次查询优化实战
    php 进程通信系列 (四)共享内存
    VUE综合数据库编程
    【Mybatis】基础部分
    Wireshark TS | 快速重传和乱序之混淆
  • 原文地址:https://blog.csdn.net/weixin_39415598/article/details/126869073
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号