
Wix vs WordPress for a Small Business Site (2026)
Wix or WordPress for a small business? Three routes compared with prices read from Wix, WordPress.com and Hostinger on 26 Oct 2026, upkeep and a pick by job.
Webflow
Most Client-First pages are either a cloneable ad or a long video course. This guide is the short version. We read Finsweet's own Client-First docs on 1 November 2026 and turned the naming rules into one cheat sheet, a wrong and right class list and a short audit you can run on any Webflow project.
is- prefix to a base class.text-size-large, not large-size-text, because the order makes class search and folders work.section_ name. It acts as a sitemap in the Navigator, so a client can find the right block without help.Group / Identifier and interactions use Element [Action + State].All rules below come from Finsweet's Client-First documentation at finsweet.com/client-first/docs, read on 1 November 2026.
Finsweet's classes strategy page names the types. The easy way to tell them apart is the look of the name.
| Class type | What the name looks like | What it is for | Example from the docs |
|---|---|---|---|
| Utility class | Dashes only, no underscore | A set of CSS properties you can apply anywhere | text-size-large, margin-large |
| Custom class | Has an underscore | One component, page, group of elements or single element | testimonial-slider_headshot |
| Combo class | Base class plus is- | A variant of the base class | button is-brand, section_header is-home |
"Global" does not mean "utility". The docs say any class meant to manage styles across the whole project is global, and a custom class can be too. Their example is faq_item, used for every FAQ item on the site.
A combo class does not work alone. The docs say is-brand only works as an addition to the base button class. If you see is- you know there is a base class next to it.
Finsweet's naming goal is no abbreviations, no shorthand and no confusion. A class name should say what the class does and where it sits in the site.
The pattern is keywords that move from general to specific. The docs break text-size-large into three parts:
text says it is about a text element.size says it changes font size.large says which size.For custom classes, the docs use team-list_headshot-wrapper. The part before the underscore is the group, team-list. Then comes the element, headshot, then what it is, wrapper. Add more elements inside and the list stays tidy:
team-list_headshot-wrapperteam-list_headshot-imageteam-list_headshot-texture-layerteam-list_headshot-backgroundThese are our own illustrations of the rules above, using a made-up pricing section. They are not from Finsweet's docs, and the right column simply applies the rules.
| Wrong | Why it fails | Right |
|---|---|---|
big-text | Not general to specific, and "big" is not a defined size | text-size-large |
pricing-btn-2 | Abbreviation and a number tell the next person nothing | pricing_button with is-featured if it is a variant |
div-block-47 | A numbered placeholder, no purpose | pricing_card-wrapper |
PricingCardTitle | Mixed case, no folder structure | pricing_card-title |
green-box-shadow-thing | Describes looks, not job | pricing_card-highlight |
Finsweet calls this a universal rule: do not deep stack. Deep stacking means many classes stacked on one element. The docs list their reasons:
| Reason in the docs | What it means in practice |
|---|---|
| You cannot reorder stacked classes in the Styles panel | To change an early class you must remove the ones after it |
| Slower workflow | Small edits take many steps |
| Steeper learning curve | The next person has to understand what every class does |
| CSS savings are small | Global classes can shrink the CSS file, but Finsweet does not think the saving beats the benefit of custom classes |
The docs say this is a Webflow-specific view. In hand-written CSS, stacked classes can be faster. In Webflow, they say, a custom class is quicker to make and easier to manage.
Their example is a background texture. Instead of stacking background-absolute, fit-size and opacity-low, create one custom class named services-item_background-texture. The name says what it is, and you can edit it freely.
Utility classes still have a place, but the docs say they should not build the whole project. Use one when it makes the job simpler. Use a custom class when it does not.
Finsweet's core structure page describes the default layers of a page.
page-wrappermain-wrappersection_[section-identifier]container-largeIn the default structure, the docs say global padding and section padding sit directly on the section through variables, so no extra classes or layers are needed. When a project needs more control, the alternative structure adds a layer inside the section with padding-global and padding-section-[size].
What each layer does, per the docs:
| Layer | Job |
|---|---|
page-wrapper | Wraps every element on the page. Lets you copy a whole page, and keeps styles off the body tag |
main-wrapper | Uses the main HTML tag. Nav and footer stay outside it |
section_[section-identifier] | Organises the Navigator so you can find a section fast |
container-[size] | Centres content and sets a max width. Three sizes ship by default: small, medium and large |
The docs suggest naming sections for what is on the page, such as section_header, section_about, section_testimonials and section_contact. The list works as a sitemap of the page, which helps when you onboard a client.
Finsweet's spacing strategy and utility class systems pages use one fixed set of size names for padding, margin and gap. A size name means the same distance whichever class you use it through.
| Size name | Value in rem |
|---|---|
| xxtiny | 0.25 |
| xtiny | 0.5 |
| tiny | 0.75 |
| xxsmall | 1 |
| xsmall | 1.25 |
| small | 1.5 |
| medium | 2 |
| large | 3 |
| xlarge | 4 |
| xxlarge | 5 |
| huge | 6 |
| xhuge | 8 |
| xxhuge | 12 |
That is 13 sizes, as shown on the docs' utility class page on 1 November 2026. Variables control the values, so a project can change them.
The variables page explains why. A value is defined once and reused, so one change updates the whole site. Client-First splits variables into five collections: Base, Theme, Typography, Layout and Sizes. It also separates primitive tokens, named by value such as red-100, from semantic tokens, named by purpose such as Background > primary. The docs say to style with semantic tokens and avoid linking primitives straight to classes without a strong reason.
The folders page explains that the underscore creates a virtual folder in the Designer, with Finsweet's extension doing the grouping. One underscore equals one folder. Their example is nav_primary_logo-wrapper: a nav_ folder, a primary_ folder inside it, then the element logo-wrapper. Any class without an underscore goes into the Utility folder.
The docs say to nest with purpose. A small site may need one folder level only.
The component naming page uses Group Name / Component Identifier, such as Card / Blog Post or Global / Nav. The slash is visual only. Webflow does not create a group from it, so you create the group in the Components panel and move the component in. A component named Card / Blog Post that sits outside the Card group, the docs say, defeats the purpose.
The interactions naming page uses Element [Action + State], for example Nav Menu [Open] or Sort Button Arrow [Rotate Open]. Keep names short, capitalise each word and put the action and state in square brackets. The docs say to add a trigger such as Click or Hover with care, because one interaction can run with different triggers on desktop and mobile.
Use this list on any Webflow project.
div-block or a trailing number. Each one is a rename job.section_ name in the Navigator.If you find a mess, rename page by page on a staging copy and look before you publish.
Keep your own system if these are true:
A naming system does not make a site fast or fix a bad layout. It makes a site easy to edit later. If you are weighing platforms, our Webflow vs Framer comparison covers the editing side.
We build on Webflow, and clear class names matter most on the day someone else has to edit the site. If your project is full of names like div-block-47, we can audit the structure, agree a naming plan and rename page by page on staging before anything goes live. On a new build, we set up naming and variables from the start.See Webflow development and Webflow maintenance.
Figma to Webflow shows how Figma layer names become classes. Webflow CMS, Webflow forms and Webflow pricing by plan cover other parts of a build. Red flags when hiring a Webflow agency and website maintenance cost cover handover and upkeep.
Client-First is a documented system of naming and structure rules for Webflow projects, published by Finsweet. Its docs describe it as principles created specifically for Webflow. It covers classes, page structure, spacing, variables, folders, components and interactions.
The underscore creates a virtual folder in the Designer. Utility classes have no underscore and go into the Utility folder.
It marks a combo class, a variant of a base class. In the docs, button is-brand means the brand version of the button. A combo class only works with the base class before it.
It is putting many classes on one element. Finsweet says it makes styles hard to reorder in the Styles panel, slows edits and raises the learning curve. Its fix is usually one clearly named custom class.
No. The docs say utility classes are optional and should not be used to build the whole project. Custom classes with margin or padding are acceptable when they are faster.
Yes, as a clean-up and not a rebuild. Rename by page on a staging copy, check the layout, then publish. Renaming a class to a name that is already in use can change how elements look, so check the staging copy.
Use section_ followed by what the section is, such as section_testimonials. The docs say this gives the Navigator a sitemap feel that helps both developers and clients.

Wix or WordPress for a small business? Three routes compared with prices read from Wix, WordPress.com and Hostinger on 26 Oct 2026, upkeep and a pick by job.

What website hosting costs in 2026: Hostinger and Bluehost shared plans, the renewal jump, free static hosting on Cloudflare, and when hosting is bundled.

How Webflow forms work, the limits on each plan, where submissions go, and a fix list for forms that stop sending, from Webflow's help centre, 26 Oct 2026.