2013-01-05 56 views
0

我想创建一个元素,它包含一个div内的三个跨度。三个跨度应使用div提供的整个宽度。左右跨度具有固定的宽度,中间的宽度应该使用它们之间的整个可用空间。我一直在试图很多不同的东西(浮动,溢出等),但我还没有找到一个答案却和我跑出来的想法......如何使跨度拉伸到其他跨度之间的可用空间?

的代码很简单:

<div class="row"> 
    <span class="rowLeft">LEFT</span> 
    <span class="rowCentre">CENTER</span> 
    <span class="rowRight">RIGHT</span> 
</div> 

使用下面的CSS:

.row { 
    display: block; 
    height: 62px; 
    border: 1px dotted black; 
} 
.rowLeft { 
    float: left; 
    width: 40px; 
    height: 60px; 
    border: 1px solid red; 
} 
.rowCentre { 
    float: left; 
    height: 60px; 
    border: 1px dashed blue; 
} 
.rowRight { 
    float: right; 
    width: 60px; 
    height: 60px; 
    border: 1px solid green; 
} 

我创建了一个的jsfiddle此:http://jsfiddle.net/ezAdf/

问题:启动FR在这里,我怎样才能使中心跨度拉伸左右跨度之间的可用空间?

+1

使用固定边框搜索流体布局 – Popnoodles

+0

谢谢,那至少是一个好的起点。 – Andreas

回答

1

有点像@ j08691的解决方案,有了一些变化。 (工程4个浏览器虽然)。 我删除了花车,添加display: table-cell跨度display: tablewidth: 100%.row

工作小提琴here

1

您可以在每个跨度上使用display:table-cell CSS属性,然后将中心跨度的宽度设置为100%。

jsFiddle example

.row { 
    display: block; 
    height: 100px; 
    border: 1px dotted black; 
} 
.rowLeft { 
    width: 40px; 
    height: 60px; 
    border: 1px solid red; 
    display:table-cell; 
} 
.rowCentre { 
    height: 60px; 
    border: 1px dashed blue; 
    display:table-cell; 
    width:100%; 

} 
.rowRight { 
    width: 60px; 
    height: 60px; 
    border: 1px solid green; 
    display:table-cell; 
} 
+1

kooooooooool,+1 –

+0

谢谢,但此解决方案打破了单元格宽度的定义。尝试设置例如.rowRight的宽度设置为100px,你会发现宽度不会改变。 – Andreas

+0

感谢您的回答,但是您的小提琴清楚地表明单元格的宽度仍然不正确。 – Andreas

0

只需做以下修改你的CSS文件:

.row { 
    display: block; 
    height: 62px; 
    border: 1px dotted black; 
    position: relative; 
} 

.rowLeft { 
    width: 40px; 
    height: 60px; 
    border: 1px solid red; 
    float: left; 
} 

.rowCentre{ 
    position: absolute; 
    left: 40px; 
    right: 60px; 
    height: 60px; 
    border: 1px dashed blue; 
    float: left; 
} 

.rowRight{ 
    width: 60px; 
    height: 60px; 
    border: 1px solid green; 
    float: right; 
} 
+0

谢谢,但这并不能真正帮助我,因为中心跨度的绝对位置。我想动态创建这些元素,所以职位并不是事先知道的。 – Andreas