Skip to main content
Question

Can I stack elements in Auto Layout?


Mark4

Wondering if it’s possible to “stack” multiple elements in an Auto Layout frame. See attached images for reference. I’m trying to add a stroke behind the text that will get wider/narrower depending on text length.

I tried adding negative padding, but that’s not supported. I’m new to Figma so hoping there’s a simple workaround that I just haven’t discovered yet.

Screen Shot 2021-04-08 at 4.54.27 PM Screen Shot 2021-04-08 at 4.53.51 PM

4 replies

Antoine
  • New Member
  • 144 replies
  • April 9, 2021

Hello, you can’t add negative values in Auto Layout yet. It’s one of the most requested evolutions, see here and vote!

In the meantime, if the height of your Frame is constant (only one line of text), there’s a workaround:

  • Select your stroke, click Frame Selection. Set the containing Frame to stay on top of your Auto Layout Frame
  • Set the Resizing constraint to “Fill Container”, with the desired padding
  • Inside the containing Frame, set the constraints of your Stroke to “Left and right”
  • Now change the Y value of your Stroke to place it behind your text, it will stay there and expand with additionnal text. However it won’t move if the text grows or work with multiple lines.

Happy hacking!


Mark4
  • Author
  • 2 replies
  • April 9, 2021

Thanks Antoine! I guess I can’t have it so the line extends past the text on both sides?
Either way, this hack is super helpful and gives me something I can build on.


Antoine
  • New Member
  • 144 replies
  • April 9, 2021

Yes you can, two ways to go:

  • Adjust the width of your stroke so that it extends past its container. It will always extend by this exact amount.
  • Wrap your text in an Auto Layout container and add lateral padding that the stroke Container will follow because it “Fills container”

Mark4
  • Author
  • 2 replies
  • April 9, 2021

Awesome. I wasn’t quite following that second step, but I played around a bit and still got what I wanted. Here’s how: I wanted the stroke to extend 4 px on each side, so I made it 8px wider than the container, then set the X value to -4 and it worked like a charm.

Thanks again for the help.


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings