The background-size property
The background-size property sets the size of a background image. It could make the image reverse to its normal size or even stretch or squeeze it.
The background-size has values of inherit and initial like background-image.
But the property has other values which are classified according to MDN as:
- Single value.
 - Two values.
 - Multiple values.
 - Keyword values.
 
Single value
When using a single value, you could use em, rem,px, percentage or auto to represent the width of the image.
Example,
index.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8"/>
    <title>A simple html page</title>
    <link rel="stylesheet" href="styles.css"/>
  </head>
  <body>
    <header>A good illustration</header>
    <main>This is a web page</main>
  </body>
</html>
styles.css
body {
  background-image: url("../img/google_image.png");
  background-size: 800px;
}

Two values
When you give two values as the background-size, it represents the width and the height. You could use units like em, rem and so on just like in a single value.
Example,
index.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8"/>
    <title>A simple html page</title>
    <link rel="stylesheet" href="styles.css"/>
  </head>
  <body>
    <header>A good illustration</header>
    <main>This is a web page</main>
  </body>
</html>
styles.css
body {
  background-image: url("../img/google_image.png");
  background-size: 300px 400px;
}

Multiple values
Multiple values involve when you use more than two values to specify the background-size.
Example,
index.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8"/>
    <title>A simple html page</title>
    <link rel="stylesheet" href="styles.css"/>
  </head>
  <body>
    <header>A good illustration</header>
    <main>This is a web page</main>
  </body>
</html>
styles.css
body {
  background-image: url("../img/google_image.png");
  background-size: 300px 400px auto;
}

Keyword values
In keyword values, you use two words cover and contain to resize a background image.
cover- adjusts the image to fill its container and crops out unwanted parts.contain- spreads the image over the container. It crops it but it could make images repeat in the container.
To illustrate the background-size property, you can give the background image size.
Example,
index.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8"/>
    <title>A simple html page</title>
    <link rel="stylesheet" href="styles.css"/>
  </head>
  <body>
    <header>A good illustration</header>
    <main>This is a web page</main>
  </body>
</html>
styles.css
body {
  background-image: url("../img/google_image.png");
  background-size: cover;
}
