首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

图形编辑器开发:最基础但却复杂的选择工具

在代码层,我们会使用 “图形拾取” 算法确定光标落在哪个图形的点击区域上,注意考虑隐藏、锁定、组的情况。...如果你对图形拾取的细节感兴趣,可以看我的这篇文章: 《如何在 Canvas 上实现图形拾取?》 隐藏和锁定的图形会被忽略,如果点的是组下的一个元素,要将整个组的所有元素都选中。...所以这也是它有时候也被叫做 移动工具 的原因。 移动的交互过程: 光标停留在已经被选中的图形上,按下鼠标不放; 然后拖拽鼠标,被选中图形跟随光标移动; 释放鼠标,表示移动到目标位置,移动结束。...要点: 拖拽的中途从没按住 Shift 到按住,要立即响应,代码实现上要补一个键盘事件监听,而不是靠鼠标移动事件,因为你不移动鼠标,被选中元素就不会更新。 比较 dx 和 dy 的大小。...dx 大,水平移动;dy 大,垂直移动。这样图形就能尽量靠近十字线(水平线+垂直线) 对齐到像素网格 对齐到网格,开启后,让图形在移动的时候,让图片尽量贴到网格线上。

37230

防御式CSS是什么?这几点属性重点防御!

很多时候,我们希望有一种方法可以避免某种CSS问题或行为的发生。我们知道,网页内容是动态的,网页上的东西可以改变,从而增加了出现CSS问题或奇怪行为的可能性。...5.锁定滚动链接 你是否曾经打开一个模态并开始滚动,然后当你到达终点并继续滚动时,模态下面的内容(主体元素)会滚动?这就是所谓的滚动链。...12.小心CSS网格中的固定值 假设我们有一个包含aside和main的网格。...为了避免这样的问题,在使用上述CSS网格时,一定要使用媒体查询。...CSS网格中的最小内容尺寸 与flexbox类似,CSS grid对其子项目有一个默认的最小内容尺寸,即auto。这意味着,如果有一个元素比网格项大,它将溢出。

4.4K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    10分钟内就可以学会的几个CSS高招

    CSS 中与布局和位置相关的所有内容都受框模型的影响,如果你打开 chrome 开发工具,你可以看到如何在页面上的任何元素计算框模型。 ?...在具有挑战性的 CSS 方面,例如如何在水平和垂直方向上居中 div 的古老问题。 ?...3、 Flexbox 很棒 一种选择是给子元素绝对定位,然后使用 top 和 left 属性移动到右下角,然后将其转换回50%,以将其放在可以工作的中心,但现代CSS有一种更好的方法是 使用flexbox...,允许你在 UI 中的任何位置创建灵活的列或行,当元素具有显示 flex 时,它还具有 x 和 y 轴,你可以在其上对齐其子项。...7、 变量的变量 注意我们如何在多个地方使用相同的颜色值,如果我们决定更改颜色,我们需要修改引用它的每一行代码,更好的方法是在根选择器上定义一个全局变量。 ?

    1.4K20

    吸附设计:学会正确地贴贴

    所谓网格,指的是在图形所在的场景世界上,以原点出发按照特定的 x 和 y 间隔绘制出一条条直线,所构成的网格。我们把两条直线的交点叫做网格点。 网格吸附就是 让目标点吸附到最近的网格点上。...我们会取被移动图形的 4 个顶点和中心点都作为目标点,先找到它们各自距离最近的参考线吸附点,再取这些其中 x 值最小的,计算出相对水平位移 dx,应用到图形上。y 方向同理。...在图形编辑器,正交锁定指的就是强制目标点只能在参照点的水平或垂直方向上。 效果等价 增量角为 90 且要求强制吸附的极轴追踪。 所以正交锁定的吸附算法实现,可以直接套用极轴追踪吸附算法。...1、像素网格吸附和参考线吸附同时开启 像素网格吸附(间隔为 1 的网格吸附)要求点强制吸附在像素网格上,即 x 和 y 的值是整数。 但是参考线可能是小数,如果吸附到参考线上,就对不上像素网格点了。...如果应用正交,因为要求目标点垂直或垂直于参照点,这样会导致点无法落在网格点上。二者无法同时满足。 最后方案是,先计算网格吸附后,然后对这个网格吸附点再做正交吸附。

    13310

    学前端到了CSS阶段,你一定要掌握这9大防御式开发技能

    我们在CSS布局时,是按照设计师的效果来开发的,但是实际的网页内容是动态的,网页上的内容是可以改变的,如:文字数量,图片尺寸、窗口大小等,再加上用户的一些意想不到的行为和运行环境,从而造成CSS布局的效果并没有按照我们预期的效果显示... 7、场景七:锁定滚动链我们会发现当子元素滚动到顶部或底部继续滚动滚轮时,会导致父元素的滚动,但这种行为有时会影响页面体验。...在子元素上应用overscroll-behavior: contain就可以禁止掉这一行为。...那这个时候利用网格布局,使用auto-fill和auto-fit就会是两个完全不同的效果。auto-fill :网格的最大重复次数(正整数),如果有剩余空间,则会保留剩余空间,而不改变网格项目的宽度。.../CSS3,JavaScript,真实企业项目开发,云服务器部署上线,从入门到精通PC端项目开发(1个)移动WebApp开发(2个)多端响应式开发(1个)共4大完整的项目开发 !

    1.8K00

    CAD常用命令、快捷键和命令说明大全 「建议收藏」

    二常用CTRL,ALT快捷键   ALT+TK 如快速选择   ALT+NL 线性标注 ALT+VV4 快速创建四个视口   ALT+MUP提取轮廓   Ctrl+B: 栅格捕捉模式控制(F9)   Ctrl...+C: 将选择的对象复制到剪切板上   Ctrl+F: 控制是否实现对象自动捕捉(F3)   Ctrl+G: 栅格显示模式控制(F7)   Ctrl+J: 重复执行上一步命令   Ctrl+K: 超级链接...  Ctrl+W:对象追 踪式控制(F11)   Ctrl+X:剪切所选择的内容   Ctrl+Y:重做   Ctrl+Z:取消前一步的操作   Ctrl+1:打开特性对话框   Ctrl+2:打开图象资源管理器...  X:炸开   V:设置当前坐标   U:恢复上一次操做   O:偏移   P:移动   Z:缩放   以下包括3ds max快捷键   显示降级适配(开关) 【O】   适应透视图格点 【Shift...【F8】   约束到X轴 【F5】   约束到Y轴 【F6】   约束到Z轴 【F7】   旋转(Rotate)视图模式 【Ctrl】+【R】或【V】   保存(Save)文件 【Ctrl】+【S】

    8.4K20

    JavaScript 编程精解 中文第三版 十六、项目:平台游戏

    虽然这样不切实际,但这有助于玩家感觉自己在直接控制屏幕上那个自己的化身。 该游戏包含一个固定的背景,使用网格方式进行布局,可可移动元素则覆盖在背景之上。网格中的元素可能是空气、固体或岩浆。...因为一切最开始都可以在网格,所以我们可以使用大型字符串,其中每个字符代表一个元素,要么是背景网格的一部分,要么是可移动元素。...但是我们仍然必须将可移动元素与背景网格分开。我们将其称为角色(Actor)。它们将存储在一个对象数组中。背景将是字符串的数组的数组,持有字段类型,如"empty","wall",或"lava"。...因为我们沿着圆移动,因此y坐标会以平滑的波浪形式来回移动,正弦函数在实现波浪形移动中非常实用。 为了避免出现所有硬币同时上下移动,每个硬币的初始阶段都是随机的。由Math.sin产生的波长是2π。...如果新的位置上没有障碍,它移动到那里。如果有障碍物,其行为取决于岩浆块的类型:滴落岩浆具有reset位置,当它碰到某物时,它会跳回去。跳跃岩浆将其速度乘以-1,从而开始向相反的方向移动。

    1.8K10

    50个Axure画原型技巧,产品经理速学速用

    以下是以下常用的,能提高效率的快捷键:Ctrl+S ,保存Ctrl+A,全选Ctrl+Z,撤销Ctrl+Y,重做(比如撤销多了,在使用 Ctrl+Y 恢复过来)Ctrl + G,合并成组,选中多个元件后...,可以合并成组Shift + Ctrl + G,取消成组按空格键,鼠标左键拖动画布Ctrl + -,缩小画布Ctrl + +,放大画布按住 Ctrl,移动方向键,可以一次移动 10px;如果开启网格对齐...,则会先对齐最近的网格,然后才开始 10px 移动。...15、同比例放大/缩小尺寸有 2 种方式:第1种:鼠标放在元件边缘的编辑点上,按住 Shift+鼠标左键拖,可以锁定长宽比来放大缩小元件。都2种:手动调节尺寸,将锁勾上,即可锁定长宽比。...19、不常移动的元件进行锁定锁定不常移动的元件,比如背景页。锁定的元件位置会固定住,这样就可以避免选中后误移。可以使用「Ctrl+K」快捷键进行锁定,「Shift+Ctrl+K 」解除锁定。

    17221

    九张动画图回顾 Web 设计的 25 年历史

    但是,Flash会占用计算机大量的处理资源,这也使得它成为一种特别不友好的技术,尤其是对于移动设备例如笔记本电脑和智能手机而言。 ? CSS,首次发布于1998年,解决了很多早期的web设计问题。...虽然最早的CSS版本不是非常灵活,但是现在的CSS已然成为了设计师需要掌握的最重要的网络技术。 ? 2007年iPhone的问世给设计人员带来了一个全新的难题:如何在智能手机这个更小的屏幕上设计网页?...一开始设计人员想到的是使用一种网格系统,这种网格系统可以根据设备屏幕的尺寸将网页分割成若干列。 ?...2010年,对于如何在移动设备显示网页的问题,Ethan Marcotte想到了另一种解决方案:响应式设计。 ? 在响应性设计之后,一种撇去华丽效果重视内容的扁平化设计也出来了。...以后的技术将不会再成为设计的限制,设计师可以集中精力解决UI和UX问题,而不是把时间浪费在排除故障上。 如果你喜欢这些动画,欢迎为我点赞。

    99631

    前端基础理论试题——附答案

    它们都表示空值在CSS中,选择器 .class 是用来选择什么?A. 标签B. IDC. 类别D. 子元素在响应式Web设计中,什么是“移动优先”策略?A. 首先设计桌面版本,然后适应移动端B....控制项目在主轴上的对齐方式C. null表示空,undefined表示未定义C. 类别B. 首先设计移动端版本,然后适应桌面端C. BowerC. A....方法:弹性网格布局: 使用相对单位(如百分比)而不是固定单位(如像素)来创建灵活的网格布局,使内容能够适应不同的屏幕尺寸。...媒体查询: 使用CSS媒体查询根据设备特性(如屏幕宽度、设备类型)应用不同的样式。这使得可以根据屏幕尺寸调整字体大小、布局等。...弹性图片: 使用max-width: 100%的CSS样式,确保图片在小屏幕上不会超出其容器。

    21810

    深入学习下 CSS 间距相关的知识

    使用 CSS 网格,你可以使用 grid-gap 轻松添加间距。 此外,你不需要关心网格项目的宽度或底部边距。 CSS Grid 为你做一切!...按需差距 我真正喜欢 CSS 网格的地方是 grid-gap 仅在需要时才应用,考虑以下模型。 我有一个有两张卡片的部分。 在移动设备上,我希望间距低于第一个,而在桌面上,间距将在它们之间。...或者,当它垂直堆叠时,这将如何在移动设备上工作? 很多很多的复杂性。 使用抽象组件 上述问题的一个解决方案是拥有抽象的组件,目的是托管其他组件。...它应该是灵活的,间距可能在 X 页面上,但不在 Y 页面上。 我在检查 Facebook 的新设计 CSS 时,首先注意到了这一点。...最近,CSS 数学函数在 Firefox 75 中得到支持,这意味着它们在所有主流浏览器中都受 CanIUse 支持。 让我们回顾一下网格用例,看看如何在其中使用动态间距。

    13.5K40

    CAD快捷键大全

    常用CTRL,ALT快捷键        ALT+TK 如快速选择   ALT+NL 线性标注 ALT+VV4 快速创建四个视口   ALT+MUP提取轮廓   Ctrl+B: 栅格捕捉模式控制(F9...)   Ctrl+C: 将选择的对象复制到剪切板上   Ctrl+F: 控制是否实现对象自动捕捉(F3)   Ctrl+G: 栅格显示模式控制(F7)   Ctrl+J: 重复执行上一步命令   Ctrl...  X:炸开   V:设置当前坐标   U:恢复上一次操做   O:偏移   P:移动   Z:缩放 以下包括3ds max快捷键 显示降级适配(开关) 【O】   适应透视图格点 【Shift】+...【-】   向上轻推网格小键盘【+】   NURBS表面显示方式【Alt】+【L】或【Ctrl】+【4】   NURBS调整方格1 【Ctrl】+【1】   NURBS调整方格2 【Ctrl】+【2】...数字键盘【2】   虚拟视图向左移动 数字键盘【4】   虚拟视图向右移动 数字键盘【6】   虚拟视图向中移动 数字键盘【8】   虚拟视图放大 数字键盘【7】   虚拟视图缩小 数字键盘【9】

    2.2K20

    CSS 中你需要知道 auto 的一切!

    width: auto 块级元素(如或)的初始宽度是auto,这使得它们占据了包含它们的块的整个水平空间。...在移动设备上,我们希望它们彼此相邻(每个按钮包装器占据其父元素的50%),而在桌面设备上,每个按钮都应该占据其父元素的全部宽度。该怎么做?...当我们有一个网格,并且其中的网格项目具有margin-left: auto时:该项目将被推到右边,其宽度将基于其内容长度 考虑下面的例子: ? 当我们希望item1的宽度基于其内容,而不是网格区域。....element { overflow-y: auto; } position 属性 对于CSS定位属性top,right,bottom和left,我们可以使用auto关键字作为它们的值。...CSS将如下所示: .item__action { margin-inline-start: auto; } CSS grid 和自动边距 在向网格项目添加边距时,它可以是固定值,百分比或自动值

    5.5K30

    【Web前端】CSS 响应式设计(补充)

    随着移动设备的普及,网页设计的焦点逐渐转向了响应式设计。响应式设计不仅要求网页在各种屏幕尺寸上良好展示,还要适应不同设备的特性。...固定布局使用固定的像素宽度,而流动布局使用相对单位(如百分比)来调整页面的宽度。这些方法在移动设备上表现得并不理想,因为它们没有考虑到屏幕尺寸的多样性。...3.1 使用CSS网格布局 CSS网格布局是一种强大的布局工具,允许我们创建复杂的网格布局。通过定义网格的行和列,我们可以轻松地创建响应式布局。 示例:基本的CSS网格布局 <!...四、现代布局技术 除了CSS网格布局和Flexbox,现代CSS布局技术还有许多其他有用的工具,如CSS多列布局和CSS变量。它们可以进一步增强响应式设计的灵活性。...通过媒体查询,我们在小屏幕设备上减少了字体大小,以确保文本在不同设备上保持良好的可读性。 七、视口元标签 视口元标签用于控制网页在移动设备上的显示方式。

    12310

    【Web前端】深入CSS 布局

    设置 ​​flex​​ 属性 ​​flex​​属性是弹性盒子的核心,用于设置弹性项如何在弹性容器中分配空间。...弹性盒子布局的其他属性 ​justify-content​​:控制弹性项在主轴(默认水平轴)上的对齐方式。...相对定位(Relative) 相对定位使元素相对于其正常位置进行移动。它不会影响文档流中其他元素的布局。... 这是一个相对定位的元素 元素相对于其原始位置向下移动了10px,向右移动了...通过使用CSS的多列布局属性,我们可以将内容分为多个列。 这种布局方式非常适合用于展示较长的文本内容,如新闻文章或博客文章。 文本被分成了三列,并且列与列之间有20px的间隔。

    10510

    Vue3 仿京东电商项目 | 首页开发【项目初始化】

    (其他标签 也要注意 默认margin等) 5.3 【overflow-y: auto】处理溢出,使得底部导航栏不会跟着动 6.拆分组件代码 然后是Nearby部分的拆分 home.vue中注册为子组件...展示效果不一致; 为了 写出来的样式 可以在所有的浏览器上 保持一致, 需要借助一下normallize.css; 这里需要在项目上install一下: 添加@[版本],可以指定安装的版本: 在...: 在style目录下新建一个css文件,如iconfont.css,把复制的代码贴到这里, 不过这里引用的代码还是本地的, 我们可以替换成在线的: 点击查看在线连接, 点击【暂无代码,点此生成...】, 可以生成在线连接代码: 复制上面的在线url引用代码,贴到项目里: main.js引入这个css文件: 到这里环境就配置完成了; 接着在iconfont网页上,移动到图标上,点击复制对应图标的代码...引入的简写 当前的css文件引入我们是这样写的: 其实我们可以在style目录下新建一个文件,如index.scss, 然后把需要引用的css文件都写在这里面: 这样, 使用的时候就只要引入index.scss

    1.5K10

    Jump Start Bootstrap 第2章

    我们将学会网格系统如何工作;我们如何在应用中使用网格系统;我们也将创建简单的网页布局去更好的理解它。 什么是网格系统?...但在大型显示器上如何呢?在上面的代码中,我们没有指定该元素在大型显示器上的表现。进一步的,Bootstrap将自动沿用在超小显示器上指定的布局。...接下来,我们需要在移动设备上查看相同的网站。移动显示的线框如图所示 ? 我们刚刚将这两列转换为移动设计中的一列。 让我们讨论如何在标记中实现此设计。...移动设备上的设计 和平板电脑一样,移动设备也可以在风景和人像模式下观看。移动设备中的景观视图利用小型显示器(屏幕宽度768px),我们已经使用了col-sm类。...移动设备中的竖屏视图使用了额外的小型显示器(屏幕宽度小于768px)。 对于移动设备的线框,我们必须创建一个单列布局。我希望您已经知道如何在上述代码中实现它。

    2.9K40

    CSS 基础系列:从清除浮动和margin塌陷问题谈BFC

    可视化格式模型规定了客户端(浏览器)如何在媒介(显示器)中渲染文档树(document tree)。...IFC 中是不可能有块级元素的,当插入块级元素时(如 p 中插入 div)会产生两个匿名块与 div 分隔开,即产生两个 IFC,每个 IFC 对外表现为块级元素,与 div 垂直排列。...4.1.3 GFC: 当为一个元素设置 display:grid 的时候,此元素将会获得一个独立的渲染区域,我们可以通过在网格容器(grid container)上定义网格定义行(grid definition...rows)和网格定义列(grid definition columns)属性各在网格项目(grid item)上定义网格行(grid row)和网格列(grid columns)为每一个网格项目(grid...,至少 safari 和 chrome 还是 OK 的,毕竟这俩在移动端才是王道。

    2.5K10

    前端文章收藏

    高级指南之二——定位详解 十步图解CSS的position 居中 元素的垂直居中的方法 元素的水平居中的方法 文字围绕形状 如何在Web中使用CSS Shapes CSS Exclusions:让布局变得更有意思...网格布局(Grid Layout) 通过漫画阐述CSS网格布局 更多 响应式布局 探讨判断横竖屏的最佳实现 ViewPort 如何做好移动端的响应式设计:Viewport控制 两个viewport...Demo 禅意花园: CSS 设计之美 综合 移动端 h5开发相关内容总结——CSS篇 查询手册 CSS参考手册 JavaScript 语法 图解Javascript上下文与作用域 Javascript...常用方法 toFixed的进位规则 toFixed 是有些诡异的,不是简单的四舍五入哦~ 变量的求值 DOM 《JavaScript 闯关记》之 DOM(上) 《JavaScript 闯关记》之...Vue2.x踩坑与总结 饿了么基于Vue 2.0的通用组件库开发之路 移动端 Weex 入坑指南:Native App 的运行与构建 饿了么前端。

    1.5K21
    领券