如何避免标题标记在所有行上延伸?

时间:2014-04-08 13:23:20

标签: html css

我有这个标准情况:

<h1>Title</h1>
<h2>Subtitle</h2>
<p>Text</p>

现在,我用h1和h2设计了一个带有una下划线效果的底边框

border-bottom: 1px dashed #999999;

然而,这很好看,因为h1和h2在所有宽度上延伸,下划线效果超过了文本。我尝试用display来解决:inline-block;但这仅适用于某些页面,而在其他页面上(标题或副标题较短),两个标题行彼此相邻

我知道我可以通过在标题中添加一个span来解决这个问题,但我想知道是否有任何漂亮的css解决方案可以避免在html中插入额外的元素(并重写许多页面)。

提前谢谢。

亲切的问候!

4 个答案:

答案 0 :(得分:2)

Nifty CSS是的,但正如您在下面的评论中所述,如果您希望支持IE7,则没有CSS解决方案。

Demo Fiddle

你可以这样做,例如

h1{ display:inline; }
h1:after { content:"\A"; white-space:pre; }

这将在元素之后添加换行符。

答案 1 :(得分:1)

虽然可以使用float:leftdisplay:inline-block产生效果,但两者都会带来更多问题。

将HTML更改为此更容易:

<h1><span>Title</span></h1>

然后你的CSS:

h1>span {border-bottom: 1px dashed #999}

这将导致边框仅显示文本的宽度。

答案 2 :(得分:0)

Use <u> tag explained below

<!DOCTYPE html>
    <html>
    <body>

    <p>This is a <u>parragraph mb mbmnbkjkjnkj </u>.</p>

    </body>
    </html>

只需在你的css中写下这个

u {    
    border-bottom: 1px dashed #000;
    text-decoration: none;
}

小提琴http://jsfiddle.net/arjun_chaudhary/qBRV5/

答案 3 :(得分:0)

您可以通过调整内容大小并避免换行来完成此操作。因此保持IE7友好

.wrapper h1{
    margin-left:10px;
    border-bottom:1px solid black;
    width:300px;
    text-align:center;
    white-space:nowrap;
 }

请参阅 DEMO HERE