Skip to content

Styling your portfolio

Starting with last week’s HTML and adding some list elements:

index.html
<!DOCTYPE html>
<html>
    <head>
        <title>Hello World with MapLibreGl</title>
        <!-- hint: remember to change your page title! -->
        <meta charset="utf-8" />
        <link rel="shortcut icon" href="#">
        <link rel="stylesheet" href="styles/style.css">

        <!-- MapLibreGL's css-->
        <link rel="stylesheet" href="https://unpkg.com/maplibre-gl/dist/maplibre-gl.css" />

        <!-- MapLibreGL's JavaScript-->
        <script src="https://unpkg.com/maplibre-gl/dist/maplibre-gl.js"></script>
    </head>

    <body>
        <header>
            Hello World
            <!-- hint: you can make a menu with other links here if you'd like -->
        </header>

        <main>
            <div class="portfolio">
                <!-- Portfolio content goes here -->
                <img src="me.png">
                <h2>Where I work</h2>
                <ul>
                    <li>Los Angeles Metro</li>
                    <li>UCLA</li>
                    <li>Yindee Games</li>
                </ul>
            </div>
            <div id="map"></div>
        </main>
        <div id="footer">
            Copyright(2024)
        </div>
        <script src="js/init.js"></script>
    </body>
</html>

With the current CSS:

styles/style.css
* {
    font-family: Arial, sans-serif;
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html {
    background-color: aqua;
}

html, body {
    height: 80vh;
    padding: 1rem;
    box-sizing: border-box;
}

body {
    display: grid;
    grid-template-areas: 
        "header"
        "main"
        "footer";
    grid-template-rows: auto 1fr auto;
}

main {
    display: grid;
    grid-template-areas:
        "portfolio map";
    grid-template-columns: 1fr 1fr;
}

header { 
    grid-area: header;
}

main { 
    grid-area: main;
}

.portfolio {
    grid-area: portfolio;
}

#map { 
    grid-area: map;
    height: 80vh;
}

footer { 
    grid-area: footer;
}

Footerror from last week

Last week, I created the footer as an ID within the HTML, but I selected the footer in the CSS with no ID or class selector, like this:

styles/style.css
footer { 
    grid-area: footer;
}

This is a problem because the CSS will not apply to the footer. To fix this, we need to add an ID selector to the footer in the CSS:

styles/style.css
1
2
3
#footer {
    grid-area: footer;
}

🎨 Styling the Portfolio

Now with that addressed, the styling while editing the portfolio is a bit off. As in literally, the bullet points are off to the side of the portfolio box!

Not a pad(ding) idea!

Michelle addressed this by suggesting to add a padding-left to the ul element in the CSS, which is a great simple solution:

styles/style.css
1
2
3
ul {
    padding-left: 30px;
}

What this does is give a padding to the left side of all list elements (ol).

But since we are using CSS Grid, we can make this responsive by adding some properties to the .portfolio class:

styles/style.css
1
2
3
4
5
6
7
.portfolio {
    grid-area: portfolio;
    display: flex; /* This will make the items inside the portfolio flex items */
    flex-direction: column; /* This can be row if you want the items to be side by side */
    justify-content: center; /* This can be flex-start, flex-end, space-between, space-around, space-evenly */
    align-items: center; /* This can be flex-start, flex-end, stretch, baseline */
}

What the flex?!

Flex is short for flexible box layout and it is the pre-cursor to CSS grid in that where CSS grid is a 2D layout, flex is a 1D layout. Flex is used to layout items in a container, distributing space among items in a way that makes the most sense. Read more on MDN here: CSS Flexbox

Alright, regardless of which method you use, your portfolio should look a lot better now! Now as for that pesky footer…

⚽ In-Class Exercise #3

  1. Add some styles (like padding or margin) to the footer CSS

(click to see the solution)

styles/style.css
1
2
3
4
5
6
7
#footer {
    grid-area: footer;
    padding: 1rem;
    background-color: #4677a0; /* Sets a darker background for contrast */
    color: #fff; /* Ensures text is readable against the dark background */
    text-align: center; /* Centers the footer content */
}

With that exercise complete, you should now have a much more visually appealing portfolio page!

🏁Checkpoint

  • You should now have a styled portfolio with a list of places you have worked.
  • You should now have a better styled bullet list and footer.

Your code should look like this:

index.html
<!DOCTYPE html>
<html>
    <head>
        <title>Hello World with MapLibreGl</title>
        <!-- hint: remember to change your page title! -->
        <meta charset="utf-8" />
        <link rel="shortcut icon" href="#">
        <link rel="stylesheet" href="styles/style.css">

        <!-- MapLibreGL's css-->
        <link rel="stylesheet" href="https://unpkg.com/maplibre-gl/dist/maplibre-gl.css" />

        <!-- MapLibreGL's JavaScript-->
        <script src="https://unpkg.com/maplibre-gl/dist/maplibre-gl.js"></script>
    </head>

    <body>
        <header>
            Hello World
            <!-- hint: you can make a menu with other links here if you'd like -->
        </header>

        <main>
            <div class="portfolio">
                <!-- Portfolio content goes here -->
                 <img src="me.png">
                 <h2>Where I work</h2>
                 <ul>
                     <li>Los Angeles Metro</li>
                     <li>UCLA</li>
                     <li>Yindee Games</li>
                 </ul>
            </div>
            <div id="map"></div>
        </main>
        <div id="footer">
            Copyright(2024)
        </div>
        <script src="js/init.js"></script>
    </body>
</html>
js/init.js
// Initialize the map
const map = new maplibregl.Map({
    container: 'map', // container ID
    style: 'https://api.maptiler.com/maps/streets/style.json?key=wsyYBQjqRwKnNsZrtci1', // Your style URL
    center: [ -118.444, 34.0709], // Starting position [lng, lat]
    zoom: 15 // Starting zoom level
});

// Add a marker to the map
new maplibregl.Marker()
    .setLngLat([ -118.444, 34.0709])
    .setPopup(new maplibregl.Popup({ offset: 25 }) // Add popups
        .setHTML('Math Sciences 4328 aka the Technology Sandbox<br> is the lab where I used to work in '))
    .addTo(map);
styles/style.css
* {
    font-family: Arial, sans-serif;
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html {
    background-color: aqua;
}

html, body {
    height: 80vh;
    padding: 1rem;
    box-sizing: border-box;
}

body {
    display: grid;
    grid-template-areas: 
        "header"
        "main"
        "footer";
    grid-template-rows: auto 1fr auto;
}

main {
    display: grid;
    grid-template-areas:
        "portfolio map";
    grid-template-columns: 1fr 1fr;
}

header { 
    grid-area: header;
}

main { 
    grid-area: main;
}

.portfolio {
    grid-area: portfolio;
    display: flex; /* This will make the items inside the portfolio flex items */
    flex-direction: column; /* This can be row if you want the items to be side by side */
    justify-content: center; /* This can be flex-start, flex-end, space-between, space-around, space-evenly */
    align-items: center; /* This can be flex-start, flex-end, stretch, baseline */
}

#map { 
    grid-area: map;
    height: 80vh;
}

#footer {
    grid-area: footer;
    padding: 1rem;
    background-color: #4677a0; /* Sets a darker background for contrast */
    color: #fff; /* Ensures text is readable against the dark background */
    text-align: center; /* Centers the footer content */
}

/* nice solution for adding a padding for the bullet points! */
/* ol {
    padding-left: 30px;
} */