Web Design
Website UI Design: From Structure to Working Interface
A website’s user interface connects its content to the actions people need to take. Navigation, typography, layout, controls and feedback should help visit

A website’s user interface connects its content to the actions people need to take. Navigation, typography, layout, controls and feedback should help visitors find information and understand what happens next. Designing these elements together is more useful than polishing isolated screens.
Start with a clear task, establish the page structure, then develop visual rules and interactive states. Use realistic content throughout. A layout that accommodates only short headings and successful interactions leaves important design decisions unresolved.
Define the interface’s job
Before choosing colours or typefaces, write one sentence describing the main visitor task. For a reference website, this might be: “A reader can find an explanation, identify its relevant section and follow a supporting reference.” For a catalogue, the task might involve narrowing options and comparing their details.
Identify the information needed to complete that task and the next action on each page. Distinguish essential content from supporting material. If every section demands equal attention, the interface provides little help with prioritisation.
Set a clear boundary for the first version. List its necessary pages and states, including an empty result, unavailable content and an unsuccessful action. These belong in the design brief alongside the successful journey.
Arrange content before decorating it
Sketch the main pages as headings, text blocks and controls. Decide what belongs together and which relationships require navigation. A simple outline often reveals duplicated sections or missing explanations before detailed visual work begins.
Consider visitors who arrive directly on an internal page. They need a meaningful title, enough context to understand the content and a clear route to related information. Do not rely on the homepage to explain everything.
Use familiar navigation labels and consistent terms for repeated actions. The heuristic guidance provides a reference for reviewing consistency, feedback and error recovery. Apply those ideas to concrete questions: can visitors identify their current location, recognise an available action and undo a mistaken choice?
Test the content order without decorative styling. If headings and labels fail to explain the page, stronger colours will not resolve the underlying structure.
Establish a small visual language
Choose a limited set of rules for typography, colour, spacing and layout. Give each rule a purpose rather than selecting values independently for every screen.
- Typography: distinguish headings, body text, labels and supporting information without creating unnecessary variations.
- Colour: assign clear roles to text, backgrounds, borders, actions and status messages.
- Spacing: use repeatable gaps to show which elements belong together.
- Layout: define readable content widths and how columns rearrange as space narrows.
- Shape: use borders and surfaces where they clarify grouping or interaction.
Check relationships in context. Supporting text should remain readable even when visually quieter than a heading. An action should be recognisable through its wording, position and appearance. Error information needs an explanation as well as a colour change.
Record shared decisions with descriptive names, such as “body text colour” or “control spacing”. Keep those names aligned across design notes and implementation. The project documentation offers a supporting reference for component-based implementation. Use documentation to record repeatable decisions without forcing unrelated pages into identical layouts.
Specify component behaviour
A component needs more than a default appearance. For a button, consider focus, hover, activation, loading and disabled states where relevant. For a form field, consider empty input, completed input and errors. Explain why an unavailable action cannot proceed.
Document what each component accepts, how it behaves and when to use it. Include keyboard operation, content limits and the result of activation. A navigation control, for example, needs rules for opening, closing and moving focus, not just an icon.
Test awkward content deliberately: a heading that wraps across several lines, a long address or a missing description. Check intermediate screen widths as well as narrow and wide examples. Responsive behaviour should follow the space the content needs, rather than a pair of fixed mockups.
Create reusable patterns when their shared purpose is clear. Two elements that look similar may need different behaviour; document that difference before combining them.
Build accessibility into the design
Accessibility affects structure, reading order, control names, contrast and interaction. Use the W3C Web Content Accessibility Guidelines 2.2 as a reference when specifying and checking these decisions.
- Give controls meaningful labels that remain available after someone enters text.
- Provide a clearly visible keyboard focus indicator.
- Keep headings in a logical hierarchy and content in a sensible reading order.
- Explain status and errors in words rather than colour alone.
- Check text and control contrast against their actual backgrounds.
- Allow text enlargement without hiding essential content or actions.
- Avoid unnecessary motion and account for reduced-motion preferences.
Navigate the implemented page using only a keyboard. Check whether every relevant control is reachable, the focus order follows the task and overlays provide a clear way out. Look for focus indicators concealed by sticky headers or other content.
Combine automated checks with direct inspection. A tool may identify a missing label, but a person still needs to judge whether the label explains the control. Check the reading sequence and error recovery as carefully as the visual presentation.
Write content that explains actions
Labels and messages are part of the interface. “Save changes” describes an action more clearly than “Submit” when saving is what happens. Link text should explain the destination without requiring the surrounding paragraph to make it meaningful.
Write error messages that identify the problem and give a useful next step. For an incomplete field, say what information is needed. Preserve valid input when an action fails so that recovery does not require starting again.
An empty state should explain what is absent and what the visitor can do. Distinguish “No items have been added” from “No items match these filters”: one suggests adding content, while the other suggests changing the search. Avoid blaming the visitor for a system failure.
Prototype the uncertain part
Choose a prototype that answers a specific question. Can someone find a category? Do they understand a comparison? Can they correct an error? Build enough of the journey to observe that behaviour without detailing every page.
Give a participant a realistic task without naming the control you expect them to use. Observe their first choice, hesitation and recovery. Avoid explaining the interface while they work; that explanation can hide the problem you need to find.
Record observable issues rather than broad reactions. “The participant missed the filter because it resembled a heading” suggests a change. Prioritise barriers to completing the task, then test the revised interaction.
Keep the test conditions consistent enough to compare revisions. If you change the task wording and the navigation together, it becomes harder to tell which change helped. Note where participants needed information that the page did not provide, and address that gap before adding explanatory tooltips. Essential instructions should be available at the point where someone needs to make a decision.
Review the implementation in context
Check the working page with realistic content, browser zoom and different viewport widths. Confirm that layout changes preserve reading order and keep controls accessible. Inspect long labels, interrupted requests and repeated activation of an action.
Compare implemented components with their documented states. Where behaviour differs, resolve the mismatch and update the documentation. Record unresolved issues with the affected page, steps to reproduce them and the expected result, so the next change has a clear verification task.
