成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

剖析 Figma 圖形對象的基本屬性

開發 前端
Figma 也提供了 REST API 接口獲取設計稿的圖形樹結構,且大多數屬性和 Fig 文件的相同,文檔說明也更詳細。

大家好,我是前端西瓜哥。

今天我們來看看 Figma 圖形對象的一些基本屬性。

這些屬性來自 fig 文件,更貼近 Figma 圖形的底層數據結構。

Figma 也提供了 REST API 接口獲取設計稿的圖形樹結構,且大多數屬性和 fig 文件的相同,文檔說明也更詳細。

但有些屬性在底層屬性上做了一層封裝,以提供更好的語義。比如在 REST API 的數據有 rotation 屬性,但 fig 文件并沒有,需要通過 transform 矩陣屬性計算出來。

https://www.figma.com/developers/api#node-types

基本屬性

guid:圖形 id 對象,用于唯一標識圖形。

它有兩個屬性:sessionID(會話 id,每個 socket 連接一個唯一 id),以及 localID(一個自增 id),二者組合可得到一個在和本地圖形和其他客戶端圖形都不同的唯一 id,以便實現協同編輯。

{
  "sessionID": 1,
  "localID": 7
}
  • phase:通常是 CREATED,表示創建。貌似使用了 quill 的 delta 風格。不知道有沒有其他的值,比如 delete 這些。
  • parentIndex:父節點 id。fig 的數據結構是拍平的一維數組,加載時需要根據 parentIndex 還原為圖形樹結構。
  • type:圖形(或者說是節點)類型,比如 ROUNDED_RECTANGLE(圓角矩形)、VECTOR(矢量網格)。還有一些非圖形的類型,如 VARIABLE(變量,比如顏色變量)。
  • name:圖形名。
  • visible:是否可見。
  • locked:是否鎖定,鎖定的圖形不可選擇,不可通過光標移動。

  • opacity:不透明度,介于 0 到 1 之間。0 表示完全透明,1表示完全不透明。
  • blendMode:混合模式,表示當前節點和其下的圖層以何種形式混合。默認為 PASS_THROUGH(穿透)。
  • size:一個對象,x 為寬,y 為高。屬性名不是 width 和 height,大概因為用了矢量結構體。
  • transform:一個表達 3x3 矩陣的對象,會對節點進行矩陣變換。

size 和 transform 可以表達一個變形的矩形,包括位移、旋轉、翻轉、斜切等。

這種表達方式很簡潔,方便做 GPU 并行渲染,也便于直轉 SVG。

proportionsConstrained:是否鎖定寬高比。如果為 true,輸入框修改寬時,高會自動更新,保持原來的寬高比,反之同理。

cornerRadius:圓角半徑。

cornerSmoothing:平滑圓角程度,比如 60% 對應 iOS 圖標的平滑程度。

horizontalConstraint / verticalConstraint:圖形的水平和垂直約束,指定在 frame(畫框)縮放時圖形縮放或移動的方式。

圖片

支持的類型值有:

  • MIN:默認值,向左或向上保持固定距離。
  • MAX:向右或向下保持固定距離。
  • CENTER:向 frame 的中心點保持相對距離。
  • STRETCH:拉伸,向左(上)和向右固定距離,縮放 frame 會引起圖形拉伸。
  • SCALE:保持相對 frame 的比例關系。
  • handleMirroring:拖拽控制點調整路片段(segment)時,入控制點(handleIn)和出控制點(handleOut)的鏡像關系。

有三種形式:

  • NONE,默認值,無鏡像關系,兩個控制點各自獨立。
  • ANGLE,角度一致但長度各自獨立,表現為:修改一個控制點,兩個控制點和路徑點都在一條直線上,但另一個控制點到路徑點的長度保持不變。
  • ANGLE_AND_LENGTH,角度和長度相同,即完全 路徑點對稱,見下圖。

填充

fillPaints:填充對應的 Paint 數組。

比如下面是SOLID(純色)的表示。

fillPaints: [
  {
    "type": "SOLID",
    "color": {
      "r": 0.7631543278694153,
      "g": 0.9063313603401184,
      "b": 0.6506586074829102,
      "a": 1
    },
    "opacity": 1,
    "visible": true,
    "blendMode": "NORMAL" // 這里也有混合模式
  },
]

數組前面的填充會覆蓋掉后面的填充。

此外 Figma 還支持 IMAGE(圖片)、GRADIENT_LINEAR(線性漸變)、GRADIENT_LINEAR(徑向漸變)、GRADIENT_ANGULAR(旋轉漸變)、GRADIENT_DIAMOND(菱形漸變)、VIDEO (視頻)等 PaintType 類型。

fillGeometry:大概是填充對應的圖形化描述,指向一個 Buffer 對象,能轉成類型數組,但不知道什么解析。

但如果使用開發者 REST API,這個屬性得到的是 SVG 的 Path 描述。

描邊

strokePatins:描邊數組,基本和 fillPaints 一樣。

strokeGeometry:同 fillGeometry。

strokeWeight:描邊寬度。

dashPattern:數字數組,描述虛線描邊的規則,指定連續的 “實線-虛線-實線-...” 這樣循環下去,參考 SVG 的 stroke-dasharray 屬性。

strokeAlign:描邊對齊,默認為 INSIDE(內描邊),此外還有 CENTER(往兩邊擴展)、OUTSIDE(外描邊)。

strokeCap:描邊路徑兩端的樣式,默認為 NONE,除了經典的 SQUARE、ROUND,還有特殊的 LINE_ARROW、CIRCLE_FILLED 等值,可以產生箭頭或其他特殊樣式。

strokeJoin:路徑轉角的處理方式。MITER(斜接)、 BEVEL(倒角) 和 ROUND(圓角)。

miterLimit:對斜角長度與線寬比例的閾值,在 strokeJoin 為 milter 時有效,表示為超過閾值時,尖角會變成 bevel。的效果。

編輯器 UI 上并沒有這個屬性,但有個 Miter angle 屬性,它和 miterLimit 的轉換關系為:miterLimit = miterLength / stroke-width = 1 / sin (theta / 2)。可以參考 SVG 的 stroke-milterlimit 屬性。

下圖中,藍色路徑的轉角突破了閾值,小于 28.96,于是從 miter 變成了bevel。

borderStrokeWeightsIndependent:邊框線是否各自獨立設置線寬。

borderTopWeight / borderBottomWeight / borderLeftWeight / borderRightWeight:圖形的 4 個邊框的寬度,當前面這個 borderStrokeWeightsIndependent 屬性為 true 時會使用。

效果

effects:效果數組。

有這幾種效果:

  • DROP_SHADOW:外陰影。
  • INNER_SHADOW:內陰影。
  • BACKGROUND_BLUR:背景模糊,該圖層下的背景會被模糊掉,類似毛玻璃效果,通常這個圖形要設置透明度。
  • FOREGROUND_BLUR:前景模糊(貌似就是高斯模糊)。

蒙版

mask:圖形是否作為蒙版,設置為蒙版圖形的前面的兄弟節點不在被蒙版區域的部分不會被渲染;

maskType:指定蒙版類型。默認是 ALPHA (基于透明度),此外還有 VECTOR(基于圖形輪廓線)、LUMINANCE(基于明度)。

結尾

還有不少特定圖形才有的屬性,比如文本對象特有的 fontSize,并不在本文的討論范圍內,我們下篇文章再聊。

責任編輯:姜華 來源: 前端西瓜哥
相關推薦

2024-05-13 08:39:18

Figma數據結構編輯器

2010-01-13 10:46:42

VB.NET Dock

2021-05-14 13:53:28

大數據數據分析工具

2009-10-22 10:10:20

VB.NET Proc

2021-05-17 07:22:05

Elasticsear架構存儲

2010-08-31 10:57:44

clipCSS

2010-06-12 14:35:46

UML對象圖

2010-06-17 18:57:11

UML對象關系

2021-08-01 16:30:18

Python編程語言

2009-03-03 13:12:14

2023-09-06 09:20:45

FigmaWasm

2012-02-17 10:50:10

Java

2010-08-25 11:13:49

CSS margin-righ

2010-02-02 13:22:06

Python面向對象

2010-07-13 13:06:41

Perl面向對象

2010-08-25 09:43:42

margin

2010-09-28 13:24:34

DOM文檔對象模型

2010-03-02 11:10:43

WCF標準終結點

2024-01-15 07:42:37

Figma協同編輯算法

2010-03-01 17:40:29

Python面向對象語
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久这里只有精品首页 | 喷潮网站 | 最新91在线 | 日韩精品一区二区三区在线观看 | 亚洲视频在线看 | 国产91亚洲精品一区二区三区 | 欧美精品乱码99久久影院 | 欧美日韩在线观看一区 | 国产欧美一区二区三区在线看 | 91视频在线观看 | 成人污污视频 | 精品在线一区二区 | 午夜a区| 久久久综合久久 | 人人干人人超 | 天天看天天爽 | 欧美一区二区三区久久精品视 | 天天做日日做 | 亚洲日本视频 | 欧美精品一区三区 | 在线免费看黄 | 搞黄视频免费看 | 国产精品日韩在线观看一区二区 | 亚洲精久久久 | 91在线观看视频 | 中文字幕久久精品 | 伊人免费在线观看 | 男女网站免费观看 | 日韩欧美亚洲 | 国产高清一区二区 | 日韩成年人视频在线 | а天堂中文最新一区二区三区 | 狠狠热视频 | 97人人超碰| 一区二区日韩 | 国产精品一区二区在线 | 亚洲字幕在线观看 | 超碰人人人 | a欧美| 欧美一区二区视频 | 久草在线免费资源 |