Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

CSS CSS Layout Basics Controlling Layout with CSS Display Modes CSS Display Modes Challenge

Ran Pur
Ran Pur
536 Points

I need help with the block

I could use some help. I am struggling with this one. I got the first one correct. This is 2/3.

style.css
/* Complete the challenge by writing CSS below */

header {
  text-align: center;
}
.logo {
  width: 110px;
  margin: auto;
}

.main-nav li {
    display: inline-block;
}
.main-nav li {
    display: block;
}
index.html
<!DOCTYPE html>
<html>
<head>
    <title>Getting Started with CSS Layout</title>
    <link href='https://fonts.googleapis.com/css?family=Varela+Round' rel='stylesheet' type='text/css'>
    <link rel="stylesheet" href="page.css">
    <link rel="stylesheet" href="style.css">
</head>
    <body>
    <div class="container">
        <header>
            <img class="logo" src="city-logo.svg" alt="logo">
            <ul class="main-nav">
                <li><a href="#">Ice cream</a></li>
                <li><a href="#">Donuts</a></li>
                <li><a href="#">Tea</a></li>
                <li><a href="#">Coffee</a></li>
            </ul>
        </header>
    </div>
    </body>
</html>

The question asks the following: The <ul> with the class main-nav is a block-level element by default, so it takes up the full width of its container. Let's set .main-nav to be as wide as the content inside it. Change the display of .main-nav to the display value that generates a block element that doesn't take up a full line.

And it looks like you did the following:

.main-nav li {
    display: block;
}

This is wrong for several reasons:

1) You were meant to apply those changes to the .main-nav and not to the .main-nav li 2) You need say display: inline-block;

Remember, an element with a display: block property will take up the full width of the page. But if you say display: inline-block; it will take up only the available space it needs and will also behave like a block level element. So the correct answer you need to give is:

.main-nav{
    display: inline-block; 
}

I hope that helps.

1 Answer

Steven Parker
Steven Parker
231,236 Points

Task 2 says, "Change the display of .main-nav to the display value that generates a block element that doesn't take up a full line."

So the issues with this code are:

  • the new rule needs to target ".main-nav" itself, not the list items within it
  • a value of "block" does take up a full line, you'll need a different setting

I'll bet you can get it now without an explicit code spoiler. :wink: