Figmaで幅や高さを0にした要素を作っても内部的には0ではない
これは何
- Figmaを触っていてたまたま見つけた、ちょっと変わった(?)仕様について書いた記事です
- また、記事投稿イベント「3000文字Tips - 知ると便利なTipsをみんなへ届けよう」への投稿記事でもあります
そもそも「幅や高さを0にした要素」って?
FigmaではW
やH
に0
と打ち込んでも勝手に1になってしまいますが、0.001
とでも打ち込めば0
を実現できます1
私はこれを利用して、Auto layout内でも一部はみ出したようなレイアウトのUIを作るときがあります。
見かけ上は0だけど実は0ではない
先ほど作った四角形のデータ、Figma APIを使って見てみましょう。
height
に注目してください。
GUI上では0
と表示されていますし、要素同士の距離を測ってもちゃんと0
として扱われていますが、内部的には0.0010000000474974513
だそうです。
ちなみに先ほどの四角形のH
に0.001
と入れても0.005
と入れても変わらず0.0010000000474974513
でした。
なお、ご自分でも試してみたい場合は以下の書式でコマンドを叩けばOKです。
curl -H 'X-FIGMA-TOKEN: YOUR-FIGMA-TOKEN' 'https://api.figma.com/v1/files/FILE-KEY'
何が問題か?
こちらのファイルにアクセスしてみてください。
謎の柄があると思いますが「Auto layoutを使って要素を並べて、かつ一部の要素だけをはみ出させたい」という意図があると想定してください。2
上から3番目の移行の要素を選択すると、Y座標がXXX.01
になっているのが分かると思います。
しかし、Auto layoutの設定にも各要素の値にも、どこにも小数点は使っていません。
色々試してみましたが、要素のサイズや位置によって変わるのか、XXX.01
が出現する条件はバラバラな気がします。
5回6回と要素を繰り返してようやくXXX.01
が出るときもあれば、今回作ったファイルでは3番目の要素からXXX.01
になっています
対策
そもそもこんな使い方を多用している人があまりいないような気もしますが、今のところ実施している対策も記載します。
ただし非常に対症療法的なのでご容赦ください。
例として、高さ0
のFrameを5px
のpaddingのAuto layoutに入れ込むとします。
-
H
を0
とせず、0.01
と逆に明示しておく - Auto layoutの上側か下側どちらかのpaddingを
5
ではなく4.99
にしておく
すると両者で差し引き0となり、いくつ並べてもY座標にXXX.01
が出なくなりました。3
Author And Source
この問題について(Figmaで幅や高さを0にした要素を作っても内部的には0ではない), 我々は、より多くの情報をここで見つけました https://qiita.com/xrxoxcxox/items/f6a18bfc292848c5b78a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .