Interface
Dynamics
Improve collaboration and quality on a website team by reducing revisionary work
What is it?
It’s the set of forces that influence a website interface.
??
Lorem
ipsum dolor
Sed odio morbi quis commodo odio aenean accumsan sed adipiscing diam
Dolore
Pulvinar
proin gravida
Posuere morbi leo urna molestie at elementum eu. Neque sodales ut etiam
Gravida
Why should I
care about it?
Incorporating these dynamics into a website team’s design process can improve both collaboration and quality of output.
It reduces revisionary work that’s common between the three specializations involved in generating and repurposing interfaces; design, content creation, and development. Reducing revisionary work frees time for new and higher-quality work, and results in higher-quality relationships.
Collaboration
& Quality
Each dynamic relates directly to a peer’s work process. Making the effort to support content creators’ and developers’ work processes can reduce their dependence on a designer, and reduce unplanned revisions.
For example — the time spent revising an interface design to support not-originally-scoped content adjustments can be reduced. The work of a designer does not need to constrain or slow down the work of a content creator. And, the work of a content creator does not need to become revisionary work for a designer.
And, for example — the time spent revising an interface design for misunderstood user needs can be reduced. The work of a designer does not need to constrain or slow down the work of a developer. And, the work of a developer does not need to become revisionary work for a designer.
By taking on this responsibility, a designer can expect to spend less time on small iterations to already-published interfaces. Instead, time can be spent, and relationships with peers can focus on, new and higher-quality work.
Context
The relationship between designers, content creators, and developers rarely grows, because their work processes do not naturally synchronize.
This lack in synchronicity can be the source of undesirable dependencies, unplanned revisionary work, and degraded user experiences.
Content Creators
In order to effectively produce and manage content across a website, a content creator needs to add, edit, and remove items within existing interface designs.
Common problems tend to arise from removing items that were previously required, or adding items that were not previously included.
With industry-standard static mockups, design guidance is not usually provided for these scenarios. And, consequently, these scenarios are not considered during approvals, development, or testing of an interface.
There are two possible results from this. One involves a content creator publishing updates that break an interface’s design, resulting in a degraded user experience. The other involves an undesirable dependence, where a content creator cannot complete their task unless a designer and a developer is involved to fix bugs that arise.
In either case, designers, content creators, and developers must spend their time fixing issues within an existing interface, rather than on increasing the quality of a new one.
But, if an interface is designed and developed to support these dynamics from its beginning, then a content creator can complete their tasks without constraint, without requesting others’ time, and without lowered quality.
??
Lorem
ipsum dolor
Sed odio morbi quis commodo odio aenean accumsan sed adipiscing diam
Dolore
Pulvinar
proin gravida
Posuere morbi leo urna molestie at elementum eu. Neque sodales ut etiam
Gravida
Developers
In order to effectively build an interface, a developer needs to support all of the possible conditions in which a user might view and interact with it.
Common problems tend to arise when a user finds themself in a blind-spot; that is, a view which was not considered during the design process.
With industry-standard static mockups, design guidance for edge-cases can easily be left out. And, consequently, blind-spots pass through the approval, development, and testing of an interface.
There are two possible results from this. One involves a developer building an interface as-designed (including its blind-spots), resulting in a degraded user experience. The other involves an undesirable dependence, where a developer cannot complete their task until a designer is brought back in to cover the blind-spot and get the design re-approved.
In either case, designers and developers must spend their time fixing issues in an existing interface, rather than on increasing the quality of a new one.
But, if an interface is designed to support these dynamics from its beginning, then a developer can complete their tasks without constraint, without requesting others’ time, and without lowered quality.
??
Lorem
ipsum dolor
Sed odio morbi quis commodo odio aenean accumsan sed adipiscing diam
Dolore
Pulvinar
proin gravida
Posuere morbi leo urna molestie at elementum eu. Neque sodales ut etiam
Gravida
How do I
implement it?
A designer’s workflow, as well as their communication during hand-off, must align with the needs of content creators and developers.
Workflow and communication re-alignment can take place in familiar design tools. Figma, an industry-standard design tool, includes features for dynamic interface creation and for effective hand-off to peers.
Content Removal
For a content creator to get rid of, or simply not make use of elements within an interface — without breaking the interface’s design intent — each element must be positioned relative to its neighbors.
In Figma, this can be achieved using two features; Auto Layout and Component Properties.
Auto Layout allows a design to resize and re-position when its elements change in size or visibility. Component Properties allow for the simulated removal of elements.
Auto Layout can be applied to a selection (or a group) of elements by using the shortcut ⇧Shift + A.
A consistent gap will be added between the selected elements, and they will be set to flow within a preset layout; Horizontal →, Vertical ↓, or Wrap ↩.
If a consistent gap between elements is not desired — the gap can be set to zero, and then transparent rectangle objects can be added between elements. Each rectangle’s width or height can be adjusted individually, in order to fine-tune the spacing between elements.
??
Lorem
ipsum dolor
Sed odio morbi quis commodo odio aenean accumsan sed adipiscing diam
Dolore
Pulvinar
proin gravida
Posuere morbi leo urna molestie at elementum eu. Neque sodales ut etiam
Gravida
A Component Property is an option for varied style or visibility, that can be attached to elements within a Component. The value of a Component Property can be adjusted within each Instance of a Component.
A Component is a re-usable element, or group of elements. To create a Component — select an element (or a group), and use the shortcut ⌥Option + ⌘Command + K.
Each Component is a manageable source, in which Instances can be derived. To create a Component Instance — simply select a Component, copy ⌘Command + C it, and then paste ⌘Command + V it.
A Boolean type Component Property can be used to simulate the removal of an element, by way of visibility toggling. To create a Boolean Component Property — select a Component source, click the + icon next to the ‘Properties’ heading in the right-side toolbar, choose ‘Boolean’, name it, and then click the ‘Create Property’ button.
To attach a Property to an element — select an element within a Component source (that does not already have an attached Property), click the ‘Apply boolean property’ button next to the ‘Layer’ heading (in the right-side toolbar), and then choose the Property’s name.
To not create an issue with spacing between elements, a Component Property should be attached to its intended element, as well as the element’s lower or rightward spacing (transparent rectangle) object.
??
Lorem
ipsum dolor
Sed odio morbi quis commodo odio aenean accumsan sed adipiscing diam
Dolore
Pulvinar
proin gravida
Posuere morbi leo urna molestie at elementum eu. Neque sodales ut etiam
Gravida
With the resize and re-position ability of Auto Layout, as well as the simulated element-removal of Component Properties, a designer can support the needs of Content Removal in a way that maintains an interface’s design intent.
The best way for a designer to communicate this work during hand-off is to describe it as a strategy for applying margin/padding to each element. The strategy outlined above can be described as associating each element with the space between its lower and rightward neighbors.
A developer can also gain meaningful intuition about an interface, by seeing a demo of each element’s visibility being toggled.
The specifics of Auto Layout and Component Properties do not need to be communicated, because they simulate native web browser behavior.
Supporting this dynamic removes the need for a designer to intervene each time that content is removed from, or is not placed within, an existing interface design.
??
Lorem
ipsum dolor
Sed odio morbi quis commodo odio aenean accumsan sed adipiscing diam
Dolore
Sed lectus
Pulvinar
proin gravida
Posuere morbi leo urna molestie at elementum eu. Neque sodales ut etiam
Gravida
Scelerisque
Content Addition
For a content creator to increase the length of, or translate, text within an interface — without breaking its design intent — each element must be set up to expand or truncate.
And, for a content creator to increase the quantity of an existing element — without breaking its interface’s design intent — additional element instances must be planned for.
Building on the Content Removal dynamic, these needs can be met within text elements through Type settings, and met within element groups through Auto Layout settings and additional Component Properties.
When a text element’s height is set to ‘Hug contents’, words that move past its given width will wrap to a next line; the element’s height will expand.
When a text element’s height is set to ‘Fixed’, words that move past its given width and height will end up outside of its bounds; the element’s height will not expand. Hiding the text that is out-of-bounds can be achieved through the appropriately-named Type setting ‘Truncate text’.
The ‘Fixed’ and ‘Hug contents’ settings can found underneath the standard dimension and position inputs, within the right-side toolbar.
‘Truncate text’ can be found under the ‘Text’ heading in the right-side toolbar; by clicking the ⋯ icon, and scrolling to the bottom of the ‘Basics’ tab. Text can be truncated with A… and it can be wrapped with –.
??
Lorem
ipsum dolor
Sed odio morbi quis commodo odio aenean accumsan sed adipiscing diam
Dolore
Pulvinar
proin gravida
Posuere morbi leo urna molestie at elementum eu. Neque sodales ut etiam
Gravida
Similar settings can be applied to a group of elements. When a group includes Auto Layout, its elements can be truncated or wrapped just like words within a text element.
Element wrapping can be achieved with the Auto Layout setting Wrap ↩, a ’Fixed’ width, and a height set to ‘Hug contents’.
Element truncation can be achieved with the Auto Layout setting Horizontal →, a ‘Fixed’ width and height, and with ‘Clip content’ turned on. The ‘Clip content’ setting can be found underneath the dimension and position inputs, in the right-side toolbar.
Once a group is set up to wrap or truncate, any number of elements can be placed within it. And, if a group lives within a Component, then a boolean Component Property can be attached to each element, for visibility toggling.
This is helpful when planning for an increase in the quantity of elements, like buttons. A single button might be included in the standard use of an interface, but more can be available (hidden behind Component Properties) for whenever they are needed.
Each Instance of a Component is then able to support a unique number (one, two, all) of the available elements in a group. And, the elements will wrap or truncate as needed.
??
Lorem
ipsum dolor
Sed odio morbi quis commodo odio aenean accumsan sed adipiscing diam
Dolore
Pulvinar
proin gravida
Posuere morbi leo urna molestie at elementum eu. Neque sodales ut etiam
Gravida
With the ability to expand, wrap, or truncate text elements, as well as element groups, a designer can support the needs of Content Addition in a way that maintains an interface’s design intent.
The best way for a designer to communicate this work during hand-off is to provide a secondary Instance of their interface, where all text is longer than expected, and where all grouped-elements are showing. Showing all elements in a group, as well as longer-than-expected text will give a developer an idea of the possibilities that should be supported.
It is also important to explicitly communicate any minimum, maximum, or fixed widths (and/or heights), for each element.
Supporting this dynamic removes the need for a designer to intervene each time that content is added or translated within an existing interface design.
??
Lorem
ipsum dolor
Sed odio morbi quis commodo odio aenean accumsan sed adipiscing diam
Dolore
Pulvinar
proin gravida
Posuere morbi leo urna molestie at elementum eu. Neque sodales ut etiam
Gravida
User Interaction
For a user to interact with any element in an interface, any number of times, in any order — without its design intent being disrupted — each possible interaction needs to be simulated.
In Figma, this can be achieved using two features; Prototypes and Variants.
A Prototype is an interactive preview of a user-flow, that can be set up within any Figma design file.
A Frame is needed as the starting point for a Prototype. To create a Frame — press F to use the Frame tool, and then click on the canvas to place one. A Frame can be re-sized and re-positioned as needed, and multiple Frames can be added to the same canvas.
To view tools related to Prototypes, click ’Prototype’ at the top of the right-side toolbar. To set a Frame as the starting point for a Prototype — select the Frame, and then click the + next to the ‘Flow starting point’ heading, in the right-side toolbar.
Interactions can be added to any element, and they can be associated with a change from one Frame to another.
To add an Interaction — select an element or a Component, and then click the + next to the ‘Interactions’ heading, in the right-side toolbar. The interaction type will automatically be set to ‘On click’, and its action will automatically be set to ‘None’. To set a second Frame as the target of an Interaction, adjust the action to ‘Navigate to’, and then select the second Frame as the destination.
Running the Prototype will show the first Frame, and allow a reviewer (an approver, a developer, etc) to click the interactive element and move from the first Frame to the second Frame. To run a Prototype — select the Frame that is the Prototype’s starting point, and then press ⇧Shift + Space.
??
Lorem
ipsum dolor
Sed odio morbi quis commodo odio aenean accumsan sed adipiscing diam
Dolore
Pulvinar
proin gravida
Posuere morbi leo urna molestie at elementum eu. Neque sodales ut etiam
Gravida
Prototypes can be enhanced with the use of transitions and Variants.
Each Interaction can be given a transition from its origin to its destination, rather than shifting instantly and abruptly.
An Interaction’s transition can be adjusted by selecting its associated element, by clicking on the Interaction in the right-side toolbar, and then by finding the transition selector underneath the Interaction’s destination.
Although transitions are automatically set to ‘Instant’, there are additional options to choose, like ‘Dissolve’ or ‘Slide in’. Each transition has its own set of options, like timing, as well as its relative direction.
A Variant is an adjustable derivative of an existing Component.
To create a Variant — click back over to the ‘Design’ tab (at the top of the right-side toolbar), select a Component, click the + next to the ‘Properties’ heading in the right-side toolbar, and then choose ‘Variant’.
Adding a first Variant will not change a Component in the canvas. But, adding a second Variant will duplicate the Component, and also cause an outline to be added around the two, in order to denote that they are related.
Variants can be used instead of Frames, as the starting and ending points of an Interaction.
To switch from one Variant to another within an Interaction — move back over to the ‘Prototype’ tab (at the top of the right-side toolbar), select a Component (that includes a Variant) within a Prototype Frame, add (or adjust) an Interaction to be ‘On click’ and ‘Change to’, and then select a Variant as the destination.
This is useful for keeping Interactions manageable. Each interactive element can live within a single Component, and each possible view can be represented by a Variant of that Component.
??
Lorem
ipsum dolor
Sed odio morbi quis commodo odio aenean accumsan sed adipiscing diam
Dolore
Pulvinar
proin gravida
Posuere morbi leo urna molestie at elementum eu. Neque sodales ut etiam
Gravida
With the ability to simulate, manage, and test interactions, a designer can support the needs of User Interaction in a way that maintains an interface’s design intent.
The best way for a designer to communicate this work during hand-off is to share all applicable Prototypes. Presenting a concise demo of each Prototype allows a designer to thoroughly communicate interactions, and to make sure that nothing is missed during review or development.
It is also important to explicitly communicate any transitions that are added to an interaction; the transition’s action, as well as its timing.
Supporting this dynamic removes the need for a designer to intervene in the development process (or after initial release), each time that a blind-spot is found in an interface’s user experience.
??
Lorem
ipsum dolor
Sed odio morbi quis commodo odio aenean accumsan sed adipiscing diam
Dolore
Pulvinar
proin gravida
Posuere morbi leo urna molestie at elementum eu. Neque sodales ut etiam
Gravida
Viewport Sizing
For a user to view an interface on any device, and under any circumstance of window resizing — without its design intent being disrupted — the full spectrum of device widths need to be simulated.
Building on all previous dynamics, this need can be met by including additional Frame widths as well as additional Component Variants.
The view of an interface should (at least) be considered at every width between 300px and 3000px.
These dimensions come from common screen widths, or viewports; the common smallest phone screen width, 320px, and common large desktop screen widths, around 2560px (both adjusted for pixel density). To account for common screen sizes changing over time, and to make the spectrum easier to remember, the dimensions are rounded to 300px and 3000px.
Although Figma does not currently include a tool for conveniently supporting this, a simple system can be set up to handle all views — at their edges as well as at every pixel in between.
One system involves focusing on the views in which a major change takes place, and then representing in-between views as spectrums. In Figma, this can be set up using Frames of different sizes.
For example, Frames can be created at 300px width, 615px width, and 3000px width, for the three major views of an example interface. To support these major views, a Frame can be created at 614px width and another at 2999px width, in order to represent the spectrums from 301px to 614px and from 616px to 2999px.
??
Lorem
ipsum dolor
Sed odio morbi quis commodo odio aenean accumsan sed adipiscing diam
Dolore
Pulvinar
proin gravida
Posuere morbi leo urna molestie at elementum eu. Neque sodales ut etiam
Gravida
To differentiate the presentation of an interface between major views — a Component, Variants of that Component, and Constraints can be used.
After completing its design for a single view, an interface can be converted to a Component.
Variants of that Component can then be added, in order to adjust its presentation for each major-view. A new Variant named ‘Width’ can be given values to correspond with the dimension of each major-view Frame; 300px, 615px, and 3000px.
Within each Variant, a group (or a sub-component) that includes Auto Layout can be given different settings, in order to fit its associated Frame. For example, a Component can lay out elements horizontally in its 300px width Variant. And, that same Component can use a wrapped layout of elements for its 615px width Variant.
Additionally, within each Variant, sub-components can be uniquely positioned or even hidden. For example, a sub-component can be shown in a 300px width Variant, but hidden in a 615px width Variant.
A spectrum-view represents the widths between a smaller and a larger major-view. For example, the 614px view represents the widths between 300px and 615px. Spectrum views can be filled using the Variant of its smaller view, in this case 300px, and then positioned in its wider Frame using Constraints.
Constraints define how an element or a Component responds when its Frame is resized. To apply a Constraint — select a Component Instance, and then choose a preferred option under the ‘Constraints’ heading in the right-side toolbar.
??
Lorem
ipsum dolor
Sed odio morbi quis commodo odio aenean accumsan sed adipiscing diam
Dolore
Pulvinar
proin gravida
Posuere morbi leo urna molestie at elementum eu. Neque sodales ut etiam
Gravida
With the ability to simulate a large spectrum of user devices, a designer can support the needs of Viewport Sizing in a way that maintains an interface’s design intent.
The best way for a designer to communicate this work during hand-off is to share all applicable Frames; all major and spectrum views. Presenting a concise demo of how an interface adjusts through each view provides a developer with intuition about how to tie them together in code, and makes sure that nothing is misinterpreted during review or development.
It is also important to explicitly communicate layout differences, element visibility differences, and Component-to-Frame Constraints for each view.
Supporting this dynamic removes the need for a designer to intervene in the development process (or after initial release), each time that a blind-spot is found in an interface’s user experience.
??
Lorem
ipsum dolor
Sed odio morbi quis commodo odio aenean accumsan sed adipiscing diam
Dolore
Pulvinar
proin gravida
Posuere morbi leo urna molestie at elementum eu. Neque sodales ut etiam
Gravida
Afterword
By incorporating Interface Dynamics, a designer can improve collaboration and improve quality of output on a website team.
Taking on this responsibility allows a designer to spend less time on small iterations for already-published interfaces. Instead, time can be spent, and relationships with peers can focus on, new and higher-quality work.
A website team can benefit from this in scenarios where content or development work is slowed by the need for design revisions, where the work to create new interfaces must be sped up, or where blind-spots in design are causing degraded user experiences.
This article provides just an overview; the concept and implementation can be expanded and/or adapted for products in any dynamic medium.
??
Lorem
ipsum dolor
Sed odio morbi quis commodo odio aenean accumsan sed adipiscing diam
Dolore
Pulvinar
proin gravida
Posuere morbi leo urna molestie at elementum eu. Neque sodales ut etiam
Gravida
Any questions?
Feel free to contact me
EmailDidn’t like this article?
Wow. Well maybe check out the others
Back