Reputation: 8523
I wanted to add a thicker underline to my h1 tags so I used "border-bottom" as suggested in multiple Stack Overflow questions. However, the border extended well beyond the text, so I decided to add the display property "inline-block" to make the border conform to the text's bounds. This, however, made the element lack a line break after the content. I know I could always add the "br" tag, but I'd prefer to keep that in my styling. Is there anything I can do? Here is my current CSS:
h1
{
font-weight:normal;
margin-bottom:5px;
border-bottom: 2px solid;
display: inline-block;
}
Upvotes: 0
Views: 26598
Reputation: 820
Since you don't always want border-bottom (eg, navigation item with padding), this method works better:
h1:after {
content: '';
height: 1px;
background: black;
display:block;
}
If you want more or less space between the text and the underline, add a margin-top
.
If you want a thicker underline, add more height
:
h1:after {
content: '';
height: 2px;
background: black;
display:block;
margin-top: 2px;
}
Upvotes: 1
Reputation: 68319
Try display: table
instead. It acts similar to inline-block in that it collapses down to to the width of its children, but prevents surrounding inline elements from flowing along side of it the same way an ordinary block element does.
http://codepen.io/cimmanon/pen/FvGxl
Upvotes: 7
Reputation: 65341
If the width of your <h1>
text is fixed, you can set the width
and keep it display: block;
.
h1 {
border-bottom: 2px solid black;
font-weight:normal;
margin-bottom:5px;
width: 140px;
}
<h1>underlined</h1>
next line
Upvotes: 3