9

我正在尝试这样的事情:

|--------------固定宽度--------------|
 标题 1 ...................... 值 1
 Title2 ...................另一个值
 另一个标题........又一个价值

这是我的html示例代码:

<div class="container">
  <span class="left">Title</span>
  <span class="center">&nbsp;</span>
  <span class="right">value</span>
</div>

这是我的CSS:

.center {
    text-align: center;
    border-bottom: 1px dotted blue;
    display: inline-block;
    outerWidth: 100%;
}

.right {
    display: block;
    border: 1px dotted red;
    float: right;
}

.left {
    display: block;
    text-align: right;
    border: 1px dotted red;
    margin-right: 0px;
    float: left;
}

.container {
    width: 200px;
    border: 1px dotted red;
    padding: 5px;
}

是否可以使跨度“中心”扩展以填充其他两个跨度元素之间的空间?

jsfiddle 上的代码:http: //jsfiddle.net/XqHPh/

谢谢!

4

3 回答 3

8

如果您重新排序HTML,您可以获得一个简单的解决方案:

<div class="container">
  <span class="left">Title</span>
  <span class="right">value</span>
  <span class="center">&nbsp;</span>
</div>

将两个浮动元素放在元素前面.center。该.center元素将处于常规内容流中并环绕左右内容。

CSS

.center {
    display: block;
    border-bottom: 1px dotted blue;
    overflow: auto;
    position: relative;
    top: -4px;
}

.right {
    float: right;
    margin-left: 10px;
}

.left {
    float: left;
    margin-right: 10px;
}

.container {
    width: 200px;
    border: 1px dotted red;
    padding: 5px;
}

当你浮动一个元素时,显示类型计算为阻塞,所以不需要声明它。

此外,对于.center,如果添加overflow: auto,则约束块,使其不会超出浮动元素的边缘。因此,您的底部边框不会下划线标题和值文本。

最后,您可以添加position: relative并向上移动.center几个像素,以使边框更接近文本的基线。

小提琴:http: //jsfiddle.net/audetwebdesign/DPFYD/

于 2013-06-12T12:12:28.357 回答
7

为此,您需要像这样更改 html 结构

html

<div class="container">
  <span class="left">Title</span>
  <span class="right">value</span>
  <span class="center">&nbsp;</span>
</div>

这是css.center span

.center {
    text-align: center;
    border-bottom: 1px dotted blue;
    display:block;
}

jsFiddle 文件

于 2013-06-12T11:57:10.893 回答
0

同时,Flexbox 具有完整的浏览器支持,这允许在没有中心元素的情况下提供更优雅的解决方案。

.left, .right {
    border: 1px dotted red;      
}

.container {
    display: flex;
    justify-content: space-between;
    width: 200px;
    border: 1px dotted red;
    padding: 5px;
}
<div class="container">
  <span class="left">Title</span>   
  <span class="right">value</span>
</div>

于 2019-02-26T12:19:07.277 回答