As you know, being able to add negative padding is a must when creating design systems. However Figma only allow negative values in the inner-spacing between elements in auto-layout.
We found a workaround and thought it would be useful to share it with the community.
If you define a local variable, type number, and add a negative value (e.g. -4px), you can then apply this variable to the auto-layout padding and it will work.
In summary: use local variables to define negative values and apply such variable to the padding.
well an example i’m needing it for is trying to create a prototype of a scrollable list that, when you complete something on the list and return, focuses on the next thing on the list - scrolling the completed items out of view. i don’t know any way to do this in Figma other than setting negative padding on the container
I would do that by creating a frame without auto layout, turn on vertical scroll behaviour, and then position the scrollable list inside that with a negative Y (vertical) position:
In CSS, ’padding’ refers specifically to the space between an element’s border and it’s content: CSS Box Model
Hi @jo1, Thanks for sharing your thoughts about horizontal padding! I understand how handy it allows input negative numbers for you.
I found the other community member asking for something similar here. So I merged your post to have all the feedback in one place!
Feel free to Vote up top!
We really need negative margin. Its such basic feature for CSS and recreating it in Figma is such a hassle at the moment. @dvaliao would you happen to have any updates on this?
I can confirm that this is on our team’s radar, but we don’t have an exact timeline to provide yet. Feel free to keep an eye out on our future releases!
I really want this too. Because it works with variables makes it likely it’s just an arbitrary validation for the input.
I checked if I could get around it using the plugin API, however there you can’t set negative margins, I got this error in the console:
Error: in set_paddingTop: Expected “paddingTop” to have value >= 0
Negative margins are perfect for certain one-off or infrequent scenarios such as needing a separator to reach the edges of its parent container that has padding applied. To achieve this currently without the variable hack, you’d have to create a group soup and apply padding to non-separator layers multiple times.