Web Design

Web design is the creation of a web application's style and user interaction using CSS and JavaScript.

Why is web design important?

You wouldn’t use a web application that looked like the following screenshot, would you?

HTML with no CSS or JavaScript.

Creating web pages with their own style and interactivity so users can easily accomplish their tasks is a major part of building modern web applications.

Getting started if you have no "eye" for design

Design can feel like something "creative" people understand intuitively, but like all skills design is something that can be learned. Some people are faster learners in design just like some folks are quicker in picking up programming. But anyone can learn how to be a better designer by learning the basic principles and practicing them.

One of the best mental models for basic design is C.R.A.P., which helped me grasp why some designs look good while others do not. CRAP is an acronym for:

* Contrast: noticeable differences from one element to another
* Repetition: elements' consistency
* Alignment: order among all elements
* Proximity: placement between elements and how they are organized

These basic principles all you to start breaking down the problem into digestible pieces that you can work on rather than feeling like you "just don't have an eye for design".

Designing for various screen sizes

Separating the content from the rules for how to display the content allows devices to render the output differently based on factors such as screen size and device type. Displaying content differently based on varying screen attributes is often called responsive design. The responsiveness is accomplished by implementing media queries in the CSS.

For example, a mobile device does not have as much space to display a navigation bar on the side of a page so it is often pushed down below the main content. The Bootstrap Blog example shows that navigation bar relocation scenario when you resize the browser width.

Fantastic design resources

There are way too many design resources on the web, so I picked out this short list as my absolute favorites that help developers become (hopefully much) better with design.

  • Clean up your mess: A Guide to Visual Design for Everyone walks through the basic principles for clean and effective design. You can make a website go from terrible to well-designed often by following a few principles on spacing, alignment, contrast and repetition of page elements.

  • Resilient web design is an incredible online book that teaches how to create websites that are accessible to every reader and look great while doing it.

  • Design 101 for Developers gives away the "secrets" to good design that designers follow but that can be similarly accessible to developers who understand what they want their design to accomplish.

  • Laws of UX provides a beautiful overview of design principles for building user experiences. Highly recommended even if just to see how the information is presented.

  • Building your color palette explains why color pickers are not useful for most user interfaces and how you should actually go about selecting your color palette for a real world application.

  • How I Work with Color is a fantastic article from a professional designer on how he thinks about color and uses it for certain effects in his designs.

  • Building dark mode on Stack Overflow explains the thought process and work that the team at Stack Overflow had to do with colors, styling and the code implementation so they could offer a dark mode design to their users.

  • A short history of body copy sizes on the Web provides a useful examination of how originally the web's typography mirrored what was in traditional print. Eventually, the designs shifted upwards in font size because screen resolutions changed. However, even in 2020 there is no consensus for what font size to use in various situations so designers simply have to do what they've always done and try their sites on various devices and screen sizes.

  • Web bloat is the story of traveling and using the web with low bandwidth, high latency internet connections that often drop packets. The author explains how many websites are barely usable and that if you truly want your site to work well you need to ensure it works for connections much worse than the fiber connection you may have at the home or office.

  • Fundamental design principles for non-designers summarizes numerous design tips into four principles that those without prior design knowledge can follow. The author gives a bunch of great examples and further details for the four principles, which are contrast, consistency, Occam's Razor and space.

  • Gallery of web design history is a collection of websites from between 1991 and 2006 that show the evolution of what the web looked like before the modern CSS era. This is a great resource to see how websites evolved, such as Microsoft in 1996 and YouTube in 2005.

  • The Average Web Page (Data from Analyzing 8 Million Websites) shows the most frequently used HTML elements, metadata, text content and other statistics from a large scale analysis of the web.

  • How to design delightful dark themes explains some subtle tactics to make dark themes work well for users.

  • Setting height and width on images is important again describes how browser layout and resizing settings could affect your images so manually setting the size is more useful than it has been in the past few years.

  • Kuler is a complementary color picker by Adobe that helps choose colors for your designs.

  • If you want to learn more about how browsers work behind the scenes to render a webpage's design, here is a blog post series on building a browser engine that will show you how to build a simple rendering engine.

  • How to Use C.R.A.P. Design Principles for Better UX has a good summary of what contrast, repetition, alignment and proximity means for designing user interfaces.

  • Defining Colors in CSS presents how to define color in your Cascading Style Sheets (CSS) and breaks down the differences between specifying predefined color values, hexadecimal values, red-green-blue (RGB) and Hue-Saturation-Lightness (HSL).

  • Easy to Remember Color Guide for Non-Designers gives guidance to less aesthetically-inclined folks like myself who need rules for picking groups of colors to use together in your designs.

  • Styling HTML checkboxes is hard - here's why explains why form elements like checkboxes are more difficult to style than other HTML elements, The post shows how to perform the styling in various ways such as CSS-only and then with JavaScript plus CSS.

  • 13 Terrible Web Trends From the 90s, and How to Recreate Them revisits a simpler and perhaps more... ugly time on the web where designs were a bit out of control. Learn more about the history of web design and styling techniques with this hilarious but useful blog post.

Checklists and design guidelines

  • Frontend Guidelines is an amazing write up of good practices for HTML, CSS and JS.

  • Learn Design Principles is a well thought out clear explanation for how to think about design according to specific rules such as axis, symmetry, hierarchy and rhythm.

  • Front-end performance checklist is a comprehensive checklist useful when you are implementing a web application's client side code.

  • Front-end Developer Handbook 2018 provides a high-level overview of many of the tools developers use in the browser and some other useful information on average salaries and where to search for front-end development jobs.

  • Who Can Use shows how color contrast can affect different people with visual impairments and can help you improve your site's accessibility to these groups.

Do you want to learn about CSS, JavaScript or static files next?

My app runs but looks awful. How do I style the user interface?

How should I host and serve static content files?

How do I use JavaScript with my Python web application?

Matt Makai 2012-2022