How and why to create semantic CSS class names

Description

We already talked about the usefulness of using descriptive class names, but in this video we take it a little further and discuss one approach to making our class names even more meaningful.

Transcript

Our first challenge is figuring out what our classes should be called. So we're going to start up here with our slide section, we already have a class for this, that's good, but now again we're going to add a class to our H2, and what should we call that? Well it's a title so we could use the class name title, but that's a bit generic. We could still target it specifically by using the parents class, slide, and combining the slide class with the title class of the H2 tag, but the problem there is that because title is so generic it's quite possible that that generic class name could be used again in some other context.

And possibly this time some CSS would get added that would apply directly to the title class, and if that happened we'd start to see those styles showing up in anything that had that title class, even though we didn't mean to target it. So as long as this H2 tag is part of the slide section it makes sense to prefix it with the name of the section, so slide. So how about slide dash title.

Okay, great. So now let's move on to the next section. So this section has a lot in common with the next two sections.

If we look at our mockup we can see that they're all squares that span the entire width of the document. We can see that they have consistent padding all along the edges and that the titles and that the main titles use the same styling. Now if we were going to come up with a name for these sections that was different than just plain section what would it be? Well whenever I run into issues where I'm not sure exactly what to call something but it seems like a pattern of some kind, especially a pattern I've seen on other webpages, ...

When you have an active membership, you will be able to see your progress here.

Skill focus: Theming, Site BuildingSkill level: Beginner - Advanced

The world of front end development has come a long way in the last several years with the addition of responsive design, CSS preprocessors like SASS, and the ever widening range of devices and environments we use to navigate the web. At the same time, many of us are able to generate fully functioning web sites using CMS's like Drupal without ever touching HTML or CSS - the basic building blocks of the web. Because of that, many of us end up floundering when we need to make even minor adjustments to the markup or presentation of a project, since we don't have the experience needed to break down what our CMS is actually doing for us.

If you've found yourself either at a loss to make adjustments to HTML, CSS or JavaScript of a project, or are looking to upgrade outdated front-end skills, this collection is for you.

This collection walks through the process of converting a web page mockup into a fully functioning web page using CSS, HTML and JavaScript, as well as some of the most powerful and commonly used tools and techniques that layer on top of these three technologies.

Here are some of the key points we'll be covering:

How to use basic HTML tags and CSS properties

How to create semantic HTML

How to write more meaningful and sustainable CSS with SASS and SMACSS

How to create a responsive design with media queries

How to work with responsive images

How to improve collaboration and future-proof projects with package managers like Bower and Bundler

How to address accessibility concerns and use tools to audit the accessibility of your site

How to measure and improve front-end performance

How to use automation tools like Grunt

Who this collection is for

If you are seeking to learn modern front end development practices and tools in order to increase your value in the workplace or become more independent with your own projects, this collection was created with you in mind. Front end development is a highly sought-after skill set and is highly portable since it can be coupled with virtually any kind of back-end. Tools like Jekyll allow you to build content-rich sites without the need for a specific backend, and the focus in Drupal 8 on a 'headless Drupal' is allowing developers to leverage Drupal as a back end while still choosing the right tools to generate the HTML and CSS of the front end.

Prerequisites

We don't assume anything about your previous experience with HTML, CSS or JavaScript. We start from the very basics, but that doesn't stop us from exploring more advanced topics that are the staples for any modern front end developer. You should be able to come to the table with only the knowledge you've gained as a user of the web and still understand the steps we take and the rationale behind them.

It looks like there might be an issue playing videos in this browser. We're working on better cross-brower experience, but in the meantime please try the latest Chrome or Firefox browsers. Or, you may be able to watch the video directly without progress tracking or transcript: