# HTML Styles - CSS

### What is CSS?

Cascading Style Sheets (CSS) is used to format the layout of a webpage.

With CSS, you can control the color, font, the size of text, the spacing between elements, how elements are positioned and laid out, what background images or background colors are to be used, different displays for different devices and screen sizes, and much more!

### Using CSS

CSS can be added to HTML documents in 3 ways:

* **Inline** - by using the `style` attribute inside HTML elements
* **Internal** - by using a `<style>` element in the `<head>` section
* **External** - by using a `<link>` element to link to an external CSS file

The most common way to add CSS, is to keep the styles in external CSS files. However, in this tutorial we will use inline and internal styles, because this is easier to demonstrate, and easier for you to try it yourself.

### Inline CSS

An inline CSS is used to apply a unique style to a single HTML element.

An inline CSS uses the `style` attribute of an HTML element.

The following example sets the text color of the `<h1>` element to blue, and the text color of the `<p>` element to red:

{% code overflow="wrap" lineNumbers="true" %}

```html
<h1 style="color:blue;">A Blue Heading</h1>
<p style="color:red;">A red paragraph.</p>
```

{% endcode %}

### Internal CSS

An internal CSS is used to define a style for a single HTML page.

An internal CSS is defined in the `<head>` section of an HTML page, within a `<style>` element.

The following example sets the text color of ALL the `<h1>` elements (on that page) to blue, and the text color of ALL the `<p>` elements to red. In addition, the page will be displayed with a "powderblue" background color:&#x20;

{% code overflow="wrap" lineNumbers="true" %}

```markup
<!DOCTYPE html>
<html>
    <head>
        <style>
            body {background-color: powderblue;}
            h1   {color: blue;}
            p    {color: red;}
        </style>
    </head>
    <body>
    
        <h1>This is a heading</h1>
        <p>This is a paragraph.</p>
    
    </body>
</html>
```

{% endcode %}

### External CSS

An external style sheet is used to define the style for many HTML pages.

To use an external style sheet, add a link to it in the `<head>` section of each HTML page:

{% code overflow="wrap" lineNumbers="true" %}

```html
<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" href="styles.css">
</head>
<body>

<h1>This is a heading</h1>
<p>This is a paragraph.</p>

</body>
</html>
```

{% endcode %}

The external style sheet can be written in any text editor. The file must not contain any HTML code, and must be saved with a .css extension.

Here is what the "styles.css" file looks like:

{% code overflow="wrap" lineNumbers="true" %}

```css
body {
  background-color: powderblue;
}
h1 {
  color: blue;
}
p {
  color: red;
}
```

{% endcode %}

### CSS Colors, Fonts and Sizes

Here, we will demonstrate some commonly used CSS properties. You will learn more about them later.

The CSS `color` property defines the text color to be used.

The CSS `font-family` property defines the font to be used.

The CSS `font-size` property defines the text size to be used.

{% code title="Use of CSS color, font-family and font-size properties:" overflow="wrap" lineNumbers="true" %}

```html
<!DOCTYPE html>
<html>
<head>
<style>
h1 {
  color: blue;
  font-family: verdana;
  font-size: 300%;
}
p {
  color: red;
  font-family: courier;
  font-size: 160%;
}
</style>
</head>
<body>

<h1>This is a heading</h1>
<p>This is a paragraph.</p>

</body>
</html>
```

{% endcode %}

<pre class="language-css" data-overflow="wrap" data-line-numbers><code class="lang-css">// CSS Border
p {
  border: 2px solid powderblue;
}

// CSS Padding
p {
  border: 2px solid powderblue;
  padding: 30px;
}

<strong>// CSS Margin
</strong>p {
  border: 2px solid powderblue;
  margin: 50px;
}
</code></pre>

### Link to External CSS

{% code overflow="wrap" lineNumbers="true" %}

```html
<link rel="stylesheet" href="/html/styles.css">
```

{% endcode %}

### Summary

* Use the HTML `style` attribute for inline styling
* Use the HTML `<style>` element to define internal CSS
* Use the HTML `<link>` element to refer to an external CSS file
* Use the HTML `<head>` element to store \<style> and \<link> elements
* Use the CSS `color` property for text colors
* Use the CSS `font-family` property for text fonts
* Use the CSS `font-size` property for text sizes
* Use the CSS `border` property for borders
* Use the CSS `padding` property for space inside the border
* Use the CSS `margin` property for space outside the border
