7. CSS Deep Dive

October 21, 2018


This is it. You made it thus far. Your website is still ugly. You know so much by now, but your website looks like garbage. When is the COOL part of web development?

This is it. It’s right now.

Do not Repeat Yourself


Firstly let’s highlight important principles to save tons of headache in the future.

First one is the D.R.Y. principle, the Do not Repeat Yourself principle. It is the most important one in any code anywhere. Period.

What does it mean? It means that the code you write for a specific thing, should be written only once. Let’s take for example the inline styles we did previously. Remember how tedious it would be to make all of the edits just for one simple change? Noone does it like that, neither should you. That’s why we learned about CSS Classes, write their properties once in the .css file and then apply them anywhere you need to, so that when something needs to be changed, you do it only in one place, the .css file.

You can’t even imagine the amount of headaches caused by developers not taking this principle into account all around the world daily, get it right from the start. Don’t repeat yourself. It’s much better to learn how to do this right from the start, even if it takes longer. Don’t be that “ill just copy paste everything everywhere, going to optimize it some time later” person.

Cascading


Using CSS you have to always remember about the hierarchy:

  1. important
  2. inline
  3. id
  4. class
  5. element

This is how you can layer css styles on elements. Let’s take a quick look:

index.html
<div style="color: red;">Some text.</div>

This is inline formatting, as you see, it’s done in the .html file. Do not do this, EVER. Not even when you’re alone, just NO. Except this one time to see how the CSS hierarchy works, then it’s fine.

Previously we also looked at how to use classes, so while our index.html stays the same, add a class to the div element, so your index.html looks like this:

index.html
<div class="myClass" style="color: red;">Some text.</div>

Now add a style.css with this code:

style.css
.myClass {
    color: green;
}

Nothing happens. Why? Because of the hierarchy, the inline style has more priority, delete the inline style and the text turns green. As you see in the numbered list I wrote previously, class is under “inline”. Put the inline style back, let’s take a look at the “id”.

What is an “id”?

An id is very similiar to a class, but it is written a bit differently and as you know by now it is “stronger” than a class and inline styles. How do you write it? First add it to a html element, like so:

<div id="myId" class="myClass">Some text.</div>

Then just add the selector and property in the .css file, like so:

#myId {
    color: yellow;   
}

First thing you notice, is the “#” instead of the “.” like when declaring a CSS class. The other thing that sets a CSS “id” apart from a CSS “class” is that there can only be one unique “id” per .html file. It is used to target just that 1 element specifically. It is not recommended to use this for CSS. It doesn’t give you much convenience even if you would. The important part here is to understand, that an “id” is stronger than a class.

What is the “element” in the hierarchy?

It is a way to target with CSS, without adding anything in the html itself. We currently have a div element in the .html file, so easily we can target it in css like this:

div {
    color: red;
}

No dots, no hashtags, just write the element name as seen in the opening and closing tags in the .html file. The downside? It’s weaker than everything mentioned so far and the other thing is that this will make all of our text in the document in red color. Try it out, add another div to your element without any CSS classes or ids. It will be colored in red. This is useful to set a base style for everything on a page, to add more specific things with more specific CSS selectors later.

What is the “important” in the hierarchy?

It’s another way to enforce hierarchy. It is good to use this rarely, best case scenario – to never use it. Nevertheless, you will come across it sooner or later in code written by other people, so it’s best to know what it is all about.

Simply put, “important” is when you REALLY need to say – Screw the hierarchy, I want it like this, right now. It stands above anything in the hierarchy. Because of this, it is a very amateurish way to do things. 99% of the time it is a hack if you need to use this selector. How do you use it?

Once again, you don’t need to add anything in the .html file, because this is something that is added only in the .css file. Like so:

div {
    color: red !important;
}

You add it “on top” of a property and not the selector or the element itself. If your html element looks like this:

<div id="myId" class="myClass">Some text.</div>

And if your .css file looks like this:

.myClass {
    color: red;
}

#myId {
    color: green;   
}

div {
    color: blue !important;
}

Then you will notice that despite the blue color being defined in the weakest CSS selector, the element one, it still is the one that produces a result, because it has this “!important” tag.

“Is there anything stronger than an “important” tag?”

No, unless its an another “important” tag. If you add this after the end of the .css file:

div {
    color: yellow !important;
}

You will see that only the last selector of the same priority will produce any result. This is what is called – the cascade. The browser reads the .css file from top to bottom, so selectors can be overwritten by equally “strong” or “specific” selectors lower in the .css file.

Comments


Commenting is a very good practice of leaving explanations next to your code, marked by special syntax. This ensures that the code is not read by the browser. Some people live by “code should be so self-explanatory, comments shouldn’t be needed”, to which I personally disagree, but nevertheless it is ultimately useful to know about commenting.

HTML Comments

To write a HTML comment, all you have to know is the special syntax. It looks like this:

<!-- This is a comment -->
<div id="myId" class="myClass">Some text.</div>

Fairly simple, to start an HTML comment write the opening tag “<!–” then the comment text, then close it with a “–>”. 

Tip: There is a keyboard shortcut in Visual Studio Code to add a comment, so you don’t have to type the arrows every time. Just press CTRL + K, then still while holding CTRL, press C. So just CLTR + K then C. You’re welcome!

CSS Comments

To write a CSS comment, you can do it in the same way, just with different opening and closing tags:

/* This is a comment */
div {
    color: yellow !important;
}

Okay, we didn’t make your webpage beautiful. These concepts will last you forever, so it’s important to learn this from the start. We will get to it in the next post. Stay tuned! 


BasicsBlogCSSDevelopmentGetting StartedHTMLKnowledgeLayoutLearnProgrammingStructureVisual Studio Code