Styling headings with pseudo-elements

by Jennifer Perrin

HTML

<div class="wrapper">
  <h1 class="demo1">I'm heading!</h1>
  <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Pariatur nihil ducimus numquam itaque est ex maiores harum quis distinctio hic praesentium accusantium ea sapiente quos earum eos inventore. Distinctio rem.</p>
  
  <h1 class="demo2">Hey! what's up!</h1>
  <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ratione repellat incidunt animi voluptatum libero corrupti inventore illo aperiam provident laborum ex adipisci maiores minus nihil quod repudiandae excepturi. Facere culpa.</p>
  
  <h1 class="demo3">Aha!</h1>
  <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dicta harum placeat commodi vero amet impedit. Praesentium aspernatur veniam quod recusandae quasi iusto quam tenetur illo animi eligendi omnis dolores magni!</p>
  
  <h1 class="demo4"><span>I can't take it anymore</span></h1>
  <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Illo voluptatem architecto officia eos quod tempore alias ullam delectus vero perferendis corporis pariatur repudiandae commodi. Molestias impedit nesciunt facilis autem quo.</p>
</div>

CSS

body {
  background: #f0f0f0;
}
.wrapper {
  width: 80%;
  margin: 50px auto;
  border: 10px solid #cecece;
  border: 10px solid rgba(0,0,0,.1);
  padding: 20px;
  background-color: #fff;
  background-clip: padding-box; /* transparent border effect */
}

h1 {
  margin: 0 0 20px;
  font-size: 24px;
  text-transform: uppercase;
}

/* Demo1 */
.demo1 {
  border-left: 10px solid #cecece;
  border-left: 10px solid rgba(0,0,0,.2);
  border-bottom: 1px dotted #cecece;
  padding: 0 0 10px 20px;
  margin: 0 -20px 0 -30px;
}


/* Demo2 */
.demo2 {
  border-bottom: 1px solid #cecece;
  padding-bottom: 5px;
  position: relative;
}
.demo2:before {
  content: "";
  border-top: 15px solid #cecece;
  border-right: 10px solid transparent;
  border-bottom: none;
  border-left: 10px solid transparent;
  position: absolute;
  top: 100%;
  left: 20px;
}

.demo2:after {
  content: "";
  border-top: 13px solid #fff;
  border-right: 8px solid transparent;
  border-bottom: none;
  border-left: 8px solid transparent;
  position: absolute;
  top: 100%;
  left: 22px;
}

/* Demo3 */
.demo3 {
  border: 1px solid #cecece;
  background-color: #cecece;
  background-image: linear-gradient(#f3f3f3, #cecece);
  padding: 10px 0 10px 40px;;
  margin: 0 -40px;
  position: relative;
}
.demo3:before,
.demo3:after {
  content: "";
  position: absolute;
  top: 100%;
}
.demo3:before {
  border-top: 5px solid #aaa;
  border-right: 5px solid #aaa;
  border-bottom: 5px solid transparent;
  border-left: 5px solid transparent;
  left: 0;
}
.demo3:after {
  border-top: 5px solid #aaa;
  border-right: 5px solid transparent;
  border-bottom: 5px solid transparent;
  border-left: 5px solid #aaa;
  right: 0;
}

/* Demo4 */
.demo4 {
  text-align: center;
  overflow: hidden;
  margin-top: 40px;
}
.demo4 span {
  position: relative;
}

.demo4 span:before,
.demo4 span:after {
  content: "";
  width: 200px;
  height: 10px;
  border-top: 1px solid #cecece;
  border-bottom: 1px solid #cecece;
  position: absolute;
  top:...