Practical web UI/UX / personal lessonsLesson 4 of 15
Practical web UI/UX · Lesson 4

Build a small type system for an application

Repeated roles should look related. A type system reduces arbitrary choices while leaving room for content and language differences.

By the end: distinguish headings, labels, values, hints, and action text using a restrained set of treatments.

Assign styles to roles

Start with readable body text. Add a modest heading size and a clear label weight. Hints should remain readable but distinct from the entered value. A label identifies the field; a hint explains a constraint or example. Neither should masquerade as user data.

A small set of named roles is easier to maintain than choosing a new font size for every element. Font size alone does not determine visible letter size; font metrics and fallback faces affect appearance. This course uses platform fonts rather than assuming a specific commercial family.

Make text roles recognizable while reading

When you return to a booking card, you rarely read every word in order. You might look for the workshop name, check Saturday's time, then find the action that reserves a place. A text role is the job a piece of text performs in that process. Clay basics identifies the object. When names a fact and Saturday, 14:00 supplies its value. Reserve a place names an action. A type system assigns repeatable visual treatment to these jobs rather than choosing an unrelated size for each sentence.

Start by separating meaning from prominence. A heading tells you what a region is about; its visible size helps you locate it. A label tells you what a value represents; a hint explains how to supply or interpret that value. These distinctions remain useful even when all the text uses one font family. If a hint looks like entered data, someone may assume the field is already complete. If an action resembles an ordinary sentence, someone may miss the operation despite understanding the words.

Read the static receipt address example as a sequence. Before entry, Email identifies what belongs in the field and the fictional address illustrates a possible format. After entry, the visible label still identifies the value while the hint remains explanatory text. The specimen contains no operating field. It isolates the difference between a label, a hint, and a value without asking you to submit anything. Changing their text treatments cannot establish whether the address exists, whether a receipt was sent, or whether a service accepted a booking.

Identity, guidance, and value stay distinct

Static form excerpt: before entry
Email
Use a fictional receipt address.
Value: empty
Example format: [email protected]
Static form excerpt: after entry
Email
Use a fictional receipt address.
Example format: [email protected]
The label identifies the field before and after entry. The hint describes safe example use; it is not the entered value. These are static text specimens, not inputs, and the invented address provides no evidence of deliverability or receipt transmission.

A useful small system might give body sentences one treatment, labels a slightly stronger weight, and workshop names a larger heading treatment. There is no requirement to introduce a different font for each role. Too many differences require readers to infer more categories than the task contains. Too few differences can leave a title indistinguishable from an instruction. Keep important explanatory text readable even when it is less prominent. Reducing its size or contrast until it disappears does not create a useful supporting role.

Repeated treatment also helps after state changes. In the working card, the reservation status remains ordinary readable text whether it says no reservation exists or one place is reserved. The button changes wording to name the reverse action. Those two texts answer different questions, what is true now and what can happen next. Making the status look like another action would weaken that distinction. Making it much fainter would hide evidence someone needs to decide whether to operate the button again.

The next action is not the current state

Static card excerpt: unreserved
Reservation action wording
Reserve a place
Details action wording
View details
Current status
No local reservation made.
Static card excerpt: reserved
Reservation action wording
Release demo place
Details action wording
View details
Current status
One demo place reserved. No payment taken.
After reserving, the status describes the current local result while Release demo place describes the possible next transition. Keeping the two roles recognizable helps someone interpret the change; no actual booking, payment, or persistence is involved.

Text hierarchy must match the task, not merely the document's longest phrase. A workshop name deserves enough prominence to identify the session, but availability and action wording remain necessary for reservation. A content article can give a large headline more room because its next task is reading the article. A compact application card must support identity, facts, and operations within one decision. Before changing sizes, explain what someone needs to recognize first and what they must still be able to check without hunting.

Try the interface

Your task: Compare uniform-size, title-role, and oversized-title treatments with the same session facts. Identify which differences clarify roles and which consume space.

Refactor the working workshop card

Studio Desk demonstration. Actions affect this page only, not a real booking, account, or payment.

Reference card treatment

Weekend workshop

Clay basics

Make a small piece with a tutor.

When
Saturday, 14:00

Where
West studio

Available
3 places in this demo

No local reservation made.

Selected card treatment

Weekend workshop

Clay basics

Make a small piece with a tutor.

When
Saturday, 14:00

Where
West studio

Available
3 places in this demo

No local reservation made.

Only the selected treatment changes. The reference holds this lesson's starting treatment; unrelated style settings match across both sides. Design controls preserve local card feedback; Reset comparison restores both cards and the design controls. These alternatives are not assigned a quality score.

Compare the three title sizes without changing the facts

The working typography comparison varies only the session title's size. Uniform size sets it to seventeen CSS pixels, Title role to twenty four, and Oversized title to thirty four. The reference title stays at seventeen. The selected card begins at twenty four. Body paragraphs and buttons use their existing seventeen pixel treatment. Heading weight, supporting labels, group spacing, and behavior do not switch with these presets. The word Uniform names a size comparison, not a promise that every weight and text property becomes identical.

Inspect the reference before choosing a preferred size. Clay basics is still a heading, has its own weight, and occupies a distinct place in the card, even at seventeen. It is not simply indistinguishable body text. Now select Title role and compare how readily you can locate the name before checking When. You have changed one contributor to prominence, size, while leaving the others present. This makes the comparison more specific than replacing an entire type system and calling the result a title size effect.

Next select Oversized title and read the card as a decision about Saturday. The larger title may be easier to locate, but it can demand more lines and move the facts and actions downward. The title's line height is 1.35 times its font size. A single line therefore has a nominal line box of 22.95, 32.4, or 45.9 CSS pixels for these presets. These are layout calculations, not measurements of visible letter height, occupied ink, attention, or the complete heading block including margins.

Declared size changes the line box, not just the letters

17 CSS px title × 1.35 = 22.95 CSS px per line. Numerical reference only.
24 CSS px title; one line box = 32.4 CSS px
Clay basics
Saturday, 14:00 · West studio
34 CSS px title; one line box = 45.9 CSS px
Clay basics
Saturday, 14:00 · West studio
The two rendered titles use the actual 24 and 34 CSS px presets. The 17 CSS px case is given numerically to keep this figure's text at least 18 px. All line-box calculations use the live title's 1.35 multiplier, exclude margins, and say nothing about visible glyph height or reading performance. Supporting text here is 18 px, unlike the live card's 17 px paragraphs.

The static specimens render twenty four and thirty four pixel titles; seventeen is listed numerically. Their containing columns can be a different width from the live comparison, so line breaks need not match. Inspect the relation between title and facts rather than comparing screenshot height as if every surrounding dimension were equal. Browser font choice also matters. The same declared size can produce different visible letter forms and widths in different installed platform fonts. A numerical scale is a repeatable instruction, not a guarantee of identical appearance everywhere.

Reserve a place on the selected card, open details, and then switch through all three size presets. The selected card keeps its reservation and expanded details. Availability remains two places and the action remains Release demo place. The reference has separate state. This allows you to inspect the title in an occupied card without a preset erasing the extra text. If you compare the unexpanded reference with the expanded selected card, describe that content difference rather than attributing the full height difference to typography.

The selected card remains reserved as its title changes

Selected-card stepTitle sizeState retained or cleared
Reserve; open details24 CSS px2 available; details visible
Uniform size17 CSS px2 available; details still visible
Oversized title34 CSS px2 available; details still visible
Reset comparison24 CSS px3 available; details closed
Title presets preserve the selected card's held place and expanded details. The reference has independent state. Reset comparison, unlike a size preset, clears both cards and returns the selected title size to 24 CSS px.

Use Reset comparison to restore the selected title to twenty four and clear both cards' local action feedback and details. Then set both cards to the same reservation and details state before comparing again. There is no title size slider or editable title in this lab. The supplied presets test three concrete sizes with the same session facts. Long wording is a separate stress case below. Keep that distinction when reporting an observation, because a size effect and a content length effect answer different questions.

Use text content as part of the design

Replace vague labels such as "Submit" when a specific action can be stated, such as "Save contact details." Keep labels short enough to scan but long enough to distinguish actions. Sentence case is a practical default for these examples, not a universal rule for every language or brand.

These presets change the session title size between 17, 24, and 34 CSS px. Weight, labels, body text, and actions retain their treatment. The oversized-title treatment is a counterexample: increasing title size can consume attention and space without adding information. Compare the same content under all presets. A neat numerical type scale does not establish that the actual heading fits.

Write labels that distinguish the available actions

Readers must interpret the roles you emphasize. Consider a fictional action labeled Continue. It names movement but leaves the destination unclear. If it opens a review, a label such as Review selection explains that transition. If it creates the local reservation immediately, Reserve a place describes the effect more directly. Enlarging Continue cannot supply the missing consequence. Before changing a label, establish what the action actually does so the new wording does not promise a later step that does not exist.

In this working card, Reserve a place immediately toggles a local held state. There is no review, account creation, payment, or sent receipt. The action then reads Release demo place, and the nearby status says one demo place was reserved with no payment taken. Its next operation releases that local place. View details is independent and only shows the materials instruction. These differences matter when judging visual prominence. A large action that names the wrong effect is more misleading, not more useful.

Practice with the shown state trace before operating the model again. Begin with three available places and no local reservation. Predict the words and count after one reserve action, then after release. The first action should leave two available, and the second should restore three. Now open details without reserving. The materials instruction should appear while availability stays three. If you cannot explain which text answers state and which names a next action, inspect their wording before concluding that a font change is the missing repair.

Follow the words through independent operations

OperationAvailabilityVisible evidence
Initial card3 placesReserve a place; no local reservation
Reserve a place2 placesRelease demo place; one demo place reserved
Release demo place3 placesReserve a place; no local reservation
View detailsStill 3 placesHide details; materials and apron instruction
Reserve and release change local availability and reservation feedback. Opening details changes only the details wording and instruction visibility. Separating these transitions prevents a typographic change from being mistaken for a reservation or service acknowledgment.

For a settings form, compare an imagined button labeled Submit with Save contact details. The latter identifies what will be saved, but it is truthful only if that is the operation. A field labeled Email and a hint explaining the intended receipt use likewise require an actual product policy. The static example uses fictional data and makes no delivery promise. A short label should remain specific enough to identify the field after typing. Keep longer purpose or format guidance separate rather than making the label carry an entire instruction paragraph.

Shortening is not automatically clarifying. Two sessions named Introduction to hand built ceramics and Introduction to printmaking become indistinguishable if both are shortened to Introduction. A concise distinguishing title such as Hand built ceramics changes the copy, so it requires checking that meaning remains intact. The static specimen explicitly marks that editorial change. In the live typography model the title stays Clay basics under every preset. Do not credit typography for a comprehension improvement that actually came from replacing vague words with more specific content.

A shorter title must keep the distinction

Static source titles
Introduction to hand built ceramics
Introduction to printmaking
Static proposed copy revision
Hand built ceramicsPrintmaking
Rejected common crop for both: Introduction
Both sessions lose their identity if each is cropped to Introduction. The proposed shorter names are explicit copy changes, not typography presets. They retain the distinguishing subjects, but a real editor would still check whether any omitted wording matters to the actual course offering.

To explore wording with an intended reader, show a safe static example and ask what they expect each action to do before they see the result. Compare that expectation with the actual transition. Then ask what they believe happened after the status appears. This can reveal a promise mismatch that a preference question misses. It is not a controlled study by itself. If you change size, placement, and wording together, record the result as evidence about that combination rather than isolating the cause to type size.

Test more than ideal English

Long names, accents, localized dates, and translated labels change layout. CSS pixels are layout units, not necessarily one physical screen pixel. Zoom and text settings can change the effective space available. Avoid a design that works only at one exact string length.

Preserve semantic headings and visible labels when changing styles. A heading level describes document structure, not its desired font size. Do not replace real text with an image to force identical line breaks across devices.

Keep the text system intact when words grow

Long content tests whether a text system merely fits one specimen. A short workshop name may occupy one line at every size. A longer title may need several lines and push the facts below it. That is not automatically a failure if the whole title and decision facts remain available. The failure occurs when a height limit clips identity, a label overlaps its value, or an action becomes unreachable. Prefer a readable additional line to hiding the part that distinguishes the workshop.

Compare the long title specimens with the short title still in mind. They use the same long words on both sides; only heading size differs. First locate the end of the title, then the first fact beneath it. At thirty four pixels the title can consume more vertical room than at twenty four. How much depends on available width and the font. The static specimens let their height follow their text. They do not simulate a fixed crop, and they do not claim a measured reading speed advantage.

The same long title at two heading sizes

Static long-title example: 24 CSS px
Weekend workshop
Introduction to hand built ceramics and surface decoration
Make a small piece with a tutor.
When
Saturday, 14:00
Where
West studio
Available
3 places in this demo
Static long-title example: 34 CSS px
Weekend workshop
Introduction to hand built ceramics and surface decoration
Make a small piece with a tutor.
When
Saturday, 14:00
Where
West studio
Available
3 places in this demo
Both columns contain identical words and facts. Their 24 and 34 CSS px headings use line-height 1.35 and natural height. Wrapping depends on the allocated width and platform font, so the visible result is a content stress example, not a guarantee of any particular line count or usability benefit.

Names, dates, and translations also change length independently of your preferred scale. Saturday, 14:00 is shorter than many fully written date and time descriptions. A translated action may require another line even when its meaning is unchanged. Keep buttons able to wrap without reducing the text until it fits one line. Recheck label/value relationships after wrapping. A label above a field often preserves a close relationship in narrow space, but proximity to neighboring fields still determines whether someone can tell which field it names.

Browser enlargement is a different stress from long copy. A layout can fit a long title at its default size yet fail when the reader enlarges the page. Try zooming while reading the current card's name, facts, action, and status in sequence. Inspect for missing text and sideways scrolling needed merely to finish ordinary lines. This is a targeted inspection, not a full accessibility audit. The later responsive component has its own width controls; typography presets here do not provide a complete page reflow test.

Document structure must survive visual revisions too. A heading's level states where it belongs in the document, not how many pixels it should occupy. Making a workshop name look smaller should not turn it into an arbitrary unstructured string just to get the desired appearance. Likewise, visible field labels need their programmatic relationships; visual proximity alone does not name an input for assistive technology. A good visual system and meaningful structure support different ways of reading, and neither one proves the other is correct.

A longer label must stay attached to its value

Static concise fact
When
Saturday, 14:00
Where
West studio
Static expanded wording
When
Saturday at fourteen hundred hours
Where
West studio
The second specimen explicitly expands the date wording while retaining the same day and time. A stable label position and natural height preserve the relationship as the value wraps. The amount of wrapping is determined by the actual column width; semantic labeling and full reflow still need separate checks in an operating form.

For transfer, choose a harmless settings or booking example and identify its name, labels, values, hints, actions, and state evidence. Propose a small repeatable treatment for those roles, then test one longer title and an enlarged rendering without changing their meaning. Ask whether the distinguishing words and the completion evidence remain available. Report exact observations such as an overlapping label or a fully visible wrapped action. Do not replace those observations with a claim that a mathematically neat scale, adequate contrast number, or attractive screenshot establishes usability.

Exercises

Separate a label from a hint

A field is labeled "Email, for your booking receipt, not marketing." How could you clarify the roles without losing the information?

Hint

Keep identity concise and move purpose into associated helper text.

Worked answer
RoleContent
LabelEmail
HintUsed for your booking receipt
ValueThe address entered by the user
Each text role answers a different question.

Use "Email" as the visible label and an associated hint explaining that it is used for the booking receipt. Only make a privacy promise that the actual service fulfills. Keep the hint available after typing, rather than using it as a disappearing placeholder.

Handle an oversized title

A 48 px session title wraps into four lines and pushes availability far below the action. What should you preserve while revising it?

Hint

The title must identify the session, but need not dominate every fact.

Worked answer
PreserveMay change
Full identityHeading size or wrapping
Useful decision factsGrouping and spacing
Readable actionPlacement and emphasis
Fit the hierarchy to real content.

Keep the full identifying name, reduce or rebalance its treatment, and regroup availability with the action. Test long and short names. Do not shorten two different sessions into an indistinguishable label merely to preserve one line.

Sources and further reading

Selected guidance and technical definitions were reviewed, not a complete usability literature or accessibility audit. The interfaces are original teaching examples. They do not establish measured improvements in task performance. These optional links are not runtime dependencies.