【问题标题】:Text to Bottom of Div文本到 Div 的底部
【发布时间】:2013-02-06 09:28:00
【问题描述】:

有没有办法让 div 的内容文本到它的底部? 这里我准备了一个例子。

http://jsfiddle.net/JGuP7/

这是示例层次结构:

<div class="button">Button Label</div>

我正在尝试在不添加额外跨度或更改层次结构的情况下实现结果。

【问题讨论】:

    标签: html css


    【解决方案1】:

    三种可能的解决方案,尽管每种都有自己的注意事项。

    jsFiddle demo

    第一个解决方案依赖line-height: 220px; vertical-align: bottom; 将文本与DIV 的底部对齐。第二种解决方案创建一个:before 伪元素,将文本推到DIV 的底部(这不需要额外的标记)。两种解决方案都将在 IE7 或更早版本中失败,并且在以下情况下都会出现问题:

    • 字体大小改变
    • 文本换到第二行
    • 包含元素的大小发生变化

    第三种解决方案依赖于 display: box; 属性,这是一个正在逐步淘汰的 CSS 属性(更多详细信息请参见 Quick Hits With the Flexible Box Model)。仅从 v4 开始的 Chrome、从 v2 开始的 Firefox 和 IE10 beta 支持此解决方案。然而,一个新的 Flexbox 标准已经标准化,但浏览器支持却很少。该解决方案可能被认为“太新”而无法有效使用 (html5please.com/#flexbox)。

    一般来说,您应该考虑在文本周围添加一个新的环绕元素,这将允许position: absolute; bottom: 0; 将元素置于父元素的底部。这具有随着字体大小或文本长度增加而向上 增大子元素的好处,并且与父容器的尺寸无关。根据您的定位对布局的关键任务程度,您可以使用 Javascript 添加这个新元素。考虑到您提出的问题,这可能并不理想,但浏览器支持对于我上面列出的更古怪的 CSS 解决方案来说并不理想:-p

    【讨论】:

    • 感谢您非常详细的回复。看来我会选择 wrap 方法,因为它对我来说是最可靠的方法。但是,我遇到的另一个问题是,当我使用 wrap 方法时,我无法将发送到底部的文本居中。包装器上已经有 text-align:center ..
    • 如果您将包装器绝对定位在父元素内,请确保它是父元素宽度的 100%。 width: 100%;left: 0; right: 0; 都可以达到这种效果。如果不对绝对定位的元素指定尺寸,该元素将尝试成为可能的最小尺寸。然后text-align: center; 将其对齐到那个窄宽度而不是父元素的宽度。查看浏览器的 DOM 检查器中的包装器将使您更好地了解正在发生的事情:-p
    • 哦!刚刚看到您的解决方案!
    【解决方案2】:

    另一种方法是使用“display: table-cell”和“vertical-align:bottom”。

    http://jsfiddle.net/JGuP7/1/

    .button {
        display: table-cell;
        background-color: darkred;
        color: white;
        width: 120px;
        height: 120px;
        text-align: center;
        vertical-align: bottom;
    }
    

    【讨论】:

    • 哦,我需要使用 display:block 来让其他一切按我的意愿工作.. :(
    • 如果表格单元格不适合您,那么我建议使用@MikeB 建议的绝对定位。
    【解决方案3】:

    如果在容器中使用position:relative,则使用

    position:absolute;
    bottom:0;
    

    在内容上,可以达到想要的效果。

    您的 CSS 可能如下所示:

        .button
        {
            display: block;
            background-color: darkred;
            color: white;
            width: 120px;
            height: 120px;
            text-align: center;
            position: relative;
        }
        .bottomContent
        {
            position:absolute;
            bottom: 0;
        }
    

    和你的 HTML:

    <div class="button"><p class="bottomContent">Button Label</p></div>
    

    Source

    【讨论】:

    • 嘿,谢谢,我也知道这个解决方案,这就是为什么我提到层次结构“我试图在不添加额外跨度或更改层次结构的情况下实现结果。”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 2013-06-11
    相关资源
    最近更新 更多