导读:在 Figma 中可以使用 group(组)或 frame(画框)来组织元素,但它们又有一些不同。合理地选择如何使用它们,能够帮助我们更好地设计。本文来自 Figma 官方博客,由卓浩翻译。

你知道在 Figma 中何时该使用 group(组),何时该使用 frame(画板)吗?它们都是承载其它元素的容器,但它们也有自己独特的属性和使用方法。它们彼此之间的区别并不总是很明显,所以为了帮助区分它们,我写了这篇入门的文章。

group(组)

与其他设计工具类似,Figma 中的 group 允许你将多个元素组合在一起作为一个顶级图层。group 的边界大小(边界大小指长和宽)由它的子元素决定,因此调整边界大小或移动这些元素将导致 group 的边界大小自动调整。你可以在选择对象后按下 ⌘ + G(Mac)或 Ctrl + G(Win)来快速编组。

进行编组的操作是非破坏性的,这意味着被编组的图层不会永久地组合在一起。在任何时候你都可以通过按 ⌘ + Shift + G(Mac)或 Ctrl + Shift G(Win)来取消编组。

当你想要在设计中管理更少的图层或仅仅是想要将相关的图层组合在一起时,将分散的图层合并成 group 非常有用。例如,你可以选择将分散的公司 logo 图层合并成一个 group。单击 group 中的任何子元素都将会选择整个 group,此时你可以将其作为画布上的单个对象进行移动或操作。如果需要选择 group 中特定的某个子元素,可以通过双击来实现。

你还可以利用 group 内的智能排序等功能来调整元素之间的间距。在下面的示例中,你可以看到 group 的边界大小会根据子元素的大小自动调整。

当子元素调整边界边界或重新定位时,group 的边界会自动调整

使用常规方法调整 group 的边界大小时,子元素的矢量图形将按照你希望的情况比例缩放。但是效果、文字尺寸和描边的大小不会自动进行缩放。如果你希望同时缩放这些属性,请使用缩放工具(按下 K 切换)。如果要设置子元素的 constraints(自适应约束)调整方式,请考虑使用 frame,因为子元素将始终相对于最接近的父级 frame 的边界大小进行自适应调整,而不是相对于父级 group 的边界大小。

左边是使用常规方法来调整包含矢量图稿和文本的 group,右边是使用缩放工具(K)来调整组 group 边界大小

frame(画框)

在理解上,你可能会想到其他设计工具中的 artboard(画板),实际上 frame 可以作为我们在 Figma 中的画板使用。与此同时,画板 frame 还可以理解为未定义前的 component(组件)。frame 和 component 是在 Figma 中创建动态布局的重要组成部分。

在深入研究 frame 的行为和属性之前,让我们快速介绍一下可以创建 frame 的三种方法。

  • 在顶部菜单栏中选择 frame 工具(F),然后从右侧的属性面板中选择预置设备尺寸。这将在你的画布上创建一个新 frame,新 frame 的尺寸就是你所选的预置设备的精确尺寸。
  • 选择 frame 工具后,在画布区域单击并拖动以创建所需边界大小的 frame。
  • 与 group 类似,你可以选择画布上的现有元素,并通过按 ⌘ + Opt + G(Mac)或 Ctrl + Alt + G (Win)将其组合为一个 frame。

如果你希望执行相反的操作并删除 frame,键盘快捷键与取消编组相同:⌘ + Shift + G(Mac)或 Ctrl + Shift G(Win)。现在让我们深入了解 frame 的独特功能和用途。

frame 边界大小

frame 的边界大小独立于其子元素。如果在 frame 内重新定位或缩放子元素,frame 的边界不会自动调整。如果希望 frame 的尺寸重新调整以适应内容,可以单击右侧属性面板中的“调整边界大小以适应”按钮。

frame 的边界不会自动调整,如果希望 frame 的尺寸重新调整以适应内容,可以单击右侧属性面板中的“调整边界大小以适应”按钮

值得注意的是,Figma 中的 frame 与组件的行为几乎完全相同。您可以将 frame 转换为组件来重复使用它,如果将现用的子组件分离出来,您将看到它会被转换为 frame。

调整 frame 的边界

在调整边界大小时,frame 和 group 的行为会有所不同。浏览下图可知,调整 group 时内部的子元素也将跟随外部边界大小进行调整。而默认情况下,对 frame 的边界大小调整不会影响其子元素的尺寸。但是你可以给子元素设置 constraints(自适应约束),这样当你调整 frame 时,内部子元素会根据你设置的 constraints 来自适应。默认情况下 constraints 被设置为顶部和左侧距离固定。

当你希望子元素能够在父级 frame 变化时保持自身相对位置和大小时,设置 constraints 是非常有用的,而这也是创建响应式组件所必需的。下面的动图展示了 group、未定义 constraints 的 frame 和定义了 constraints 的 frame 在尺寸变化时的区别。

温馨提示:如果要在调整 frame 边界大小时忽略 constraints,请在拖动 frame 边框时按住 ⌘(Mac)或 Ctrl(Win)

超出 frame 的内容

由于 frame 的边界大小可以独立于其子元素进行调整,配合内容裁切(clip content)功能(可在右侧属性面板中看到)可以有许多不同的使用方式。以下是一些常见示例:

隐藏超出 frame 的元素:通过启用内容裁切,可以隐藏超出 frame 的元素。

显示边界以外的元素:通过禁用内容裁切,你可以让超出 frame 边界大小的元素保持可见。例如,如果要创建一个包含双引号标点符号的 frame,则可以调整框架的边界大小,使其边界大小与文本框的左边缘对齐,使引号留在框架边界大小之外。在这种情况下,你可以更容易地对齐设计中的主体对象。

控制显示内容的数量:通过设置适当的自适应约束并启用内容裁切,你可以构建展开时显示更多内容的 frame 或组件。例如,你有一个下拉菜单,它可以拥有不同数量的选项,这时就可以使用这种简单的方法来调整 frame 边界大小以控制菜单项数目。

原型中超出 frame 的元素:超出 frame 边界大小的元素可以设置为在原型内滚动。例如,在你的设计中可以创建一个 frame 来容纳滚动轮播。你可以设置超出 frame 的元素的行为为滚动,以便在原型模式下查看时可以滚动内容。

网格布局

你可以为每个 frame 或组件设置独一无二的网格布局。这样,你就可以结合网格布局和 constraints(自适应约束),通过它们的共同作用,来实现一些特别的自适应效果。在下面的示例中,您可以看到最外层 frame 有一个 2 列的网格布局,底部标签栏有一个嵌套的 frame,它有 3 列网格布局。通过合理的自适应约束设置,当最外层 frame 的边界大小发生变化时,子元素的边界大小会相对于布局网格自动调整。

总结

你可以通过多种方式(一起或单独)使用 group 和 frame 来实现不同的元素行为。

推荐在以下情况下使用 group:

  • 你希望将多个元素组合到一起,但不影响他们的可编辑性
  • 你希望将多个元素组合在一起,以便在缩放时保持跟随缩放(例如:由多个形状组成的logo或符号)
  • 你希望在操作 group 的边界大小时可以使子元素自动适应

推荐在以下情况下使用 frame:

  • 你希望独立于子元素控制 frame 的边界大小
  • 你希望定义子元素的自动调整行为(自适应约束)
  • 你希望对象被 frame 边界大小剪切,或者位于 frame 的边界大小之外
  • 你希望原型中具有嵌套滚动的行为(例如:水平轮播或者可以随意移动的地图)
  • 你希望在该元素中使用网格布局

作者:Figma 设计布道师 Thomas Lowry
翻译:卓浩
地址:https://www.figma.com/blog/groups-vs-frames

frame中src怎么设置成一个变量_在 Figma 中如何选择 group(组)或 frame(画框)?...相关推荐

  1. frame中src怎么设置成一个变量_自动格式化打印变量HMLog介绍

    作者 | mao2020 来源 | 掘金,点击阅读原文查看作者更多文章 前言 在我初学iOS的时候,经常需要NSLog打印用于调试,有时候还需要打印多个变量: NSLog(@"xxxx fr ...

  2. frame中src怎么设置成一个变量_Go 语言设计哲学之七:变量声明须一致

    Go 语言,使用变量之前需要先进行变量的声明. var s string = "Golang"n := 666 Go 语言有两类变量 包级别(package varible):在 ...

  3. frame中src怎么设置成一个变量_OpenCV图像人脸检测及视频中的人脸检测(附源码)...

    文章目录 一.数据和知识准备 1. 下载HAAR与LBP数据 2. opencv相关知识 二.python+opencv实现人脸检测 1. 图像单人脸检测 2. 图像多人脸检测 3. 视频中人脸检测 ...

  4. frame中src怎么设置成一个变量_webpack中Css的处理

    摘要:这个时代对速度和性能要求越来越高,前端开发中兼容性问题是一个让人头疼的问题,也许在这台设备上明明好好的,但是换一个设备就会让人哭笑不得,对于用户体验和流量资源的开销也是要考虑的一个问题,当下我们 ...

  5. @有两个含义:1,在参数里,以表明该变量为伪参数 ,在本例中下文里将用@name变量代入当前代码中2,在字串中,@的意思就是后面的字串以它原本的含义显示,如果不...

    @有两个含义:1,在参数里,以表明该变量为伪参数 ,在本例中下文里将用@name变量代入当前代码中 2,在字串中,@的意思就是后面的字串以它原本的含义显示,如果不加@那么需要用一些转义符\来显示一些特 ...

  6. figma下载_在Figma中进行原型制作的技巧和窍门

    figma下载 自定义过渡和微交互 (Custom transitions and micro-interactions) Yep, I know that there are a lot of us ...

  7. 为什么要设置java环境变量_为什么要配置JDK环境变量?

    因为电脑不知道javac这个命令是在C:\Program Files\Java\jdk1.8.0_65\bin\的这个路径下面,所以我们要设置好环境变量,来让电脑知道其路径. 1. path(环境变量 ...

  8. 使用变量_在 Linux 中使用变量 | Linux 中国

    让我们来看看所有这些 $ 值可以告诉你什么.-- Sandra Henry-stocker 变量通常看起来像 $var 这样,但它们也有 $1.$*.$? 和 $$ 这种形式.让我们来看看所有这些 $ ...

  9. python打印多个变量_在Python中打印多个变量

    python打印多个变量 Like other programming languages, In python also, we can define and print the multiple ...

最新文章

  1. docker 常用命令集合
  2. 3 : 1,从21世纪科技趋势分析美国为什么一定要遏制华为
  3. TopCoder SRM 152 div 2 500point
  4. ABAP_Excel 处理总结(二)
  5. 《Java程序设计》第五周学习总结
  6. 2018.9.10.Matlab实验一:熟悉Matlab开发环境
  7. 每期一词:catastrophe
  8. SQL SERVER 和ACCESS/excel的数据导入导出
  9. cmd字体推荐-更纱黑体
  10. 解决Tomcat运行内存不足问题
  11. Codecraft-18 and Codeforces Round #458 (Div. 1 + Div. 2, combined) G. Sum the Fibonacci(子集卷积)
  12. ROIpooling是什么
  13. 滴滴快车VS易到“易来”到底谁便宜?结果惊呆了
  14. 产品创新与研发管理的八大典型问题
  15. 防火门监控系统在智能建筑消防的重要性及应用介绍
  16. 阿里图标库在旧有的iconfont中添加新的图标
  17. h'tml和java代码,Tapestry 教程(七)在Tapestry中一起使用Hibernate
  18. 【笔记】莫比乌斯反演(1)
  19. oracle: linux下启动、关闭oracle服务
  20. 汽车电子软件开发相关标准

热门文章

  1. GitHub教程手册、使用流程
  2. 全球最大的多晶硅制造商保利协鑫去年营收220亿元 售电业务表现抢眼
  3. 远程过程调用RPC RMI(Remote Method Invocation)和Web Service
  4. 【数论】【Polya定理】poj1286 Necklace of Beads
  5. 浅谈ButterKnife对Android性能的影响
  6. OSChina 周日乱弹 ——已经打码请放心观看
  7. 第七周项目4-计算一个程序猿的周工资
  8. 同方挑战惠普 大打“惠民”牌
  9. 黑客是互联网的高危职业,选择不慎,很可能如“他们”一样入门到入狱!
  10. 金色丰收的FreeEIM季节