成人免费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(基于明度)。

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

2024-02-21 08:34:43

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-17 18:57:11

UML對象關系

2010-06-12 14:35:46

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精品国产91久久久久久最新 | 欧美二区在线 | 免费h视频 | 一区二区三区精品视频 | 久久国产精品99久久久大便 | 精品日本中文字幕 | 国产精品成人一区二区三区夜夜夜 | 欧美国产在线一区 | 天堂资源最新在线 | 欧美日韩中文字幕在线 | 日日操日日干 | 热re99久久精品国产99热 | 午夜精品久久久久久久星辰影院 | www.日韩| 日韩av在线一区 | a级在线免费 | 日韩三级 | 九九亚洲 | 欧美视频成人 | 99re热这里只有精品视频 | 国产乱码精品一区二区三区中文 | www国产成人免费观看视频,深夜成人网 | 四虎影音| 亚洲国产成人久久久 | 欧洲尺码日本国产精品 | 久久成人一区 | 午夜精品久久久久久 | 中文字幕国产一区 | 亚洲视频一区在线观看 | 一区二区三区中文字幕 | 欧美一区二区三区的 | 亚洲综合区| 国产精品99久久久久久久久久久久 | 国产在线视频在线观看 | 亚洲精品不卡 | 美女日批免费视频 |