While not everyone is a fan of this, I think it's the best article on web design i've read in a long time, and easily the best thing i've read on HN this year. Kudos.
Not all the advice is going to work in all situations, but they do serve as a great collection of simple but effective tips for improving the design. I've spent a long time tweaking things about in this realm, so these tips are welcome even if i already use many of them. Seeing them together also helps identify new techniques or combinations you can use.
I don't agree with tertiary buttons with no border and no underline, for example. I think that poorly communicates what's clickable/tappable and whats not. But then again, that's an easy tweak.
I have some gripes about using text colors close to the background color (http://contrastrebellion.com), but at least at the same time they're advocating not using grey.
I agree, this is the best design article I've read in maybe a decade.
UI Developer for over 20 years and fine arts and design major in college. From my experience I can't agree more with all of these recommendations.
Fewer font sizes and more font weights in general is always good.
Removing borders is extremely powerful for a lot of great reasons. When trying to maximize data density and readability, when trying to reduce clutter/visual noise and gain whitespace. The use cases for borders can often be resolved in other ways. However this puts more demand on the quality of the typography and layout hence the other techniques mentioned come into play those are design challenges worth addressing.
More on borders: This of course is a tool that can be mis-used but I find it is one of the best tools I have. The emphasis should be on data / information not on arbitrary borders. You can say the same thing many different ways visually. This is under-appreciated. You need not have font size, color, style all colluding to say the same thing, that you can accomplish with only one of these. When dealing with any series of items the human eye will clearly see periodic patterns and implied lines / alignments very quickly thus I find that often borders are unnecessary and even impede a working design.
A key observation is that with every border you have two white space areas to design with and a foreground element competing for attention with your actual information. Every border you eliminate gains you twice as much whitespace as you had and one fewer foreground element. 3 design components to 1. As with lines of unnecessary code, when you can delete elements in a design you are winning.
When it's about UI design, you know the advice is good when you see a lot of comments panning it on HN ;)
I just have two nitpicks: different font sizes are not a problem as long as the hierarchy is clear (i.e. sizes not seemingly chosen at random) and the advice on text contrast is accurate (unless you're using a display at very low brightness, pitch black text is jarring on light backgrounds), but the contrast on the example is too low. For body text, the ideal choice is closer to #222 or #333. Here, the advice on colors also applies: you can give the black a slight blue hue if the rest of the interface has blue accents.
The last example (https://cdn-images-1.medium.com/max/1600/1*cuYcwjOO26sKHImHa...) also moves me to give an unsolicited tip: pay attention to the "color" of the typeface you're using. That example has body text in Avenir (EDIT: looking again, it must be Proxima Nova); it's a thin geometric type, so the gray of the body text should be darker, or a bolder weight should be chosen. As it is, it's not very readable, which is okay for certain sentences but not appropriate for a warning message. Since system and webfonts are often constrained to regular and bold (and rarely, a bolder and a lighter weight) it's easier to control this by tweaking the gray.
An alternative is to give a higher priority to "you will lose all of your saved data".
#2.1: Reducing the opacity of your text makes it harder to read.
#4: Borders help logically separate areas of an interface. Throwing in more white-space is wasteful.
#4.3: Gratuitous white-space is wasteful, especially if you have limited screen real-estate (i.e., mobile).
#7 is a major pet-peeve of mine which I cannot agree with. If it's a button, make it look like a button. Nothing is more confusing than a button that just looks like some text label.
I have to disagree. In an absolute sense you are correct, however you're missing the relative benefit of each point.
#2.1: Yes, this would be an issue if overused, especially in paragraph lengths of text. However, inconsistent font sizes are worse.
#4: Why are you worried about white-space? If you have space, you can use it. If you run out, then you have to start rationing and using other visual tools. Borders have their place, but white-space should be preferred as the most neutral and inobtrusive strategy.
#4.3: So create a responsive layout for mobile that uses more borders where necessary.
#7: This is a major (and valid) criticism of flat UX, but slightly adjacent to the point in the article. The article says you don't need a background colour for every button, which is good advice.
>#2.1: Reducing the opacity of your text makes it harder to read.
That's the point, to take away focus from something lower in the hierarchy.
>#4: Borders help logically separate areas of an interface. Throwing in more white-space is wasteful.
You're defining waste from a screen-space point of view, not a usability point of view. Who cares if the screen's pixels are at maximum utility, I want my user at maximum utility!
>#4.3: Gratuitous white-space is wasteful, especially if you have limited screen real-estate (i.e., mobile).
See above
>#7 is a major pet-peeve of mine which I cannot agree with. If it's a button, make it look like a button. Nothing is more confusing than a button that just looks like some text label.
People tend to see it as a void that could be put to better use. We shouldn’t think of it as a void, though. We should think of it as a separator. It’s gestalt theory: objects that are close to each other appear connected. When you remove too much white space, groups of elements become less distinct, and cognitive load increases.
About #7, the article is not advocating making things not look like a button¹, it's advocating making secondary buttons lighter.
1 - In fact, the buttons there don't look like buttons. But that's because it uses a normal design, and nobody creates buttons that look like buttons anymore. Could we please standardize the "button look" with a small, fuzzy outset?
TBH I am starting to hate the subtle box-shadow on card components, including the example they provide as "better" [1]. It's getting to a point where it's hard to see the edges, especially if I have f.lux on or need to clean my glasses.
A regular border is easier to spot and more definite. It's not skeuomorphic but it's more functional.
Another concern is performance issues with box-shadow. A product I worked on displayed hundreds of twitter-like messages, each with its own box-shadow. Scrolling on less powerful devices would noticeably thrash. Disabling box-shadow improved it significantly. This was back in ~2012, so perhaps devices have become more powerful since then for this issue to be negligible.
Is there a third alternative to separating card components? I don't really like using borders and box-shadow while aesthetically pleasing isn't as accessible or performative. I guess one could make liberal use of white space but then the component isn't really a card anymore.
The examples are mostly low contrast: a wasteland of white and preferably off-white empty space, also white and preferably off-white and preferably borderless boxes, lightly colored and mostly grey text inside them. When did combining dark text on a light background and light text on a dark background become nontrivial advice?
More readable, yes. But not as pretty. One can obviously go too pretty and lose all readability, but the socialization of the web has to some degree required we embrace more diversity in design.
I still have trouble not underlining clickable links, for example. But sometimes in a design it's just as obviously clickable without it, and less cluttered too.
I have the same issue. Not being a designer I can spend hours tweaking CSS color values, only to come back the next day and think it looks awful again. Two things have helped me: 1) using https://coolors.co/app and just trusting it, 2) creating SASS functions that derive secondary colors from a primary one. I currently don't have it at hand, but it boils down to making a series of lighter and darker versions of a given color, where, very importantly, the lighter ones are also less saturated than the shadows.
I'm in the same boat. I tend to use adobe color [1] to pick colors. You can give it a color, and it will give you complementary or contrasting colors. It is great for making background gradients or finding a color that "goes" with background for those of us that can't really tell.
Please don't use "lighter" and "darker" colors to signal importance. The contrast on these is invariably too low for most displays, and people miss that cue completely. What's lighter for you has the exact same color/intensity for most users. It's the same with "material design" where some genius decided that buttons no longer need to look like buttons, and links no longer need to look like links. Sure they don't. And users sure don't need to know what can be done with the interface. But what's the point? /rant
I like most of these, especially the different ways of making a hierarchy stand out. But I would say that if you're going to use gray text, pick out the exact shade using a really crappy LCD screen, maybe on an old phone, to make sure it's legible. Sites that use very light gray make me think the designer picked the color on a 5k iMac with the lights off.
There's also automated WCAG tools that check for "contrast errors". For example you should ensure you provide background colors as a fallback if the user has background images disabled or the image has not downloaded yet
I don't get why people are picking on this statement when most of the "good" examples given have plenty of contrast and he then goes into many techniques to maintain good contrast.
Ironically the contrast rebellion site uses very similar techniques to create visual hierarchy, see slide 2 in particular.
I would caution anyone from using these tips if you are building some kind of B2B Enterprise app where the focus is on getting as much information on screen as possible and minimizing the possibility of making errors.
Borders and clear destructive actions are a must. Needless spacing is wasted space.
On the contrary, well thought of white space guide the eye. It doesn't waste space. It is a part of the design in itself and is usually the hardest component to get right.
My biggest pet hate is borders inside borders and text inside tight borders. This dark pattern is used on mandatory health warnings on cigarette packaging in my country (and many others) I don't think this was an accident...
In a more applicable example I removed most of the borders and heavy rules from a information dense page of a popular B2B site I worked on and the readability / scan-ability of the page increased dramatically and it had a very positive reception from out clients.
I do think one thing is missing from this guide and that is point lines or point rules. This is something I think I learned reading one or Edward Tuftes books. In print horizontal rules of 0.5 - 1 points (see: https://practicaltypography.com/rules-and-borders.html ), however on the web I find dark grey 1px bottom borders to have a similar effect.
The contrast examples in this article are a continuation in a poor trend of monkey see monkey do design that seems to come out of a reliance and reuse of original base bootstrap styles.
Designers seem to love to decide that certain text doesn't look right, is unimportant compared to that stock image they spent 3 hours selecting.
A great tip for cheating on design regarding typography is to completely drop "grey" from options.
What will happen is that during any manner of stress testing, usability or accessibility testing someone will immediately point out the lack of legibility.
More importantly when your site is audited for accessibility issues, you will fail on contrast every time.
I realize this was written as tips to help non designers but most "designers" should be staying away from making decisions about font color that lean towards "grey".
The cost and effort in development of most written copy far exceeds the value of this design trend that leads to low legibility, low impact type.
Web designers need to get back to the basics of typography. The web as a whole and "start up" style sites particularly suffer greatly from design choices by designers who clearly never actually read what they layout.
> More importantly when your site is audited for accessibility issues, you will fail on contrast every time.
I see this problem in the footer almost universally. High contrast footers have somehow become rare. I understand the desire to de-emphasize that section versus the primary content of a page, however if the footer is going to actually do its job I think it makes sense to have it set to a higher contrast design than not.
"4. Use fewer borders / 3. Add extra spacing". I'm not a big fan of this current trend. It seems that everyone is doing that and I found difficult to find the logical separation between elements.
Generally very good but mixing button/non-button style is a dark pattern that should be avoided.
If you have 3 alternative actions and one looks like a button, why don’t the other two? It is actually very easy to miss at least one option that way, or otherwise make a mistake.
a "dark pattern" is a UI tactic that is very purposefully crafted to deceive or manipulate a user. confusing button styles as you describe them are just "bad practice," they aren't dark patterns until designers use them with the specific intent of confusing the user
The one technical question I have is about using a lighter font to de-emphasise things: the example de-emphasises "*Prices may vary ..." underneath the bold, emphasised "$17 per person". Isn't that a bit of a "dark pattern"?
Overall I like this advice. However some of their examples do not really push the point. In the first example they make the text both bigger _and_ bolder and smaller _and lighter. This is good, however it is contrary to what they say.
In the shadows example, I prefer the bordered version. Shadows do not always look good and borders are "safer" to use.
[+] [-] meesterdude|8 years ago|reply
Not all the advice is going to work in all situations, but they do serve as a great collection of simple but effective tips for improving the design. I've spent a long time tweaking things about in this realm, so these tips are welcome even if i already use many of them. Seeing them together also helps identify new techniques or combinations you can use.
I don't agree with tertiary buttons with no border and no underline, for example. I think that poorly communicates what's clickable/tappable and whats not. But then again, that's an easy tweak.
[+] [-] busterarm|8 years ago|reply
I agree, this is the best design article I've read in maybe a decade.
[+] [-] lootsauce|8 years ago|reply
Fewer font sizes and more font weights in general is always good.
Removing borders is extremely powerful for a lot of great reasons. When trying to maximize data density and readability, when trying to reduce clutter/visual noise and gain whitespace. The use cases for borders can often be resolved in other ways. However this puts more demand on the quality of the typography and layout hence the other techniques mentioned come into play those are design challenges worth addressing.
More on borders: This of course is a tool that can be mis-used but I find it is one of the best tools I have. The emphasis should be on data / information not on arbitrary borders. You can say the same thing many different ways visually. This is under-appreciated. You need not have font size, color, style all colluding to say the same thing, that you can accomplish with only one of these. When dealing with any series of items the human eye will clearly see periodic patterns and implied lines / alignments very quickly thus I find that often borders are unnecessary and even impede a working design.
A key observation is that with every border you have two white space areas to design with and a foreground element competing for attention with your actual information. Every border you eliminate gains you twice as much whitespace as you had and one fewer foreground element. 3 design components to 1. As with lines of unnecessary code, when you can delete elements in a design you are winning.
[+] [-] dictum|8 years ago|reply
I just have two nitpicks: different font sizes are not a problem as long as the hierarchy is clear (i.e. sizes not seemingly chosen at random) and the advice on text contrast is accurate (unless you're using a display at very low brightness, pitch black text is jarring on light backgrounds), but the contrast on the example is too low. For body text, the ideal choice is closer to #222 or #333. Here, the advice on colors also applies: you can give the black a slight blue hue if the rest of the interface has blue accents.
The last example (https://cdn-images-1.medium.com/max/1600/1*cuYcwjOO26sKHImHa...) also moves me to give an unsolicited tip: pay attention to the "color" of the typeface you're using. That example has body text in Avenir (EDIT: looking again, it must be Proxima Nova); it's a thin geometric type, so the gray of the body text should be darker, or a bolder weight should be chosen. As it is, it's not very readable, which is okay for certain sentences but not appropriate for a warning message. Since system and webfonts are often constrained to regular and bold (and rarely, a bolder and a lighter weight) it's easier to control this by tweaking the gray.
An alternative is to give a higher priority to "you will lose all of your saved data".
[+] [-] cpburns2009|8 years ago|reply
#2.1: Reducing the opacity of your text makes it harder to read.
#4: Borders help logically separate areas of an interface. Throwing in more white-space is wasteful.
#4.3: Gratuitous white-space is wasteful, especially if you have limited screen real-estate (i.e., mobile).
#7 is a major pet-peeve of mine which I cannot agree with. If it's a button, make it look like a button. Nothing is more confusing than a button that just looks like some text label.
[+] [-] sameji|8 years ago|reply
#2.1: Yes, this would be an issue if overused, especially in paragraph lengths of text. However, inconsistent font sizes are worse.
#4: Why are you worried about white-space? If you have space, you can use it. If you run out, then you have to start rationing and using other visual tools. Borders have their place, but white-space should be preferred as the most neutral and inobtrusive strategy.
#4.3: So create a responsive layout for mobile that uses more borders where necessary.
#7: This is a major (and valid) criticism of flat UX, but slightly adjacent to the point in the article. The article says you don't need a background colour for every button, which is good advice.
[+] [-] hammock|8 years ago|reply
That's the point, to take away focus from something lower in the hierarchy.
>#4: Borders help logically separate areas of an interface. Throwing in more white-space is wasteful.
You're defining waste from a screen-space point of view, not a usability point of view. Who cares if the screen's pixels are at maximum utility, I want my user at maximum utility!
>#4.3: Gratuitous white-space is wasteful, especially if you have limited screen real-estate (i.e., mobile).
See above
>#7 is a major pet-peeve of mine which I cannot agree with. If it's a button, make it look like a button. Nothing is more confusing than a button that just looks like some text label.
Again, hierarchy.
[+] [-] JoshMnem|8 years ago|reply
[+] [-] dorkwood|8 years ago|reply
People tend to see it as a void that could be put to better use. We shouldn’t think of it as a void, though. We should think of it as a separator. It’s gestalt theory: objects that are close to each other appear connected. When you remove too much white space, groups of elements become less distinct, and cognitive load increases.
[+] [-] marcosdumay|8 years ago|reply
1 - In fact, the buttons there don't look like buttons. But that's because it uses a normal design, and nobody creates buttons that look like buttons anymore. Could we please standardize the "button look" with a small, fuzzy outset?
[+] [-] fenwick67|8 years ago|reply
A regular border is easier to spot and more definite. It's not skeuomorphic but it's more functional.
[1] https://cdn-images-1.medium.com/max/800/1*qH-2RAS3rbnql-vpP8...
[+] [-] kaiby|8 years ago|reply
[+] [-] Canadauni|8 years ago|reply
[+] [-] HelloNurse|8 years ago|reply
When web pages had a proper structure and color scheme (compare www.gnu.org now and in 2004: http://web.archive.org/web/20040113091408/https://www.gnu.or... ) they were more readable.
[+] [-] meesterdude|8 years ago|reply
I still have trouble not underlining clickable links, for example. But sometimes in a design it's just as obviously clickable without it, and less cluttered too.
[+] [-] hawktheslayer|8 years ago|reply
https://dribbble.com/colors/eee966
[+] [-] cdpolyme|8 years ago|reply
[+] [-] ficklepickle|8 years ago|reply
[1] https://color.adobe.com/create/color-wheel/
[+] [-] jakubp|8 years ago|reply
[+] [-] sp332|8 years ago|reply
Also, make your buttons look like buttons.
[+] [-] joshribakoff|8 years ago|reply
[+] [-] oldcynic|8 years ago|reply
Most of the time I want to see more playlists, or email subjects, in preference to delighting in your use of whitespace. Information density matters.
Buttons should look like buttons. Always.
[+] [-] imron|8 years ago|reply
Please no. Light grey text on not very dark grey background? Can this design trend just die?
See: http://contrastrebellion.com/
[+] [-] JaggedNZ|8 years ago|reply
Ironically the contrast rebellion site uses very similar techniques to create visual hierarchy, see slide 2 in particular.
[+] [-] matte_black|8 years ago|reply
Borders and clear destructive actions are a must. Needless spacing is wasted space.
[+] [-] Raphmedia|8 years ago|reply
[+] [-] JaggedNZ|8 years ago|reply
In a more applicable example I removed most of the borders and heavy rules from a information dense page of a popular B2B site I worked on and the readability / scan-ability of the page increased dramatically and it had a very positive reception from out clients.
I do think one thing is missing from this guide and that is point lines or point rules. This is something I think I learned reading one or Edward Tuftes books. In print horizontal rules of 0.5 - 1 points (see: https://practicaltypography.com/rules-and-borders.html ), however on the web I find dark grey 1px bottom borders to have a similar effect.
[+] [-] theartfuldodger|8 years ago|reply
Designers seem to love to decide that certain text doesn't look right, is unimportant compared to that stock image they spent 3 hours selecting.
A great tip for cheating on design regarding typography is to completely drop "grey" from options.
What will happen is that during any manner of stress testing, usability or accessibility testing someone will immediately point out the lack of legibility.
More importantly when your site is audited for accessibility issues, you will fail on contrast every time.
I realize this was written as tips to help non designers but most "designers" should be staying away from making decisions about font color that lean towards "grey".
The cost and effort in development of most written copy far exceeds the value of this design trend that leads to low legibility, low impact type.
Web designers need to get back to the basics of typography. The web as a whole and "start up" style sites particularly suffer greatly from design choices by designers who clearly never actually read what they layout.
[+] [-] adventured|8 years ago|reply
I see this problem in the footer almost universally. High contrast footers have somehow become rare. I understand the desire to de-emphasize that section versus the primary content of a page, however if the footer is going to actually do its job I think it makes sense to have it set to a higher contrast design than not.
[+] [-] acobster|8 years ago|reply
[+] [-] silveira|8 years ago|reply
[+] [-] makecheck|8 years ago|reply
If you have 3 alternative actions and one looks like a button, why don’t the other two? It is actually very easy to miss at least one option that way, or otherwise make a mistake.
[+] [-] che_shirecat|8 years ago|reply
[+] [-] red_admiral|8 years ago|reply
https://codepen.io/tyrellrummage/full/ZJPXgy/
The one technical question I have is about using a lighter font to de-emphasise things: the example de-emphasises "*Prices may vary ..." underneath the bold, emphasised "$17 per person". Isn't that a bit of a "dark pattern"?
[+] [-] unknown|8 years ago|reply
[deleted]
[+] [-] sharp11|8 years ago|reply
[+] [-] yoz-y|8 years ago|reply
In the shadows example, I prefer the bordered version. Shadows do not always look good and borders are "safer" to use.