How to make the headline (H1 with lines on the sides) with CSS only

Nikita Gavrilov picture Nikita Gavrilov · Oct 2, 2012 · Viewed 8.7k times · Source

I have made some a fiddle of such a headline that I need.

CSS:

body {
    background:url("http://subtlepatterns.subtlepatterns.netdna-cdn.com/patterns/tiny_grid.png");
}

.main-container {
    width: 600px;
    margin: 0 auto;
    box-shadow:0 0 5px #d00;
}

.headline {
    display: inline-block;
    margin: 40px 0;
    padding: 0 30px;
    font: normal 33px/1.1 Georgia, "Times New Roman", Times, serif;
    color: #3E3E3E;
    height: 1px;
    border-left: 300px solid #aaa;
    border-right: 300px solid #aaa;
    white-space: nowrap;
}

.headline > span {
    display:block;
    margin-top:-17px;
}

HTML:

<div class="main-container">
    <h1 class="headline"><span>OUR LATEST WORKS</span></h1>
</div>

This is not the full solution, because I use the borders around the text that push out the text from the parent container.

Is there any other ways to do it? But without additional divs and JS.

PS: The background image may be different, so I already try to put the same bg under the text but it's not the solution.

PPS: The "div.main-container" must no contain the overflow:hidden

Answer

olgis picture olgis · Oct 2, 2012

I came up with something like this http://jsfiddle.net/olgis/qkNfm/, similar to @GionaF solution just without fixed width, but still you will need a container to get red line underneath the text.

As I understand your criteria for solution is:

  • any background
  • NO JavaScript or jQuery
  • css liquid layout (NO fixed width)
  • minimal HTML
  • cross browser solution

In this post http://www.impressivewebs.com/centered-heading-horizontal-line/, they are discussing "Centered Heading Overlaying a Horizontal Line with CSS" a lot of different solutions as well as a cross platform issue.

My guess would be you are aiming for something like this http://result.dabblet.com/gist/1560674 a neat solution with just one H1 .