Sizing

The images on our page are all enormous, so letā€™s start by learning how to specify the size of elements.

Step 1

Add the following to your CSS:

/* Your CSS here */

+img {
+	height: 100px;
+}

The tag selector will get every img element. The height property changes the height of an element by whatever value you provide - in this case, weā€™ve specified 100 pixels (px).

Every image on the page should now have the same height.

Every image now has the same height, but if we have a look at our preview of the final product, we can see images of different sizes:

Screenshot of completed webpage.

Instead of changing the height of all images in one go, letā€™s start at the top of the page and, working our way top to bottom, resize each group of images.

Step 2

If we take a look at the HTML, we can see that the first image is in the header.

Instead of setting the height of every image to 100px, letā€™s only set the height of the header image.

To do this, we can combine the header and image selectors, like so:

/* Your CSS here */

-img {
+header img {
	height: 100px;
}

We read this like: ā€œselect all the img tags that are in the header tag.

Only the first image will be 100px in height, and the rest will return to their default sizes.

Step 3

Working our way down, the next section has two images:

<section class="row" id="section-2">
    <h2>Popular Photos</h2>
    <div>
        <img src="" />
        <img src="" />
    </div>
</section>

These images are both in a div, then in a section with id section-2. Just as we did earlier, we can combine these selectors to specify only these two images:

/* Your CSS here */

header img {
	height: 100px;
}

+#section-2 div img {
+	width: 200px;
+}

The next two images will be 200px wide.

Step 4

The next three images are a bit different. They are in white boxes, and each have a heading and paragraph to go with them:

Letā€™s take a look at the HTML to see the structure of this part of the page:

<section class="row" id="section-3">
    <div class="card">
        <img src="" />
        <h3>Amphibians</h3>
        <p>Including frogs, toads, salamanders, and newts.</p>
    </div>
    <div class="card">
        <img src="" />
        <h3>Squirrels</h3>
        <p> Including tree squirrels, ground squirrels and flying squirrels.</p>
    </div>
    <div class="card">
        <img src="" />
        <h3>Elephants</h3>
        <p>Including the savanna elephant and the forest elephant.</p>
    </div>
</section>

Notice how these white boxes are all the same height? Letā€™s add some CSS for this. From the HTML above we can see that each box is in a div with the class card.

Add a height to each of these cards:

#section-2 div img {
	width: 200px;
}

+.card {
+	height: 250px;
+}

Well, that definitely did something, but it did not resize the images.

Add the following to your CSS to now resize the images:

.card {
	height: 250px;
}

+.card img {
+	height: 40%;
+}

The images in the cards should now all be the same height.

The way we set the height of these images is a bit different to what we did previously.

Rather than specifying a value in pixels, we gave a percentage. This CSS is saying ā€œset the height of this element to be 40% of the height of its parent (where parent means the element it is in, in this case, that is the card).

This only works when the parent element has a specific size set. Try removing height: 250px from the .card to see this for yourself!

Step 5

So far we have just been setting the height, but we can actually set the width using the same format. Letā€™s modify our CSS to also set the width of the cards and their images.

.card {
	height: 250px;
+	width: 25%;   
}

.card img {
	height: 40%;
+   width: 100%;
}

The images should now be as wide as the cards.

Our cards arenā€™t side by side like they are in the preview - donā€™t worry! Weā€™ll get to that soon!

Step 6

This one is a challenge for you! Find the image in the section with id section-4 and set its width to 400px.

Step 7

The last section is section-5 and has two images side by side.

Letā€™s take a look at the structure of the HTML:

<section class="row" id="section-5">
    <div class="column" id="left-column">
        <h2>Reptiles</h2>
        <img src="" />
    </div><!--
    --><div class="column" id="right-column">
        <h2>Birds</h2>
        <img src="" />
    </div>
</section>

Each of these images is in a div with class column. Eventually, these columns will be side by side, which means they need to be 50% wide each in order to fit beside each other.

Set the width of the divs with the column class to 50%.

We will then resize the images inside of these columns.

For images inside the divs with the column class: set their height to 200px and their width to 80%.

Hereā€™s what your page should look like at this stage: