如何在文本后创建一行到容器的宽度?

时间:2013-02-20 20:58:40

标签: css class html underline

是的,我是新手,所以请放轻松。我知道必须有几种方法来实现这一目标。基本上我一直试图想出一个一致的方法,在文本之后有一个带有一行的标题,它将运行到容器元素的整个宽度。

这样的事情:

This is my header _______________________________________________________ |<- end container
This is another header __________________________________________________ |<- end container

我正在尝试创建一个.line类,它将使用bottom-border来创建该行但是我没有成功创建一个可扩展容器的整个宽度的可变长度行。

这是我尝试过的:

CSS:

.line
{
    display:inline-block;
    border-bottom:2px #5B3400 solid;
    margin-left:5px;
    width:80%;
}

HTML:

    <h2>Our Mission<span class="line"></span></h2>

当然这只能给我一条80%左右边框的容器,包括文字的宽度。如何在文本后面开始创建一条线并运行边框的整个宽度,而不管同一行上有多少文本?

我知道这应该很简单,但我还没有找到解决方案。

谢谢!

5 个答案:

答案 0 :(得分:8)

此方法将与纹理背景一起使用(背景图片):

如果您的<h2>位于背景图片之上,则可以尝试使用此方法。

<强> HTML:

<h2 class="line-title"><span>This is my title</span><hr /></h2>

<强> CSS:

.line-title {
    font-size: 20px;
    margin-bottom: 10px;
    padding-top: 1px; /* Allows for hr margin to start at top of h2 */
}

/* clearfix for floats */
.line-title:after {
    content: "";
    display: table;
    clear: both;
}

.line-title span {
    padding-right: 10px;
    float: left;
}

.line-title hr {
    border:1px solid #DDD;
    border-width: 1px 0 0 0;
    margin-top: 11px;
}

请参阅此处的工作示例:http://jsfiddle.net/yYBDD/1/

工作原理:

  1. <h2>标记充当浮动元素的容器。

  2. <span>向左浮动,导致<hr />向左折叠并填充正确的空格。

  3. <hr />充当行,并填充右侧的剩余空格。

答案 1 :(得分:4)

这种方法适用于固体背景颜色:

<强> HTML:

<h2 class="line-title"><span>This is my title</span></h2>

<强> CSS:

.line-title {
    border-bottom: 1px solid #DDD;
    font-size: 20px;
    height: 12px;
    margin-bottom: 10px;
}

.line-title span {
    background: #FFF;
    padding-right: 10px;
}

您可以在此处查看一个有效的示例:http://jsfiddle.net/yYBDD/

工作原理。

  1. <h2>标记有一个类,它将高度设置为其包含的文本高度的一半。

  2. <h2>有一个底部边框,它延伸到它的父容器的宽度(因为它是一个块元素)。

  3. <span>内的<h2>有一个白色背景,它将覆盖文字和边框重叠的区域。

  4. 最后,<h2>&gt;有一个底部边距,可以补偿<h2>的缩小高度。

答案 2 :(得分:1)

HTML:

<h2><span>Our Mission</span></h2>

CSS:

h2{
    border-bottom: 1px solid #000;
    height: 20px;
    overflow: visible;
    display: block;
    width: 100%;
}

h2 span{
    display: inline-block;
    background: #fff;
    height: 21px;
}

这样它会在底部边框上溢出,因为它有更大的高度。

演示:http://jsfiddle.net/afuzk/

答案 3 :(得分:1)

您可以使用flexbox执行此操作。

http://jsfiddle.net/eHHep/(不包括前缀)

<h1 class="lineme">This is my header</h1>

<h2 class="lineme">This is another header</h2>

.lineme {
    display: flex;
}

.lineme:after {
    display: block;
    content: " ";
    border-bottom: 1px solid;
    flex: 1 1 auto;
}

优于其他方法:

  • 无需额外加价
  • 不需要背景颜色

向下:

  • 由于IE10是第一个支持它的IE,因此对flexbox的支持率很低(参见http://caniuse.com/#search=flexbox
  • 如果您的文字环绕
  • ,您的广告就会消失

答案 4 :(得分:0)

这是我尝试过的有效的方法:

<强> HTML

<h2>Our Mission</h2>

<强> CSS

h2:after
{
    content:       "\00a0";
    border-bottom: solid 2px black;
    position:      fixed;
    top:           0;
    width:         100%;
    margin-left:   3px;
}

要测试的JS Bin:http://jsbin.com/ayuvuc/4