In menus/headers/etc it's usually easy to find them.
But in some places (especially texts) people sometimes really make them hard to notice.
💡 Tip #21 - Don’t use dots for swiping gallery images
❌ Dots are hard to hit. Check out Fitt’s law.
✅ Use controls that are easy to interact with.
Big rectangles with arrows, thumbnails, parts of prev/next pictures.
It should be easy to hit controls, that's it.
💡 Tip #22 - The smaller the font size is, the bigger the line-height multiplicator should be
If the font-size is big, it's already easy to read, so the line-height multiplicator can be small
If the font-size is small, you should increase line-height for better readability
💡 Tip #23 - Consider removing borders
Developers tend to put borders everywhere to visually separate blocks.
But having many borders doesn't look great. 🙄
You can use backgrounds or shadows to reduce visual clutter and make the UI feels lighter.
💡Tip #24 - Increase clickable area
When the clickable area is small it's hard for users to hit the element.
You can add an invisible area (usually made with paddings) for making it easier.
Also, check the Fitts law if you haven't already☝️
💡 Tip #25 - Use skeletons instead of loaders
Skeletons have two advantages
1. You show in advance what the content will look like 2. You can avoid expanding the content area. You can do the same with loader but it will look much worse.
💡 Tip #26 - Don't justify text
Justified text is not only difficult to read for dyslexic users but for non-dyslexic users as well.
This is because it creates large uneven spaces between letters and words.
💡 Tip #27 - Check your contrast
Low contrast is a very often mistake.
You can easily check your contrast using chrome developer tools, or any other tools that are available.
Web Content Accessibility Guidelines (WCAG) 2.1 describes contrast levels. AAA is the best.
💡Tip #28 - Your icons should be consistent
By consistency, I mean:
- Having the same style, e.g. flat icons vs 3D icons
- Same path width
- Filled / Outlined icons
- Multi-colored / Single-colored
This is not that easy to do, so it'd better use some consistent icon pack.
💡 Tip #29 - Help users to fill your forms
Validation is cool, but have you tried making it so simple that users fill the form on the first try?
You can help them
🔸Provide masks
🔸Pre-fill data if possible (e.g. current date)
🔸Provide hints in advance
🔸Autocomplete controls
💡 Tip #30 - Set reasonable width of inputs
The width of inputs can help users understand what type of content you're asking for.
You don't have to fill the whole available space 🙅♂️
Along with grouping related inputs inline, you can make the form look much better
💡 Tip #31 - Add overlay/gradient/shadow/whatever on your pictures in order to improve contrast for the text you put on them.
Without an overlay, the text might have poor contrast thus it'll be hard to read.
Overlay solves this 💪
💡 Tip #32 - Don't hide input labels
Placeholders don't replace labels. 🙅♂️
When the user entered something in an input, the placeholder disappears leaving the user without no clue what the field means.
An only exception is maybe a login form with only two inputs.
💡 Tip #33 - Try the horizontal menu if you don't have many links
When you use a vertical menu and you don't have many links you end up with a lot of free space.
Then you try to add more links to fill the space but this is artificial.
Instead, try the horizontal menu.
💡 Tip #34 - Don't make users click the confirm button when validating verification codes
Validation codes are usually not long and the chance of mistake is relatively small, so you can check them right away.
If the user made a mistake you can re-validate on change.
💡 Tip #35 - Consider both positive feedback as well as negative
Two cases:
1. User is wrong - you show him errors 2. User is right - you may show him that he is doing well
In some cases, like filling complex inputs/forms, it can add some assurance for users.
💡 Tip #36 - Group related elements together
If you have more than 5-7 items in a row, try to break them into logical groups.
It's not that easy to navigate through a lot of elements. We are usually comfortable with up to 5-7 elements in a group.
💡 Tip #37 - Don't forget that the data can be large
It's a VERY common issue when data overflows its container.
There is no single approach to this.
You can:
🔸Use dots (text-ellipsis)
🔸Use "Show more" expanders
🔸Hide some data under tooltips, icons
and so on.
💡 Tip #38 - Watch your shadows!
A common mistake is to take the box-shadow property, play with it a bit, and think that you got a nice shadow.
But usually, it looks bad.
A good solution is to find an existing collection of shadows and use them.
💡 Tip #39 - Don't put hints in placeholders
If you put the description of what users should type in the textarea, then after they start typing the hint disappears.
And they'll simply forget what they should type.
Solution: put hints near textareas, e.g. below them.
💡 Tip #40 - If the number of options is small, don't use dropdowns
1. Dropdowns require two clicks to select an option + sometimes require some scrolling
2. They may have poor UX on mobile
If you have 3-6 options, just display them right away.
💡 Tip #41 - Make it clear that you have something below the fold
❌ In the first picture, there is no hint that there is content below.
✅ In the second picture, it's clear. You don't even need arrows or pointers asking users to stroll down.
💡 Tip #42 - Don't use default file inputs
Just don't 😡
They look different everywhere, they have poor UX, they look ugly.
Use a custom one with:
✅ Proper validation
✅ Drag&Drop area
✅ Hints, if they are necessary
✅ Good looking UI
💡 Tip #43 - Don't show loaders right away
If the action takes less than ~0.1 - 1 sec don't show loaders.
The user attention won't switch in ~0.5 seconds, but the request might take less time.
🔷 the text on images is easy to read
🔷 it doesn't cover any important objects behind it (e.g. faces or products)
🔷 text contrast is good everywhere, not only on images
2/5. Navigation.
Don't hide navigation under hamburger icons on desktop devices.
I needed to make a pill component that should have had a 1px border.
But when on hover it should be doubled.
It wasn't that easy, and here is why.
If you simply make a 2px border on hover it will increase the height and width of the pill.
Since you don't know in advance what the width is, and probably the pill might be multiline, I don't think using fixed height/width is a good solution.
Instead, what I did is - I used shadows.
The first border is 1px shadow, and the second border (in the hover state) is 2px shadow.