In this episode, Adam talks to Mark Dalgleish about common mistakes people make in their approach to constructing layouts, and how dedicated layout components can make your component system much easier to work with.
- What problems you run into when baking white space into components, and why your components should never contain any surrounding white space at all
- Layout challenges you run into due to the way the browser includes line-height in the size of text elements
- The trick Mark's team uses to remove surrounding white space from text elements, without removing the space between wrapping lines
- Using a "stack" component to specify the space between sibling elements
- Issues with naively just using margin on one side of an element to space elements
- The upcoming "gap" property in CSS and how it proves layout components are a good idea
- Using a "content block" component for horizontal spacing/sizing at the page level
- Tricks for maintaining vertical rhythm despite 1px borders trying to ruin it all for you
- Why tools like React are so important for being able to implement designs in a way that matches how designers think
- "Rethinking Design Best Practices", Mark's talk at ReactiveConf 2019
- Braid, the design system Mark works on
Supporting the show:
I decided to stop taking sponsors for the show because I think advertisements are annoying and no one wants to listen to them.
If you do want to support the show, the best way to do it is to pick up one of my books or courses:
- Refactoring UI, a book and video series I put together with Steve Schoger on designing beautiful user interfaces, without relying on a designer.
- Advanced Vue Component Design, a course on designing simpler, more flexible Vue components that are both more powerful and easier to maintain.
- Test-Driven Laravel, a massive video course on designing robust Laravel applications with TDD. Learn how to build a real-world application from scratch without writing a single line of untested code.
- Refactoring to Collections, a book and video course that teaches you how to apply functional programming principles to break down ugly, complex code into simple transformations — free of loops, complex conditionals, and temporary variables.