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 Selectors Selectors - Beyond the Basics Combinators Challenge

Nick Ars
Nick Ars
5,341 Points

~ method

Is is possible to do the same objective with ~ instead of +?

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

.main-nav > li {
  display: inline-block;
  margin-left: 20px;
}


h2 ~ p {
  margin-top: .5em;
}
index.html
<!DOCTYPE html>
<html>
<head>
    <title>Selectors</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link href='http://fonts.googleapis.com/css?family=Nunito:400,300' rel='stylesheet' type='text/css'>
  <link rel="stylesheet" href="base.css">
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <header class="main-header">
    <h1>My Blog</h1>
    <ul class="main-nav">
      <li><a href="#">About Me</a></li>
      <li><a href="#">My Work</a></li>
      <li><a href="#">Get In Touch</a></li>
    </ul>
  </header>
    <div class="main">
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut et feugiat libero. Cras ut fermentum nisi. Nullam mattis, ipsum commodo laoreet volutpat, augue eros ornare lorem, eu interdum leo massa a nibh.</p>
        <p>In vel semper lorem. Pellentesque in quam pulvinar, fringilla justo ac, accumsan ante. Etiam in malesuada lacus.</p>

        <div class="post">
            <h2>Post Heading</h2>
            <p>Nulla eu vestibulum mauris. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer blandit ex velit, vitae consequat quam viverra at... <a href="#">read more &raquo;</a></p>
        </div>
        <div class="post">
            <h2>Post Heading</h2>
            <p>Aliquam cursus tempor molestie. Phasellus nec mattis elit. Sed fringilla laoreet magna, sodales vulputate leo auctor eu. Cras scelerisque laoreet faucibus. Proin cursus, metus... <a href="#">read more &raquo;</a></p>
        </div>
    </div>
</body>
</html>

1 Answer

andren
andren
28,558 Points

In this specific example they would have the same effect. But in a lot of other situations they would not.

The + selector will only target an element if it is directly next to the other element you specify so h2 + p would select p elements directly besides h2 elements. The ~ selector selects all sibling elements that match the selector so h2 ~ p would select all p elements that followed a h2 element and shared the same parent.

It is easiest to explain with a simple illustration:

<div>
    <h2>Test</h2>
    <p>P1</p>
    <p>P2</p>
</div>

The h2 + p selector would only select P1 since that is the only p element directly next to a h2 element. The h2 ~ p selector would select both P1 and P2 since they are both preceded by a h2 element that shares the same parent element.

Nick Ars
Nick Ars
5,341 Points

Thank you very much) now everything is clear!:)