【问题标题】:two spans, one left aligned, one right aligned, both bottom aligned两个跨度,一个左对齐,一个右对齐,两个底部对齐
【发布时间】:2015-09-03 19:16:17
【问题描述】:

我试图在一个 div 中放置两个跨度,每侧一个,并且都与 div 的底部对齐,而不使用绝对定位(因为它忽略了填充等,并且在使用它之后我总是感觉很糟糕)。右侧跨度中的文本比左侧跨度中的文本高。如果我使用垂直对齐来定位它们,如果它们都是浮动的,它不会生效,但是如果没有它们都被浮动,它们将不会正确水平对齐。我无法保证这两个跨度中的哪一个会包含更多文本。

http://jsfiddle.net/gsvfn07f/

<div class="outer">
    <div class="inner"> 
        <span class="left">left</span>
        <span class="right">right</span>
        <div class="clearfix"></div>
    </div>
</div>


.outer {
    width: 40%;
    height: 200px;
    border: 1px solid red;
}
.inner {
    border: 1px solid green;
    padding: 5px;
}
.left {
    float: left;
    display: inline-block;
    vertical-align: baseline;
}
.right {
    float: right;
    font-size: 2em;
}
.clearfix {
    clear: both;
}

【问题讨论】:

  • 您是否要求 2 个 span 的宽度是动态的,或者它们可以是 div 的 50%?
  • "不使用绝对定位,因为它忽略了填充" 嗯?哦,父母的填充物。
  • 你需要支持什么浏览器?你是指内部div的底部还是外部div的底部?
  • 只是 Chrome,虽然其他支持是一个加号。我希望文本的基线是内部 div 的底部,减去填充

标签: html css


【解决方案1】:

您可以使用line-height 从顶部获取文本的边距。

这段代码似乎做你想做的事:

.outer {
    width: 40%;
    height: 200px;
    border: 1px solid red;
}

.inner {
    height: 35px;
    width: 100%;
    border: 1px solid green;
}

.left {
    line-height: 48px;
    float: left;
    width: 50%;
}

.right {
    display: block;
    float: right;
    width: 50%;
    text-align: right;
    font-size: 2em;
}
<div class="outer">
    <div class="inner"> 
        <span class="left">left</span>
        <span class="right">right</span>
    </div>
</div>

【讨论】:

  • 使用绝对定位,如果任何一个文字大于50%就不起作用
  • @zacaj 是的,忘了这个。为什么你有这个限制?
  • 您是否以任何方式从 font-size: 2em 或 height: 35px 导出 line-height: 48px,或者您只是逐个像素地调整它直到看起来正确?看到这个后,我认为只需将 .left 的行高设置为 .right 的字体大小就可以了,但它们似乎并没有以我能看到的任何方式对应......
  • @zacaj 是的,我拿了一把尺子靠在显示器上:D
  • @zacaj 使用position: absolute 是正确的,但您没有详细说明为什么不能使用它
猜你喜欢
  • 1970-01-01
  • 2019-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多