Search code examples
csshtml-heading

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


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


Solution

  • 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 .